View Javadoc
1   // Generated from org/apache/shardingsphere/sql/parser/autogen/SQLServerStatement.g4 by ANTLR 4.10.1
2   package org.apache.shardingsphere.sql.parser.autogen;
3   import org.antlr.v4.runtime.atn.*;
4   import org.antlr.v4.runtime.dfa.DFA;
5   import org.antlr.v4.runtime.*;
6   import org.antlr.v4.runtime.misc.*;
7   import org.antlr.v4.runtime.tree.*;
8   import java.util.List;
9   import java.util.Iterator;
10  import java.util.ArrayList;
11  
12  @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
13  public class SQLServerStatementParser extends Parser {
14  	static { RuntimeMetaData.checkVersion("4.10.1", RuntimeMetaData.VERSION); }
15  
16  	protected static final DFA[] _decisionToDFA;
17  	protected static final PredictionContextCache _sharedContextCache =
18  		new PredictionContextCache();
19  	public static final int
20  		T__0=1, BLOCK_COMMENT=2, INLINE_COMMENT=3, AND_=4, OR_=5, NOT_=6, TILDE_=7, 
21  		VERTICAL_BAR_=8, AMPERSAND_=9, SIGNED_LEFT_SHIFT_=10, SIGNED_RIGHT_SHIFT_=11, 
22  		CARET_=12, MOD_=13, COLON_=14, PLUS_=15, MINUS_=16, ASTERISK_=17, SLASH_=18, 
23  		BACKSLASH_=19, DOT_=20, DOT_ASTERISK_=21, SAFE_EQ_=22, DEQ_=23, EQ_=24, 
24  		NEQ_=25, GT_=26, GTE_=27, LT_=28, LTE_=29, POUND_=30, LP_=31, RP_=32, 
25  		LBE_=33, RBE_=34, LBT_=35, RBT_=36, COMMA_=37, DQ_=38, SQ_=39, BQ_=40, 
26  		QUESTION_=41, AT_=42, SEMI_=43, DOLLAR_=44, WS=45, SELECT=46, INSERT=47, 
27  		UPDATE=48, DELETE=49, CREATE=50, ALTER=51, DROP=52, TRUNCATE=53, SCHEMA=54, 
28  		GRANT=55, REVOKE=56, ADD=57, SET=58, TABLE=59, COLUMN=60, COLUMNS=61, 
29  		INDEX=62, CONSTRAINT=63, PRIMARY=64, UNIQUE=65, FOREIGN=66, KEY=67, POSITION=68, 
30  		PRECISION=69, FUNCTION=70, TRIGGER=71, PROCEDURE=72, PROC=73, VIEW=74, 
31  		INTO=75, VALUES=76, WITH=77, UNION=78, DISTINCT=79, CASE=80, WHEN=81, 
32  		CAST=82, TRIM=83, SUBSTRING=84, FROM=85, NATURAL=86, JOIN=87, FULL=88, 
33  		INNER=89, OUTER=90, LEFT=91, RIGHT=92, CROSS=93, USING=94, WHERE=95, AS=96, 
34  		ON=97, OFF=98, IF=99, ELSE=100, THEN=101, FOR=102, TO=103, AND=104, OR=105, 
35  		IS=106, NOT=107, NULL=108, TRUE=109, FALSE=110, EXISTS=111, BETWEEN=112, 
36  		IN=113, ALL=114, ANY=115, LIKE=116, ORDER=117, GROUP=118, BY=119, ASC=120, 
37  		DESC=121, HAVING=122, LIMIT=123, OFFSET=124, BEGIN=125, COMMIT=126, ROLLBACK=127, 
38  		SAVEPOINT=128, BOOLEAN=129, DOUBLE=130, CHAR=131, CHARACTER=132, ARRAY=133, 
39  		INTERVAL=134, DATE=135, TIME=136, TIMESTAMP=137, LOCALTIME=138, LOCALTIMESTAMP=139, 
40  		YEAR=140, QUARTER=141, MONTH=142, WEEK=143, DAY=144, HOUR=145, MINUTE=146, 
41  		SECOND=147, MICROSECOND=148, MAX=149, MIN=150, SUM=151, COUNT=152, AVG=153, 
42  		DEFAULT=154, CURRENT=155, ENABLE=156, DISABLE=157, CALL=158, INSTANCE=159, 
43  		PRESERVE=160, DO=161, DEFINER=162, CURRENT_USER=163, SQL=164, CASCADED=165, 
44  		LOCAL=166, CLOSE=167, OPEN=168, NEXT=169, NAME=170, COLLATION=171, NAMES=172, 
45  		INTEGER=173, REAL=174, DECIMAL=175, TYPE=176, BIT=177, SMALLINT=178, INT=179, 
46  		TINYINT=180, NUMERIC=181, FLOAT=182, BIGINT=183, TEXT=184, VARCHAR=185, 
47  		PERCENT=186, TIES=187, EXCEPT=188, INTERSECT=189, USE=190, MERGE=191, 
48  		LOOP=192, EXPAND=193, VIEWS=194, FAST=195, FORCE=196, KEEP=197, PLAN=198, 
49  		OPTIMIZE=199, SIMPLE=200, FORCED=201, HINT=202, READ_ONLY=203, DATABASE=204, 
50  		DECLARE=205, CURSOR=206, OF=207, RETURNS=208, DATEPART=209, RETURN=210, 
51  		READONLY=211, AT=212, PASSWORD=213, WITHOUT=214, APPLY=215, KEEPIDENTITY=216, 
52  		KEEPDEFAULTS=217, HOLDLOCK=218, IGNORE_CONSTRAINTS=219, IGNORE_TRIGGERS=220, 
53  		NOLOCK=221, NOWAIT=222, PAGLOCK=223, READCOMMITTED=224, READCOMMITTEDLOCK=225, 
54  		READPAST=226, REPEATABLEREAD=227, ROWLOCK=228, TABLOCK=229, TABLOCKX=230, 
55  		UPDLOCK=231, XLOCK=232, JSON_OBJECT=233, JSON_ARRAY=234, FIRST_VALUE=235, 
56  		LAST_VALUE=236, APPROX_PERCENTILE_CONT=237, APPROX_PERCENTILE_DISC=238, 
57  		WITHIN=239, OPENDATASOURCE=240, FOR_GENERATOR=241, BINARY=242, ESCAPE=243, 
58  		HIDDEN_=244, MOD=245, PARTITION=246, PARTITIONS=247, TOP=248, ROW=249, 
59  		ROWS=250, UNKNOWN=251, XOR=252, ALWAYS=253, CASCADE=254, CHECK=255, GENERATED=256, 
60  		NO=257, OPTION=258, PRIVILEGES=259, REFERENCES=260, USER=261, ROLE=262, 
61  		START=263, TRANSACTION=264, ACTION=265, ALGORITHM=266, AUTO=267, BLOCKERS=268, 
62  		CLUSTERED=269, NONCLUSTERED=270, COLLATE=271, COLUMNSTORE=272, CONTENT=273, 
63  		CONVERT=274, YEARS=275, MONTHS=276, WEEKS=277, DAYS=278, MINUTES=279, 
64  		DENY=280, DETERMINISTIC=281, DISTRIBUTION=282, DOCUMENT=283, DURABILITY=284, 
65  		ENCRYPTED=285, END=286, FILESTREAM=287, FILETABLE=288, FILLFACTOR=289, 
66  		FOLLOWING=290, HASH=291, HEAP=292, IDENTITY=293, INBOUND=294, OUTBOUND=295, 
67  		UNBOUNDED=296, INFINITE=297, LOGIN=298, MASKED=299, MAXDOP=300, MOVE=301, 
68  		NOCHECK=302, NONE=303, OBJECT=304, ONLINE=305, OVER=306, PAGE=307, PAUSED=308, 
69  		PERIOD=309, PERSISTED=310, PRECEDING=311, RANDOMIZED=312, RANGE=313, REBUILD=314, 
70  		REPLICATE=315, REPLICATION=316, RESUMABLE=317, ROWGUIDCOL=318, SAVE=319, 
71  		SELF=320, SPARSE=321, SWITCH=322, TRAN=323, TRANCOUNT=324, ZONE=325, EXECUTE=326, 
72  		EXEC=327, SESSION=328, CONNECT=329, CONNECTION=330, CATALOG=331, CONTROL=332, 
73  		CONCAT=333, TAKE=334, OWNERSHIP=335, DEFINITION=336, APPLICATION=337, 
74  		ASSEMBLY=338, SYMMETRIC=339, ASYMMETRIC=340, SERVER=341, RECEIVE=342, 
75  		CHANGE=343, TRACE=344, TRACKING=345, RESOURCES=346, SETTINGS=347, STATE=348, 
76  		AVAILABILITY=349, CREDENTIAL=350, ENDPOINT=351, EVENT=352, NOTIFICATION=353, 
77  		LINKED=354, AUDIT=355, DDL=356, XML=357, IMPERSONATE=358, SECURABLES=359, 
78  		AUTHENTICATE=360, EXTERNAL=361, ACCESS=362, ADMINISTER=363, BULK=364, 
79  		OPERATIONS=365, UNSAFE=366, SHUTDOWN=367, SCOPED=368, CONFIGURATION=369, 
80  		DATASPACE=370, SERVICE=371, CERTIFICATE=372, CONTRACT=373, ENCRYPTION=374, 
81  		MASTER=375, DATA=376, SOURCE=377, FILE=378, FORMAT=379, LIBRARY=380, FULLTEXT=381, 
82  		MASK=382, UNMASK=383, MESSAGE=384, REMOTE=385, BINDING=386, ROUTE=387, 
83  		SECURITY=388, POLICY=389, AGGREGATE=390, QUEUE=391, RULE=392, SYNONYM=393, 
84  		COLLECTION=394, SCRIPT=395, KILL=396, BACKUP=397, LOG=398, SHOWPLAN=399, 
85  		SUBSCRIBE=400, QUERY=401, NOTIFICATIONS=402, CHECKPOINT=403, SEQUENCE=404, 
86  		ABORT_AFTER_WAIT=405, ALLOW_PAGE_LOCKS=406, ALLOW_ROW_LOCKS=407, ALL_SPARSE_COLUMNS=408, 
87  		BUCKET_COUNT=409, COLUMNSTORE_ARCHIVE=410, COLUMN_ENCRYPTION_KEY=411, 
88  		COLUMN_SET=412, COMPRESSION_DELAY=413, DATABASE_DEAULT=414, DATA_COMPRESSION=415, 
89  		DATA_CONSISTENCY_CHECK=416, ENCRYPTION_TYPE=417, SYSTEM_TIME=418, SYSTEM_VERSIONING=419, 
90  		TEXTIMAGE_ON=420, WAIT_AT_LOW_PRIORITY=421, STATISTICS_INCREMENTAL=422, 
91  		STATISTICS_NORECOMPUTE=423, ROUND_ROBIN=424, SCHEMA_AND_DATA=425, SCHEMA_ONLY=426, 
92  		SORT_IN_TEMPDB=427, IGNORE_DUP_KEY=428, IMPLICIT_TRANSACTIONS=429, MAX_DURATION=430, 
93  		MEMORY_OPTIMIZED=431, MIGRATION_STATE=432, PAD_INDEX=433, REMOTE_DATA_ARCHIVE=434, 
94  		FILESTREAM_ON=435, FILETABLE_COLLATE_FILENAME=436, FILETABLE_DIRECTORY=437, 
95  		FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME=438, FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME=439, 
96  		FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME=440, FILTER_PREDICATE=441, HISTORY_RETENTION_PERIOD=442, 
97  		HISTORY_TABLE=443, LOCK_ESCALATION=444, DROP_EXISTING=445, ROW_NUMBER=446, 
98  		FETCH=447, FIRST=448, ONLY=449, MONEY=450, SMALLMONEY=451, DATETIMEOFFSET=452, 
99  		DATETIME=453, DATETIME2=454, SMALLDATETIME=455, NCHAR=456, NVARCHAR=457, 
100 		NTEXT=458, VARBINARY=459, IMAGE=460, SQL_VARIANT=461, UNIQUEIDENTIFIER=462, 
101 		HIERARCHYID=463, GEOMETRY=464, GEOGRAPHY=465, OUTPUT=466, INSERTED=467, 
102 		DELETED=468, ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS=469, ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES=470, 
103 		DISABLE_BATCH_MODE_ADAPTIVE_JOINS=471, DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK=472, 
104 		DISABLE_DEFERRED_COMPILATION_TV=473, DISABLE_INTERLEAVED_EXECUTION_TVF=474, 
105 		DISABLE_OPTIMIZED_NESTED_LOOP=475, DISABLE_OPTIMIZER_ROWGOAL=476, DISABLE_PARAMETER_SNIFFING=477, 
106 		DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK=478, DISABLE_TSQL_SCALAR_UDF_INLINING=479, 
107 		DISALLOW_BATCH_MODE=480, ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS=481, ENABLE_QUERY_OPTIMIZER_HOTFIXES=482, 
108 		FORCE_DEFAULT_CARDINALITY_ESTIMATION=483, FORCE_LEGACY_CARDINALITY_ESTIMATION=484, 
109 		QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n=485, QUERY_PLAN_PROFILE=486, EXTERNALPUSHDOWN=487, 
110 		SCALEOUTEXECUTION=488, IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX=489, KEEPFIXED=490, 
111 		MAX_GRANT_PERCENT=491, MIN_GRANT_PERCENT=492, MAXRECURSION=493, NO_PERFORMANCE_SPOOL=494, 
112 		PARAMETERIZATION=495, QUERYTRACEON=496, RECOMPILE=497, ROBUST=498, OPTIMIZE_FOR_SEQUENTIAL_KEY=499, 
113 		DATA_DELETION=500, FILTER_COLUMN=501, RETENTION_PERIOD=502, CONTAINMENT=503, 
114 		PARTIAL=504, FILENAME=505, SIZE=506, MAXSIZE=507, FILEGROWTH=508, UNLIMITED=509, 
115 		KB=510, MB=511, GB=512, TB=513, CONTAINS=514, MEMORY_OPTIMIZED_DATA=515, 
116 		FILEGROUP=516, NON_TRANSACTED_ACCESS=517, DB_CHAINING=518, TRUSTWORTHY=519, 
117 		FORWARD_ONLY=520, SCROLL=521, STATIC=522, KEYSET=523, DYNAMIC=524, FAST_FORWARD=525, 
118 		SCROLL_LOCKS=526, OPTIMISTIC=527, TYPE_WARNING=528, SCHEMABINDING=529, 
119 		CALLER=530, INPUT=531, CALLED=532, VARYING=533, OUT=534, OWNER=535, ATOMIC=536, 
120 		LANGUAGE=537, LEVEL=538, ISOLATION=539, SNAPSHOT=540, REPEATABLE=541, 
121 		READ=542, SERIALIZABLE=543, NATIVE_COMPILATION=544, VIEW_METADATA=545, 
122 		AFTER=546, INSTEAD=547, APPEND=548, INCREMENT=549, CYCLE=550, CACHE=551, 
123 		MINVALUE=552, MAXVALUE=553, RESTART=554, LOB_COMPACTION=555, COMPRESS_ALL_ROW_GROUPS=556, 
124 		REORGANIZE=557, RESUME=558, PAUSE=559, ABORT=560, INCLUDE=561, DISTRIBUTED=562, 
125 		MARK=563, WORK=564, REMOVE=565, AUTOGROW_SINGLE_FILE=566, AUTOGROW_ALL_FILES=567, 
126 		READWRITE=568, READ_WRITE=569, MODIFY=570, ACCELERATED_DATABASE_RECOVERY=571, 
127 		PERSISTENT_VERSION_STORE_FILEGROUP=572, IMMEDIATE=573, NO_WAIT=574, TARGET_RECOVERY_TIME=575, 
128 		SECONDS=576, HONOR_BROKER_PRIORITY=577, ERROR_BROKER_CONVERSATIONS=578, 
129 		NEW_BROKER=579, DISABLE_BROKER=580, ENABLE_BROKER=581, MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT=582, 
130 		READ_COMMITTED_SNAPSHOT=583, ALLOW_SNAPSHOT_ISOLATION=584, RECURSIVE_TRIGGERS=585, 
131 		QUOTED_IDENTIFIER=586, NUMERIC_ROUNDABORT=587, CONCAT_NULL_YIELDS_NULL=588, 
132 		COMPATIBILITY_LEVEL=589, ARITHABORT=590, ANSI_WARNINGS=591, ANSI_PADDING=592, 
133 		ANSI_NULLS=593, ANSI_NULL_DEFAULT=594, PAGE_VERIFY=595, CHECKSUM=596, 
134 		TORN_PAGE_DETECTION=597, BULK_LOGGED=598, RECOVERY=599, TOTAL_EXECUTION_CPU_TIME_MS=600, 
135 		TOTAL_COMPILE_CPU_TIME_MS=601, STALE_CAPTURE_POLICY_THRESHOLD=602, EXECUTION_COUNT=603, 
136 		QUERY_CAPTURE_POLICY=604, WAIT_STATS_CAPTURE_MODE=605, MAX_PLANS_PER_QUERY=606, 
137 		QUERY_CAPTURE_MODE=607, SIZE_BASED_CLEANUP_MODE=608, INTERVAL_LENGTH_MINUTES=609, 
138 		MAX_STORAGE_SIZE_MB=610, DATA_FLUSH_INTERVAL_SECONDS=611, CLEANUP_POLICY=612, 
139 		CUSTOM=613, STALE_QUERY_THRESHOLD_DAYS=614, OPERATION_MODE=615, QUERY_STORE=616, 
140 		CURSOR_DEFAULT=617, GLOBAL=618, CURSOR_CLOSE_ON_COMMIT=619, HOURS=620, 
141 		CHANGE_RETENTION=621, AUTO_CLEANUP=622, CHANGE_TRACKING=623, AUTOMATIC_TUNING=624, 
142 		FORCE_LAST_GOOD_PLAN=625, AUTO_UPDATE_STATISTICS_ASYNC=626, AUTO_UPDATE_STATISTICS=627, 
143 		AUTO_SHRINK=628, AUTO_CREATE_STATISTICS=629, INCREMENTAL=630, AUTO_CLOSE=631, 
144 		DATA_RETENTION=632, TEMPORAL_HISTORY_RETENTION=633, EDITION=634, MIXED_PAGE_ALLOCATION=635, 
145 		DISABLED=636, ALLOWED=637, HADR=638, MULTI_USER=639, RESTRICTED_USER=640, 
146 		SINGLE_USER=641, OFFLINE=642, EMERGENCY=643, SUSPEND=644, DATE_CORRELATION_OPTIMIZATION=645, 
147 		ELASTIC_POOL=646, SERVICE_OBJECTIVE=647, DATABASE_NAME=648, ALLOW_CONNECTIONS=649, 
148 		GEO=650, NAMED=651, DATEFIRST=652, BACKUP_STORAGE_REDUNDANCY=653, FORCE_FAILOVER_ALLOW_DATA_LOSS=654, 
149 		SECONDARY=655, FAILOVER=656, DEFAULT_FULLTEXT_LANGUAGE=657, DEFAULT_LANGUAGE=658, 
150 		INLINE=659, NESTED_TRIGGERS=660, TRANSFORM_NOISE_WORDS=661, TWO_DIGIT_YEAR_CUTOFF=662, 
151 		PERSISTENT_LOG_BUFFER=663, DIRECTORY_NAME=664, DATEFORMAT=665, DELAYED_DURABILITY=666, 
152 		AUTHORIZATION=667, TRANSFER=668, EXPLAIN=669, WITH_RECOMMENDATIONS=670, 
153 		BATCH_SIZE=671, SETUSER=672, NORESET=673, DEFAULT_SCHEMA=674, ALLOW_ENCRYPTED_VALUE_MODIFICATIONS=675, 
154 		OLD_PASSWORD=676, PROVIDER=677, SID=678, UNCOMMITTED=679, COMMITTED=680, 
155 		STOPLIST=681, SEARCH=682, PROPERTY=683, LIST=684, SEND=685, MEMBER=686, 
156 		HASHED=687, MUST_CHANGE=688, DEFAULT_DATABASE=689, CHECK_EXPIRATION=690, 
157 		CHECK_POLICY=691, WINDOWS=692, UNLOCK=693, REVERT=694, COOKIE=695, BROWSE=696, 
158 		RAW=697, XMLDATA=698, XMLSCHEMA=699, ELEMENTS=700, XSINIL=701, ABSENT=702, 
159 		EXPLICIT=703, PATH=704, BASE64=705, ROOT=706, JSON=707, INCLUDE_NULL_VALUES=708, 
160 		WITHOUT_ARRAY_WRAPPER=709, XMLNAMESPACES=710, STATISTICS=711, FULLSCAN=712, 
161 		SAMPLE=713, RESAMPLE=714, NORECOMPUTE=715, AUTO_DROP=716, PERSIST_SAMPLE_PERCENT=717, 
162 		OPENJSON=718, OPENROWSET=719, TRY_CAST=720, TRY_CONVERT=721, IDENTIFIER_=722, 
163 		DELIMITED_IDENTIFIER_=723, STRING_=724, NUMBER_=725, INT_NUM_=726, FLOAT_NUM_=727, 
164 		DECIMAL_NUM_=728, HEX_DIGIT_=729, BIT_NUM_=730, NCHAR_TEXT=731, RESPECT=732, 
165 		IGNORE=733, NULLS=734;
166 	public static final int
167 		RULE_execute = 0, RULE_setTransaction = 1, RULE_isolationLevel = 2, RULE_setImplicitTransactions = 3, 
168 		RULE_implicitTransactionsValue = 4, RULE_beginTransaction = 5, RULE_beginDistributedTransaction = 6, 
169 		RULE_commit = 7, RULE_commitWork = 8, RULE_rollback = 9, RULE_rollbackWork = 10, 
170 		RULE_savepoint = 11, RULE_parameterMarker = 12, RULE_literals = 13, RULE_stringLiterals = 14, 
171 		RULE_numberLiterals = 15, RULE_dateTimeLiterals = 16, RULE_hexadecimalLiterals = 17, 
172 		RULE_bitValueLiterals = 18, RULE_booleanLiterals = 19, RULE_nullValueLiterals = 20, 
173 		RULE_identifier = 21, RULE_regularIdentifier = 22, RULE_delimitedIdentifier = 23, 
174 		RULE_unreservedWord = 24, RULE_databaseName = 25, RULE_schemaName = 26, 
175 		RULE_functionName = 27, RULE_procedureName = 28, RULE_viewName = 29, RULE_triggerName = 30, 
176 		RULE_sequenceName = 31, RULE_tableName = 32, RULE_queueName = 33, RULE_contractName = 34, 
177 		RULE_serviceName = 35, RULE_columnName = 36, RULE_scriptVariableName = 37, 
178 		RULE_owner = 38, RULE_name = 39, RULE_columnNames = 40, RULE_columnNamesWithSort = 41, 
179 		RULE_tableNames = 42, RULE_indexName = 43, RULE_constraintName = 44, RULE_collationName = 45, 
180 		RULE_alias = 46, RULE_dataTypeLength = 47, RULE_primaryKey = 48, RULE_expr = 49, 
181 		RULE_andOperator = 50, RULE_orOperator = 51, RULE_distinctFrom = 52, RULE_notOperator = 53, 
182 		RULE_booleanPrimary = 54, RULE_comparisonOperator = 55, RULE_predicate = 56, 
183 		RULE_bitExpr = 57, RULE_simpleExpr = 58, RULE_functionCall = 59, RULE_aggregationFunction = 60, 
184 		RULE_aggregationFunctionName = 61, RULE_distinct = 62, RULE_specialFunction = 63, 
185 		RULE_openDatasourceFunction = 64, RULE_approxFunction = 65, RULE_conversionFunction = 66, 
186 		RULE_castFunction = 67, RULE_convertFunction = 68, RULE_jsonFunction = 69, 
187 		RULE_jsonObjectFunction = 70, RULE_jsonArrayFunction = 71, RULE_jsonKeyValue = 72, 
188 		RULE_jsonNullClause = 73, RULE_charFunction = 74, RULE_openJsonFunction = 75, 
189 		RULE_openJsonWithclause = 76, RULE_jsonColumnDefinition = 77, RULE_openRowSetFunction = 78, 
190 		RULE_regularFunction = 79, RULE_regularFunctionName = 80, RULE_caseExpression = 81, 
191 		RULE_caseWhen = 82, RULE_caseElse = 83, RULE_privateExprOfDb = 84, RULE_orderByClause = 85, 
192 		RULE_orderByItem = 86, RULE_dataType = 87, RULE_dataTypeName = 88, RULE_atTimeZoneExpr = 89, 
193 		RULE_castExpr = 90, RULE_convertExpr = 91, RULE_windowFunction = 92, RULE_nullTreatment = 93, 
194 		RULE_overClause = 94, RULE_partitionByClause = 95, RULE_rowRangeClause = 96, 
195 		RULE_windowFrameExtent = 97, RULE_windowFrameBetween = 98, RULE_windowFrameBound = 99, 
196 		RULE_windowFramePreceding = 100, RULE_windowFrameFollowing = 101, RULE_columnNameWithSort = 102, 
197 		RULE_indexOption = 103, RULE_compressionOption = 104, RULE_eqTime = 105, 
198 		RULE_eqOnOffOption = 106, RULE_eqKey = 107, RULE_eqOnOff = 108, RULE_onPartitionClause = 109, 
199 		RULE_partitionExpressions = 110, RULE_partitionExpression = 111, RULE_numberRange = 112, 
200 		RULE_lowPriorityLockWait = 113, RULE_onLowPriorLockWait = 114, RULE_ignoredIdentifier = 115, 
201 		RULE_ignoredIdentifiers = 116, RULE_matchNone = 117, RULE_variableName = 118, 
202 		RULE_executeAsClause = 119, RULE_transactionName = 120, RULE_transactionVariableName = 121, 
203 		RULE_savepointName = 122, RULE_savepointVariableName = 123, RULE_entityType = 124, 
204 		RULE_ifExists = 125, RULE_tableHintLimited = 126, RULE_call = 127, RULE_explain = 128, 
205 		RULE_explainableStatement = 129, RULE_createTable = 130, RULE_createTableClause = 131, 
206 		RULE_createIndex = 132, RULE_createDatabase = 133, RULE_createFunction = 134, 
207 		RULE_createProcedure = 135, RULE_createView = 136, RULE_createTrigger = 137, 
208 		RULE_createSequence = 138, RULE_createService = 139, RULE_createSchema = 140, 
209 		RULE_alterTable = 141, RULE_alterIndex = 142, RULE_alterDatabase = 143, 
210 		RULE_alterProcedure = 144, RULE_alterFunction = 145, RULE_alterView = 146, 
211 		RULE_alterTrigger = 147, RULE_alterSequence = 148, RULE_alterService = 149, 
212 		RULE_alterSchema = 150, RULE_dropTable = 151, RULE_dropIndex = 152, RULE_dropDatabase = 153, 
213 		RULE_dropFunction = 154, RULE_dropProcedure = 155, RULE_dropView = 156, 
214 		RULE_dropTrigger = 157, RULE_dropSequence = 158, RULE_dropService = 159, 
215 		RULE_dropSchema = 160, RULE_truncateTable = 161, RULE_updateStatistics = 162, 
216 		RULE_statisticsWithClause = 163, RULE_sampleOption = 164, RULE_statisticsOptions = 165, 
217 		RULE_statisticsOption = 166, RULE_fileTableClause = 167, RULE_createDefinitionClause = 168, 
218 		RULE_createTableDefinitions = 169, RULE_createTableDefinition = 170, RULE_columnDefinition = 171, 
219 		RULE_columnDefinitionOption = 172, RULE_encryptedOptions = 173, RULE_columnConstraint = 174, 
220 		RULE_computedColumnConstraint = 175, RULE_computedColumnForeignKeyConstraint = 176, 
221 		RULE_computedColumnForeignKeyOnAction = 177, RULE_primaryKeyConstraint = 178, 
222 		RULE_diskTablePrimaryKeyConstraintOption = 179, RULE_clusterOption = 180, 
223 		RULE_primaryKeyWithClause = 181, RULE_primaryKeyOnClause = 182, RULE_onSchemaColumn = 183, 
224 		RULE_onFileGroup = 184, RULE_onString = 185, RULE_memoryTablePrimaryKeyConstraintOption = 186, 
225 		RULE_withBucket = 187, RULE_columnForeignKeyConstraint = 188, RULE_foreignKeyOnAction = 189, 
226 		RULE_foreignKeyOn = 190, RULE_checkConstraint = 191, RULE_columnIndex = 192, 
227 		RULE_withIndexOption = 193, RULE_indexOnClause = 194, RULE_onDefault = 195, 
228 		RULE_fileStreamOn = 196, RULE_columnConstraints = 197, RULE_computedColumnDefinition = 198, 
229 		RULE_columnSetDefinition = 199, RULE_tableConstraint = 200, RULE_tablePrimaryConstraint = 201, 
230 		RULE_primaryKeyUnique = 202, RULE_diskTablePrimaryConstraintOption = 203, 
231 		RULE_memoryTablePrimaryConstraintOption = 204, RULE_hashWithBucket = 205, 
232 		RULE_tableForeignKeyConstraint = 206, RULE_tableIndex = 207, RULE_indexNameOption = 208, 
233 		RULE_indexOptions = 209, RULE_periodClause = 210, RULE_partitionScheme = 211, 
234 		RULE_fileGroup = 212, RULE_tableOptions = 213, RULE_tableOption = 214, 
235 		RULE_dataDelectionOption = 215, RULE_tableStretchOptions = 216, RULE_tableStretchOption = 217, 
236 		RULE_migrationState_ = 218, RULE_tableOperationOption = 219, RULE_distributionOption = 220, 
237 		RULE_dataWareHouseTableOption = 221, RULE_dataWareHousePartitionOption = 222, 
238 		RULE_createIndexSpecification = 223, RULE_alterDefinitionClause = 224, 
239 		RULE_addColumnSpecification = 225, RULE_modifyColumnSpecification = 226, 
240 		RULE_alterColumnOperation = 227, RULE_alterColumnAddOptions = 228, RULE_alterColumnAddOption = 229, 
241 		RULE_constraintForColumn = 230, RULE_generatedColumnNamesClause = 231, 
242 		RULE_generatedColumnNameClause = 232, RULE_generatedColumnName = 233, 
243 		RULE_alterDrop = 234, RULE_alterTableDropConstraint = 235, RULE_dropConstraintName = 236, 
244 		RULE_dropConstraintWithClause = 237, RULE_dropConstraintOption = 238, 
245 		RULE_onOffOption = 239, RULE_dropColumnSpecification = 240, RULE_dropIndexSpecification = 241, 
246 		RULE_alterCheckConstraint = 242, RULE_alterTableTrigger = 243, RULE_alterSwitch = 244, 
247 		RULE_alterSet = 245, RULE_setFileStreamClause = 246, RULE_setSystemVersionClause = 247, 
248 		RULE_alterSetOnClause = 248, RULE_dataConsistencyCheckClause = 249, RULE_historyRetentionPeriodClause = 250, 
249 		RULE_historyRetentionPeriod = 251, RULE_alterTableTableIndex = 252, RULE_indexWithName = 253, 
250 		RULE_indexNonClusterClause = 254, RULE_alterTableIndexOnClause = 255, 
251 		RULE_indexClusterClause = 256, RULE_alterTableOption = 257, RULE_onHistoryTableClause = 258, 
252 		RULE_createDatabaseClause = 259, RULE_fileDefinitionClause = 260, RULE_databaseOption = 261, 
253 		RULE_fileStreamOption = 262, RULE_fileSpec = 263, RULE_databaseFileSpecOption = 264, 
254 		RULE_databaseFileGroup = 265, RULE_databaseFileGroupContains = 266, RULE_databaseLogOns = 267, 
255 		RULE_declareVariable = 268, RULE_variable = 269, RULE_tableVariable = 270, 
256 		RULE_variTableTypeDefinition = 271, RULE_tableVariableClause = 272, RULE_variableTableColumnDefinition = 273, 
257 		RULE_variableTableColumnConstraint = 274, RULE_variableTableConstraint = 275, 
258 		RULE_setVariable = 276, RULE_setVariableClause = 277, RULE_cursorVariable = 278, 
259 		RULE_cursorClause = 279, RULE_compoundOperation = 280, RULE_funcParameters = 281, 
260 		RULE_funcReturns = 282, RULE_funcMutiReturn = 283, RULE_funcInlineReturn = 284, 
261 		RULE_funcScalarReturn = 285, RULE_tableTypeDefinition = 286, RULE_compoundStatement = 287, 
262 		RULE_functionOption = 288, RULE_validStatement = 289, RULE_procParameters = 290, 
263 		RULE_procParameter = 291, RULE_createOrAlterProcClause = 292, RULE_withCreateProcOption = 293, 
264 		RULE_procOption = 294, RULE_procAsClause = 295, RULE_procSetOption = 296, 
265 		RULE_createOrAlterViewClause = 297, RULE_viewAttribute = 298, RULE_withCommonTableExpr = 299, 
266 		RULE_commonTableExpr = 300, RULE_createTriggerClause = 301, RULE_dmlTriggerOption = 302, 
267 		RULE_methodSpecifier = 303, RULE_triggerTarget = 304, RULE_createOrAlterSequenceClause = 305, 
268 		RULE_createIndexClause = 306, RULE_filterPredicate = 307, RULE_conjunct = 308, 
269 		RULE_alterIndexClause = 309, RULE_relationalIndexOption = 310, RULE_partitionNumberRange = 311, 
270 		RULE_reorganizeOption = 312, RULE_setIndexOption = 313, RULE_resumableIndexOptions = 314, 
271 		RULE_alterDatabaseClause = 315, RULE_addSecondaryOption = 316, RULE_editionOptions = 317, 
272 		RULE_serviceObjective = 318, RULE_alterDatabaseOptionSpec = 319, RULE_fileAndFilegroupOptions = 320, 
273 		RULE_addOrModifyFilegroups = 321, RULE_filegroupUpdatabilityOption = 322, 
274 		RULE_addOrModifyFiles = 323, RULE_acceleratedDatabaseRecovery = 324, RULE_autoOption = 325, 
275 		RULE_automaticTuningOption = 326, RULE_changeTrackingOption = 327, RULE_changeTrackingOptionList = 328, 
276 		RULE_cursorOption = 329, RULE_externalAccessOption = 330, RULE_queryStoreOptions = 331, 
277 		RULE_queryStoreOptionList = 332, RULE_queryCapturePolicyOptionList = 333, 
278 		RULE_recoveryOption = 334, RULE_sqlOption = 335, RULE_snapshotOption = 336, 
279 		RULE_serviceBrokerOption = 337, RULE_targetRecoveryTimeOption = 338, RULE_termination = 339, 
280 		RULE_createServiceClause = 340, RULE_alterServiceClause = 341, RULE_alterServiceOptArg = 342, 
281 		RULE_schemaNameClause = 343, RULE_schemaElement = 344, RULE_createTableAsSelectClause = 345, 
282 		RULE_createTableAsSelect = 346, RULE_createRemoteTableAsSelect = 347, 
283 		RULE_withDistributionOption = 348, RULE_optionQueryHintClause = 349, RULE_insert = 350, 
284 		RULE_insertDefaultValue = 351, RULE_insertValuesClause = 352, RULE_insertSelectClause = 353, 
285 		RULE_insertExecClause = 354, RULE_withTableHint = 355, RULE_exec = 356, 
286 		RULE_update = 357, RULE_assignment = 358, RULE_setAssignmentsClause = 359, 
287 		RULE_assignmentValues = 360, RULE_assignmentValue = 361, RULE_delete = 362, 
288 		RULE_optionHint = 363, RULE_singleTableClause = 364, RULE_multipleTablesClause = 365, 
289 		RULE_multipleTableNames = 366, RULE_select = 367, RULE_aggregationClause = 368, 
290 		RULE_selectClause = 369, RULE_duplicateSpecification = 370, RULE_projections = 371, 
291 		RULE_projection = 372, RULE_top = 373, RULE_topNum = 374, RULE_unqualifiedShorthand = 375, 
292 		RULE_qualifiedShorthand = 376, RULE_intoClause = 377, RULE_fromClause = 378, 
293 		RULE_tableReferences = 379, RULE_tableReference = 380, RULE_tableFactor = 381, 
294 		RULE_joinedTable = 382, RULE_joinSpecification = 383, RULE_whereClause = 384, 
295 		RULE_groupByClause = 385, RULE_havingClause = 386, RULE_subquery = 387, 
296 		RULE_withTempTable = 388, RULE_withClause = 389, RULE_cteClauseSet = 390, 
297 		RULE_cteClause = 391, RULE_outputClause = 392, RULE_outputWithColumns = 393, 
298 		RULE_scalarExpression = 394, RULE_outputWithColumn = 395, RULE_outputWithAaterisk = 396, 
299 		RULE_outputTableName = 397, RULE_queryHint = 398, RULE_useHitName = 399, 
300 		RULE_forClause = 400, RULE_forXmlClause = 401, RULE_commonDirectivesForXml = 402, 
301 		RULE_forJsonClause = 403, RULE_selectWithClause = 404, RULE_xmlNamespacesClause = 405, 
302 		RULE_xmlNamespaceDeclarationItem = 406, RULE_xmlNamespaceUri = 407, RULE_xmlNamespacePrefix = 408, 
303 		RULE_xmlDefaultNamespaceDeclarationItem = 409, RULE_grant = 410, RULE_grantClassPrivilegesClause = 411, 
304 		RULE_grantClassTypePrivilegesClause = 412, RULE_classPrivileges = 413, 
305 		RULE_onClassClause = 414, RULE_classTypePrivileges = 415, RULE_onClassTypeClause = 416, 
306 		RULE_securable = 417, RULE_principal = 418, RULE_revoke = 419, RULE_revokeClassPrivilegesClause = 420, 
307 		RULE_revokeClassTypePrivilegesClause = 421, RULE_deny = 422, RULE_denyClassPrivilegesClause = 423, 
308 		RULE_denyClassTypePrivilegesClause = 424, RULE_optionForClause = 425, 
309 		RULE_privilegeType = 426, RULE_objectPermission = 427, RULE_serverPermission = 428, 
310 		RULE_serverPrincipalPermission = 429, RULE_databasePermission = 430, RULE_databasePrincipalPermission = 431, 
311 		RULE_databaseUserPermission = 432, RULE_databaseRolePermission = 433, 
312 		RULE_applicationRolePermission = 434, RULE_databaseScopedCredentialPermission = 435, 
313 		RULE_schemaPermission = 436, RULE_searchPropertyListPermission = 437, 
314 		RULE_serviceBrokerPermission = 438, RULE_serviceBrokerContractsPermission = 439, 
315 		RULE_serviceBrokerMessageTypesPermission = 440, RULE_serviceBrokerRemoteServiceBindingsPermission = 441, 
316 		RULE_serviceBrokerRoutesPermission = 442, RULE_serviceBrokerServicesPermission = 443, 
317 		RULE_endpointPermission = 444, RULE_certificatePermission = 445, RULE_symmetricKeyPermission = 446, 
318 		RULE_asymmetricKeyPermission = 447, RULE_assemblyPermission = 448, RULE_availabilityGroupPermission = 449, 
319 		RULE_fullTextPermission = 450, RULE_fullTextCatalogPermission = 451, RULE_fullTextStoplistPermission = 452, 
320 		RULE_typePermission = 453, RULE_xmlSchemaCollectionPermission = 454, RULE_systemObjectPermission = 455, 
321 		RULE_class_ = 456, RULE_classItem = 457, RULE_classType = 458, RULE_roleClause = 459, 
322 		RULE_setUser = 460, RULE_createUser = 461, RULE_createUserLoginClause = 462, 
323 		RULE_createUserWindowsPrincipalClause = 463, RULE_createUserLoginWindowsPrincipalClause = 464, 
324 		RULE_createUserWithoutLoginClause = 465, RULE_optionsList = 466, RULE_limitedOptionsList = 467, 
325 		RULE_createUserFromExternalProviderClause = 468, RULE_createUserWithDefaultSchema = 469, 
326 		RULE_createUserWithAzureActiveDirectoryPrincipalClause = 470, RULE_windowsPrincipal = 471, 
327 		RULE_azureActiveDirectoryPrincipal = 472, RULE_userName = 473, RULE_ignoredNameIdentifier = 474, 
328 		RULE_dropUser = 475, RULE_alterUser = 476, RULE_setItem = 477, RULE_createRole = 478, 
329 		RULE_dropRole = 479, RULE_alterRole = 480, RULE_createLogin = 481, RULE_createLoginForSQLServerClause = 482, 
330 		RULE_createLoginForSQLServerOptionList = 483, RULE_createLoginForSQLServerOptionListClause = 484, 
331 		RULE_hashedPassword = 485, RULE_sid = 486, RULE_sources = 487, RULE_windowsOptions = 488, 
332 		RULE_createLoginForAzureSQLDatabaseClause = 489, RULE_createLoginForAzureSQLDatabaseOptionList = 490, 
333 		RULE_createLoginForAzureManagedInstanceClause = 491, RULE_azureManagedInstanceOptionList = 492, 
334 		RULE_createLoginForAzureSynapseAnalyticsClause = 493, RULE_createLoginForAzureSynapseAnalyticsOptionList = 494, 
335 		RULE_createLoginForAnalyticsPlatformSystemClause = 495, RULE_createLoginForAnalyticsPlatformSystemOptionList = 496, 
336 		RULE_createLoginForAnalyticsPlatformSystemOptionListClause = 497, RULE_dropLogin = 498, 
337 		RULE_alterLogin = 499, RULE_statusOptionClause = 500, RULE_setOptionClause = 501, 
338 		RULE_passwordOptionClause = 502, RULE_cryptographicCredentialsOptionClause = 503, 
339 		RULE_revert = 504;
340 	private static String[] makeRuleNames() {
341 		return new String[] {
342 			"execute", "setTransaction", "isolationLevel", "setImplicitTransactions", 
343 			"implicitTransactionsValue", "beginTransaction", "beginDistributedTransaction", 
344 			"commit", "commitWork", "rollback", "rollbackWork", "savepoint", "parameterMarker", 
345 			"literals", "stringLiterals", "numberLiterals", "dateTimeLiterals", "hexadecimalLiterals", 
346 			"bitValueLiterals", "booleanLiterals", "nullValueLiterals", "identifier", 
347 			"regularIdentifier", "delimitedIdentifier", "unreservedWord", "databaseName", 
348 			"schemaName", "functionName", "procedureName", "viewName", "triggerName", 
349 			"sequenceName", "tableName", "queueName", "contractName", "serviceName", 
350 			"columnName", "scriptVariableName", "owner", "name", "columnNames", "columnNamesWithSort", 
351 			"tableNames", "indexName", "constraintName", "collationName", "alias", 
352 			"dataTypeLength", "primaryKey", "expr", "andOperator", "orOperator", 
353 			"distinctFrom", "notOperator", "booleanPrimary", "comparisonOperator", 
354 			"predicate", "bitExpr", "simpleExpr", "functionCall", "aggregationFunction", 
355 			"aggregationFunctionName", "distinct", "specialFunction", "openDatasourceFunction", 
356 			"approxFunction", "conversionFunction", "castFunction", "convertFunction", 
357 			"jsonFunction", "jsonObjectFunction", "jsonArrayFunction", "jsonKeyValue", 
358 			"jsonNullClause", "charFunction", "openJsonFunction", "openJsonWithclause", 
359 			"jsonColumnDefinition", "openRowSetFunction", "regularFunction", "regularFunctionName", 
360 			"caseExpression", "caseWhen", "caseElse", "privateExprOfDb", "orderByClause", 
361 			"orderByItem", "dataType", "dataTypeName", "atTimeZoneExpr", "castExpr", 
362 			"convertExpr", "windowFunction", "nullTreatment", "overClause", "partitionByClause", 
363 			"rowRangeClause", "windowFrameExtent", "windowFrameBetween", "windowFrameBound", 
364 			"windowFramePreceding", "windowFrameFollowing", "columnNameWithSort", 
365 			"indexOption", "compressionOption", "eqTime", "eqOnOffOption", "eqKey", 
366 			"eqOnOff", "onPartitionClause", "partitionExpressions", "partitionExpression", 
367 			"numberRange", "lowPriorityLockWait", "onLowPriorLockWait", "ignoredIdentifier", 
368 			"ignoredIdentifiers", "matchNone", "variableName", "executeAsClause", 
369 			"transactionName", "transactionVariableName", "savepointName", "savepointVariableName", 
370 			"entityType", "ifExists", "tableHintLimited", "call", "explain", "explainableStatement", 
371 			"createTable", "createTableClause", "createIndex", "createDatabase", 
372 			"createFunction", "createProcedure", "createView", "createTrigger", "createSequence", 
373 			"createService", "createSchema", "alterTable", "alterIndex", "alterDatabase", 
374 			"alterProcedure", "alterFunction", "alterView", "alterTrigger", "alterSequence", 
375 			"alterService", "alterSchema", "dropTable", "dropIndex", "dropDatabase", 
376 			"dropFunction", "dropProcedure", "dropView", "dropTrigger", "dropSequence", 
377 			"dropService", "dropSchema", "truncateTable", "updateStatistics", "statisticsWithClause", 
378 			"sampleOption", "statisticsOptions", "statisticsOption", "fileTableClause", 
379 			"createDefinitionClause", "createTableDefinitions", "createTableDefinition", 
380 			"columnDefinition", "columnDefinitionOption", "encryptedOptions", "columnConstraint", 
381 			"computedColumnConstraint", "computedColumnForeignKeyConstraint", "computedColumnForeignKeyOnAction", 
382 			"primaryKeyConstraint", "diskTablePrimaryKeyConstraintOption", "clusterOption", 
383 			"primaryKeyWithClause", "primaryKeyOnClause", "onSchemaColumn", "onFileGroup", 
384 			"onString", "memoryTablePrimaryKeyConstraintOption", "withBucket", "columnForeignKeyConstraint", 
385 			"foreignKeyOnAction", "foreignKeyOn", "checkConstraint", "columnIndex", 
386 			"withIndexOption", "indexOnClause", "onDefault", "fileStreamOn", "columnConstraints", 
387 			"computedColumnDefinition", "columnSetDefinition", "tableConstraint", 
388 			"tablePrimaryConstraint", "primaryKeyUnique", "diskTablePrimaryConstraintOption", 
389 			"memoryTablePrimaryConstraintOption", "hashWithBucket", "tableForeignKeyConstraint", 
390 			"tableIndex", "indexNameOption", "indexOptions", "periodClause", "partitionScheme", 
391 			"fileGroup", "tableOptions", "tableOption", "dataDelectionOption", "tableStretchOptions", 
392 			"tableStretchOption", "migrationState_", "tableOperationOption", "distributionOption", 
393 			"dataWareHouseTableOption", "dataWareHousePartitionOption", "createIndexSpecification", 
394 			"alterDefinitionClause", "addColumnSpecification", "modifyColumnSpecification", 
395 			"alterColumnOperation", "alterColumnAddOptions", "alterColumnAddOption", 
396 			"constraintForColumn", "generatedColumnNamesClause", "generatedColumnNameClause", 
397 			"generatedColumnName", "alterDrop", "alterTableDropConstraint", "dropConstraintName", 
398 			"dropConstraintWithClause", "dropConstraintOption", "onOffOption", "dropColumnSpecification", 
399 			"dropIndexSpecification", "alterCheckConstraint", "alterTableTrigger", 
400 			"alterSwitch", "alterSet", "setFileStreamClause", "setSystemVersionClause", 
401 			"alterSetOnClause", "dataConsistencyCheckClause", "historyRetentionPeriodClause", 
402 			"historyRetentionPeriod", "alterTableTableIndex", "indexWithName", "indexNonClusterClause", 
403 			"alterTableIndexOnClause", "indexClusterClause", "alterTableOption", 
404 			"onHistoryTableClause", "createDatabaseClause", "fileDefinitionClause", 
405 			"databaseOption", "fileStreamOption", "fileSpec", "databaseFileSpecOption", 
406 			"databaseFileGroup", "databaseFileGroupContains", "databaseLogOns", "declareVariable", 
407 			"variable", "tableVariable", "variTableTypeDefinition", "tableVariableClause", 
408 			"variableTableColumnDefinition", "variableTableColumnConstraint", "variableTableConstraint", 
409 			"setVariable", "setVariableClause", "cursorVariable", "cursorClause", 
410 			"compoundOperation", "funcParameters", "funcReturns", "funcMutiReturn", 
411 			"funcInlineReturn", "funcScalarReturn", "tableTypeDefinition", "compoundStatement", 
412 			"functionOption", "validStatement", "procParameters", "procParameter", 
413 			"createOrAlterProcClause", "withCreateProcOption", "procOption", "procAsClause", 
414 			"procSetOption", "createOrAlterViewClause", "viewAttribute", "withCommonTableExpr", 
415 			"commonTableExpr", "createTriggerClause", "dmlTriggerOption", "methodSpecifier", 
416 			"triggerTarget", "createOrAlterSequenceClause", "createIndexClause", 
417 			"filterPredicate", "conjunct", "alterIndexClause", "relationalIndexOption", 
418 			"partitionNumberRange", "reorganizeOption", "setIndexOption", "resumableIndexOptions", 
419 			"alterDatabaseClause", "addSecondaryOption", "editionOptions", "serviceObjective", 
420 			"alterDatabaseOptionSpec", "fileAndFilegroupOptions", "addOrModifyFilegroups", 
421 			"filegroupUpdatabilityOption", "addOrModifyFiles", "acceleratedDatabaseRecovery", 
422 			"autoOption", "automaticTuningOption", "changeTrackingOption", "changeTrackingOptionList", 
423 			"cursorOption", "externalAccessOption", "queryStoreOptions", "queryStoreOptionList", 
424 			"queryCapturePolicyOptionList", "recoveryOption", "sqlOption", "snapshotOption", 
425 			"serviceBrokerOption", "targetRecoveryTimeOption", "termination", "createServiceClause", 
426 			"alterServiceClause", "alterServiceOptArg", "schemaNameClause", "schemaElement", 
427 			"createTableAsSelectClause", "createTableAsSelect", "createRemoteTableAsSelect", 
428 			"withDistributionOption", "optionQueryHintClause", "insert", "insertDefaultValue", 
429 			"insertValuesClause", "insertSelectClause", "insertExecClause", "withTableHint", 
430 			"exec", "update", "assignment", "setAssignmentsClause", "assignmentValues", 
431 			"assignmentValue", "delete", "optionHint", "singleTableClause", "multipleTablesClause", 
432 			"multipleTableNames", "select", "aggregationClause", "selectClause", 
433 			"duplicateSpecification", "projections", "projection", "top", "topNum", 
434 			"unqualifiedShorthand", "qualifiedShorthand", "intoClause", "fromClause", 
435 			"tableReferences", "tableReference", "tableFactor", "joinedTable", "joinSpecification", 
436 			"whereClause", "groupByClause", "havingClause", "subquery", "withTempTable", 
437 			"withClause", "cteClauseSet", "cteClause", "outputClause", "outputWithColumns", 
438 			"scalarExpression", "outputWithColumn", "outputWithAaterisk", "outputTableName", 
439 			"queryHint", "useHitName", "forClause", "forXmlClause", "commonDirectivesForXml", 
440 			"forJsonClause", "selectWithClause", "xmlNamespacesClause", "xmlNamespaceDeclarationItem", 
441 			"xmlNamespaceUri", "xmlNamespacePrefix", "xmlDefaultNamespaceDeclarationItem", 
442 			"grant", "grantClassPrivilegesClause", "grantClassTypePrivilegesClause", 
443 			"classPrivileges", "onClassClause", "classTypePrivileges", "onClassTypeClause", 
444 			"securable", "principal", "revoke", "revokeClassPrivilegesClause", "revokeClassTypePrivilegesClause", 
445 			"deny", "denyClassPrivilegesClause", "denyClassTypePrivilegesClause", 
446 			"optionForClause", "privilegeType", "objectPermission", "serverPermission", 
447 			"serverPrincipalPermission", "databasePermission", "databasePrincipalPermission", 
448 			"databaseUserPermission", "databaseRolePermission", "applicationRolePermission", 
449 			"databaseScopedCredentialPermission", "schemaPermission", "searchPropertyListPermission", 
450 			"serviceBrokerPermission", "serviceBrokerContractsPermission", "serviceBrokerMessageTypesPermission", 
451 			"serviceBrokerRemoteServiceBindingsPermission", "serviceBrokerRoutesPermission", 
452 			"serviceBrokerServicesPermission", "endpointPermission", "certificatePermission", 
453 			"symmetricKeyPermission", "asymmetricKeyPermission", "assemblyPermission", 
454 			"availabilityGroupPermission", "fullTextPermission", "fullTextCatalogPermission", 
455 			"fullTextStoplistPermission", "typePermission", "xmlSchemaCollectionPermission", 
456 			"systemObjectPermission", "class_", "classItem", "classType", "roleClause", 
457 			"setUser", "createUser", "createUserLoginClause", "createUserWindowsPrincipalClause", 
458 			"createUserLoginWindowsPrincipalClause", "createUserWithoutLoginClause", 
459 			"optionsList", "limitedOptionsList", "createUserFromExternalProviderClause", 
460 			"createUserWithDefaultSchema", "createUserWithAzureActiveDirectoryPrincipalClause", 
461 			"windowsPrincipal", "azureActiveDirectoryPrincipal", "userName", "ignoredNameIdentifier", 
462 			"dropUser", "alterUser", "setItem", "createRole", "dropRole", "alterRole", 
463 			"createLogin", "createLoginForSQLServerClause", "createLoginForSQLServerOptionList", 
464 			"createLoginForSQLServerOptionListClause", "hashedPassword", "sid", "sources", 
465 			"windowsOptions", "createLoginForAzureSQLDatabaseClause", "createLoginForAzureSQLDatabaseOptionList", 
466 			"createLoginForAzureManagedInstanceClause", "azureManagedInstanceOptionList", 
467 			"createLoginForAzureSynapseAnalyticsClause", "createLoginForAzureSynapseAnalyticsOptionList", 
468 			"createLoginForAnalyticsPlatformSystemClause", "createLoginForAnalyticsPlatformSystemOptionList", 
469 			"createLoginForAnalyticsPlatformSystemOptionListClause", "dropLogin", 
470 			"alterLogin", "statusOptionClause", "setOptionClause", "passwordOptionClause", 
471 			"cryptographicCredentialsOptionClause", "revert"
472 		};
473 	}
474 	public static final String[] ruleNames = makeRuleNames();
475 
476 	private static String[] makeLiteralNames() {
477 		return new String[] {
478 			null, "'Default does not match anything'", null, null, "'&&'", "'||'", 
479 			"'!'", "'~'", "'|'", "'&'", "'<<'", "'>>'", "'^'", "'%'", "':'", "'+'", 
480 			"'-'", "'*'", "'/'", "'\\'", "'.'", "'.*'", "'<=>'", "'=='", "'='", null, 
481 			"'>'", "'>='", "'<'", "'<='", "'#'", "'('", "')'", "'{'", "'}'", "'['", 
482 			"']'", "','", "'\"'", "'''", "'`'", "'?'", "'@'", "';'", "'$'", null, 
483 			null, null, null, null, null, null, null, null, null, null, null, null, 
484 			null, null, null, null, null, null, null, null, null, null, null, null, 
485 			null, null, null, null, null, null, null, null, null, null, null, null, 
486 			null, null, null, null, null, null, null, null, null, null, null, null, 
487 			null, null, null, null, null, null, null, null, null, null, null, null, 
488 			null, null, null, null, null, null, null, null, null, null, null, null, 
489 			null, null, null, null, null, null, null, null, null, null, null, null, 
490 			null, null, null, null, null, null, null, null, null, null, null, null, 
491 			null, null, null, null, null, null, null, null, null, null, null, null, 
492 			null, null, null, null, null, null, null, null, null, null, null, null, 
493 			null, null, null, null, null, null, null, null, null, null, null, null, 
494 			null, null, null, null, null, null, null, null, null, null, null, null, 
495 			null, null, null, null, null, null, null, null, null, null, null, null, 
496 			null, null, null, null, null, null, null, null, null, null, null, null, 
497 			null, null, null, null, null, null, null, null, null, null, null, null, 
498 			null, null, null, null, null, null, null, null, null, null, null, null, 
499 			null, null, null, "'DO NOT MATCH ANY THING, JUST FOR GENERATOR'"
500 		};
501 	}
502 	private static final String[] _LITERAL_NAMES = makeLiteralNames();
503 	private static String[] makeSymbolicNames() {
504 		return new String[] {
505 			null, null, "BLOCK_COMMENT", "INLINE_COMMENT", "AND_", "OR_", "NOT_", 
506 			"TILDE_", "VERTICAL_BAR_", "AMPERSAND_", "SIGNED_LEFT_SHIFT_", "SIGNED_RIGHT_SHIFT_", 
507 			"CARET_", "MOD_", "COLON_", "PLUS_", "MINUS_", "ASTERISK_", "SLASH_", 
508 			"BACKSLASH_", "DOT_", "DOT_ASTERISK_", "SAFE_EQ_", "DEQ_", "EQ_", "NEQ_", 
509 			"GT_", "GTE_", "LT_", "LTE_", "POUND_", "LP_", "RP_", "LBE_", "RBE_", 
510 			"LBT_", "RBT_", "COMMA_", "DQ_", "SQ_", "BQ_", "QUESTION_", "AT_", "SEMI_", 
511 			"DOLLAR_", "WS", "SELECT", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", 
512 			"DROP", "TRUNCATE", "SCHEMA", "GRANT", "REVOKE", "ADD", "SET", "TABLE", 
513 			"COLUMN", "COLUMNS", "INDEX", "CONSTRAINT", "PRIMARY", "UNIQUE", "FOREIGN", 
514 			"KEY", "POSITION", "PRECISION", "FUNCTION", "TRIGGER", "PROCEDURE", "PROC", 
515 			"VIEW", "INTO", "VALUES", "WITH", "UNION", "DISTINCT", "CASE", "WHEN", 
516 			"CAST", "TRIM", "SUBSTRING", "FROM", "NATURAL", "JOIN", "FULL", "INNER", 
517 			"OUTER", "LEFT", "RIGHT", "CROSS", "USING", "WHERE", "AS", "ON", "OFF", 
518 			"IF", "ELSE", "THEN", "FOR", "TO", "AND", "OR", "IS", "NOT", "NULL", 
519 			"TRUE", "FALSE", "EXISTS", "BETWEEN", "IN", "ALL", "ANY", "LIKE", "ORDER", 
520 			"GROUP", "BY", "ASC", "DESC", "HAVING", "LIMIT", "OFFSET", "BEGIN", "COMMIT", 
521 			"ROLLBACK", "SAVEPOINT", "BOOLEAN", "DOUBLE", "CHAR", "CHARACTER", "ARRAY", 
522 			"INTERVAL", "DATE", "TIME", "TIMESTAMP", "LOCALTIME", "LOCALTIMESTAMP", 
523 			"YEAR", "QUARTER", "MONTH", "WEEK", "DAY", "HOUR", "MINUTE", "SECOND", 
524 			"MICROSECOND", "MAX", "MIN", "SUM", "COUNT", "AVG", "DEFAULT", "CURRENT", 
525 			"ENABLE", "DISABLE", "CALL", "INSTANCE", "PRESERVE", "DO", "DEFINER", 
526 			"CURRENT_USER", "SQL", "CASCADED", "LOCAL", "CLOSE", "OPEN", "NEXT", 
527 			"NAME", "COLLATION", "NAMES", "INTEGER", "REAL", "DECIMAL", "TYPE", "BIT", 
528 			"SMALLINT", "INT", "TINYINT", "NUMERIC", "FLOAT", "BIGINT", "TEXT", "VARCHAR", 
529 			"PERCENT", "TIES", "EXCEPT", "INTERSECT", "USE", "MERGE", "LOOP", "EXPAND", 
530 			"VIEWS", "FAST", "FORCE", "KEEP", "PLAN", "OPTIMIZE", "SIMPLE", "FORCED", 
531 			"HINT", "READ_ONLY", "DATABASE", "DECLARE", "CURSOR", "OF", "RETURNS", 
532 			"DATEPART", "RETURN", "READONLY", "AT", "PASSWORD", "WITHOUT", "APPLY", 
533 			"KEEPIDENTITY", "KEEPDEFAULTS", "HOLDLOCK", "IGNORE_CONSTRAINTS", "IGNORE_TRIGGERS", 
534 			"NOLOCK", "NOWAIT", "PAGLOCK", "READCOMMITTED", "READCOMMITTEDLOCK", 
535 			"READPAST", "REPEATABLEREAD", "ROWLOCK", "TABLOCK", "TABLOCKX", "UPDLOCK", 
536 			"XLOCK", "JSON_OBJECT", "JSON_ARRAY", "FIRST_VALUE", "LAST_VALUE", "APPROX_PERCENTILE_CONT", 
537 			"APPROX_PERCENTILE_DISC", "WITHIN", "OPENDATASOURCE", "FOR_GENERATOR", 
538 			"BINARY", "ESCAPE", "HIDDEN_", "MOD", "PARTITION", "PARTITIONS", "TOP", 
539 			"ROW", "ROWS", "UNKNOWN", "XOR", "ALWAYS", "CASCADE", "CHECK", "GENERATED", 
540 			"NO", "OPTION", "PRIVILEGES", "REFERENCES", "USER", "ROLE", "START", 
541 			"TRANSACTION", "ACTION", "ALGORITHM", "AUTO", "BLOCKERS", "CLUSTERED", 
542 			"NONCLUSTERED", "COLLATE", "COLUMNSTORE", "CONTENT", "CONVERT", "YEARS", 
543 			"MONTHS", "WEEKS", "DAYS", "MINUTES", "DENY", "DETERMINISTIC", "DISTRIBUTION", 
544 			"DOCUMENT", "DURABILITY", "ENCRYPTED", "END", "FILESTREAM", "FILETABLE", 
545 			"FILLFACTOR", "FOLLOWING", "HASH", "HEAP", "IDENTITY", "INBOUND", "OUTBOUND", 
546 			"UNBOUNDED", "INFINITE", "LOGIN", "MASKED", "MAXDOP", "MOVE", "NOCHECK", 
547 			"NONE", "OBJECT", "ONLINE", "OVER", "PAGE", "PAUSED", "PERIOD", "PERSISTED", 
548 			"PRECEDING", "RANDOMIZED", "RANGE", "REBUILD", "REPLICATE", "REPLICATION", 
549 			"RESUMABLE", "ROWGUIDCOL", "SAVE", "SELF", "SPARSE", "SWITCH", "TRAN", 
550 			"TRANCOUNT", "ZONE", "EXECUTE", "EXEC", "SESSION", "CONNECT", "CONNECTION", 
551 			"CATALOG", "CONTROL", "CONCAT", "TAKE", "OWNERSHIP", "DEFINITION", "APPLICATION", 
552 			"ASSEMBLY", "SYMMETRIC", "ASYMMETRIC", "SERVER", "RECEIVE", "CHANGE", 
553 			"TRACE", "TRACKING", "RESOURCES", "SETTINGS", "STATE", "AVAILABILITY", 
554 			"CREDENTIAL", "ENDPOINT", "EVENT", "NOTIFICATION", "LINKED", "AUDIT", 
555 			"DDL", "XML", "IMPERSONATE", "SECURABLES", "AUTHENTICATE", "EXTERNAL", 
556 			"ACCESS", "ADMINISTER", "BULK", "OPERATIONS", "UNSAFE", "SHUTDOWN", "SCOPED", 
557 			"CONFIGURATION", "DATASPACE", "SERVICE", "CERTIFICATE", "CONTRACT", "ENCRYPTION", 
558 			"MASTER", "DATA", "SOURCE", "FILE", "FORMAT", "LIBRARY", "FULLTEXT", 
559 			"MASK", "UNMASK", "MESSAGE", "REMOTE", "BINDING", "ROUTE", "SECURITY", 
560 			"POLICY", "AGGREGATE", "QUEUE", "RULE", "SYNONYM", "COLLECTION", "SCRIPT", 
561 			"KILL", "BACKUP", "LOG", "SHOWPLAN", "SUBSCRIBE", "QUERY", "NOTIFICATIONS", 
562 			"CHECKPOINT", "SEQUENCE", "ABORT_AFTER_WAIT", "ALLOW_PAGE_LOCKS", "ALLOW_ROW_LOCKS", 
563 			"ALL_SPARSE_COLUMNS", "BUCKET_COUNT", "COLUMNSTORE_ARCHIVE", "COLUMN_ENCRYPTION_KEY", 
564 			"COLUMN_SET", "COMPRESSION_DELAY", "DATABASE_DEAULT", "DATA_COMPRESSION", 
565 			"DATA_CONSISTENCY_CHECK", "ENCRYPTION_TYPE", "SYSTEM_TIME", "SYSTEM_VERSIONING", 
566 			"TEXTIMAGE_ON", "WAIT_AT_LOW_PRIORITY", "STATISTICS_INCREMENTAL", "STATISTICS_NORECOMPUTE", 
567 			"ROUND_ROBIN", "SCHEMA_AND_DATA", "SCHEMA_ONLY", "SORT_IN_TEMPDB", "IGNORE_DUP_KEY", 
568 			"IMPLICIT_TRANSACTIONS", "MAX_DURATION", "MEMORY_OPTIMIZED", "MIGRATION_STATE", 
569 			"PAD_INDEX", "REMOTE_DATA_ARCHIVE", "FILESTREAM_ON", "FILETABLE_COLLATE_FILENAME", 
570 			"FILETABLE_DIRECTORY", "FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME", "FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME", 
571 			"FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME", "FILTER_PREDICATE", "HISTORY_RETENTION_PERIOD", 
572 			"HISTORY_TABLE", "LOCK_ESCALATION", "DROP_EXISTING", "ROW_NUMBER", "FETCH", 
573 			"FIRST", "ONLY", "MONEY", "SMALLMONEY", "DATETIMEOFFSET", "DATETIME", 
574 			"DATETIME2", "SMALLDATETIME", "NCHAR", "NVARCHAR", "NTEXT", "VARBINARY", 
575 			"IMAGE", "SQL_VARIANT", "UNIQUEIDENTIFIER", "HIERARCHYID", "GEOMETRY", 
576 			"GEOGRAPHY", "OUTPUT", "INSERTED", "DELETED", "ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS", 
577 			"ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES", "DISABLE_BATCH_MODE_ADAPTIVE_JOINS", 
578 			"DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK", "DISABLE_DEFERRED_COMPILATION_TV", 
579 			"DISABLE_INTERLEAVED_EXECUTION_TVF", "DISABLE_OPTIMIZED_NESTED_LOOP", 
580 			"DISABLE_OPTIMIZER_ROWGOAL", "DISABLE_PARAMETER_SNIFFING", "DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK", 
581 			"DISABLE_TSQL_SCALAR_UDF_INLINING", "DISALLOW_BATCH_MODE", "ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS", 
582 			"ENABLE_QUERY_OPTIMIZER_HOTFIXES", "FORCE_DEFAULT_CARDINALITY_ESTIMATION", 
583 			"FORCE_LEGACY_CARDINALITY_ESTIMATION", "QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n", 
584 			"QUERY_PLAN_PROFILE", "EXTERNALPUSHDOWN", "SCALEOUTEXECUTION", "IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX", 
585 			"KEEPFIXED", "MAX_GRANT_PERCENT", "MIN_GRANT_PERCENT", "MAXRECURSION", 
586 			"NO_PERFORMANCE_SPOOL", "PARAMETERIZATION", "QUERYTRACEON", "RECOMPILE", 
587 			"ROBUST", "OPTIMIZE_FOR_SEQUENTIAL_KEY", "DATA_DELETION", "FILTER_COLUMN", 
588 			"RETENTION_PERIOD", "CONTAINMENT", "PARTIAL", "FILENAME", "SIZE", "MAXSIZE", 
589 			"FILEGROWTH", "UNLIMITED", "KB", "MB", "GB", "TB", "CONTAINS", "MEMORY_OPTIMIZED_DATA", 
590 			"FILEGROUP", "NON_TRANSACTED_ACCESS", "DB_CHAINING", "TRUSTWORTHY", "FORWARD_ONLY", 
591 			"SCROLL", "STATIC", "KEYSET", "DYNAMIC", "FAST_FORWARD", "SCROLL_LOCKS", 
592 			"OPTIMISTIC", "TYPE_WARNING", "SCHEMABINDING", "CALLER", "INPUT", "CALLED", 
593 			"VARYING", "OUT", "OWNER", "ATOMIC", "LANGUAGE", "LEVEL", "ISOLATION", 
594 			"SNAPSHOT", "REPEATABLE", "READ", "SERIALIZABLE", "NATIVE_COMPILATION", 
595 			"VIEW_METADATA", "AFTER", "INSTEAD", "APPEND", "INCREMENT", "CYCLE", 
596 			"CACHE", "MINVALUE", "MAXVALUE", "RESTART", "LOB_COMPACTION", "COMPRESS_ALL_ROW_GROUPS", 
597 			"REORGANIZE", "RESUME", "PAUSE", "ABORT", "INCLUDE", "DISTRIBUTED", "MARK", 
598 			"WORK", "REMOVE", "AUTOGROW_SINGLE_FILE", "AUTOGROW_ALL_FILES", "READWRITE", 
599 			"READ_WRITE", "MODIFY", "ACCELERATED_DATABASE_RECOVERY", "PERSISTENT_VERSION_STORE_FILEGROUP", 
600 			"IMMEDIATE", "NO_WAIT", "TARGET_RECOVERY_TIME", "SECONDS", "HONOR_BROKER_PRIORITY", 
601 			"ERROR_BROKER_CONVERSATIONS", "NEW_BROKER", "DISABLE_BROKER", "ENABLE_BROKER", 
602 			"MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT", "READ_COMMITTED_SNAPSHOT", "ALLOW_SNAPSHOT_ISOLATION", 
603 			"RECURSIVE_TRIGGERS", "QUOTED_IDENTIFIER", "NUMERIC_ROUNDABORT", "CONCAT_NULL_YIELDS_NULL", 
604 			"COMPATIBILITY_LEVEL", "ARITHABORT", "ANSI_WARNINGS", "ANSI_PADDING", 
605 			"ANSI_NULLS", "ANSI_NULL_DEFAULT", "PAGE_VERIFY", "CHECKSUM", "TORN_PAGE_DETECTION", 
606 			"BULK_LOGGED", "RECOVERY", "TOTAL_EXECUTION_CPU_TIME_MS", "TOTAL_COMPILE_CPU_TIME_MS", 
607 			"STALE_CAPTURE_POLICY_THRESHOLD", "EXECUTION_COUNT", "QUERY_CAPTURE_POLICY", 
608 			"WAIT_STATS_CAPTURE_MODE", "MAX_PLANS_PER_QUERY", "QUERY_CAPTURE_MODE", 
609 			"SIZE_BASED_CLEANUP_MODE", "INTERVAL_LENGTH_MINUTES", "MAX_STORAGE_SIZE_MB", 
610 			"DATA_FLUSH_INTERVAL_SECONDS", "CLEANUP_POLICY", "CUSTOM", "STALE_QUERY_THRESHOLD_DAYS", 
611 			"OPERATION_MODE", "QUERY_STORE", "CURSOR_DEFAULT", "GLOBAL", "CURSOR_CLOSE_ON_COMMIT", 
612 			"HOURS", "CHANGE_RETENTION", "AUTO_CLEANUP", "CHANGE_TRACKING", "AUTOMATIC_TUNING", 
613 			"FORCE_LAST_GOOD_PLAN", "AUTO_UPDATE_STATISTICS_ASYNC", "AUTO_UPDATE_STATISTICS", 
614 			"AUTO_SHRINK", "AUTO_CREATE_STATISTICS", "INCREMENTAL", "AUTO_CLOSE", 
615 			"DATA_RETENTION", "TEMPORAL_HISTORY_RETENTION", "EDITION", "MIXED_PAGE_ALLOCATION", 
616 			"DISABLED", "ALLOWED", "HADR", "MULTI_USER", "RESTRICTED_USER", "SINGLE_USER", 
617 			"OFFLINE", "EMERGENCY", "SUSPEND", "DATE_CORRELATION_OPTIMIZATION", "ELASTIC_POOL", 
618 			"SERVICE_OBJECTIVE", "DATABASE_NAME", "ALLOW_CONNECTIONS", "GEO", "NAMED", 
619 			"DATEFIRST", "BACKUP_STORAGE_REDUNDANCY", "FORCE_FAILOVER_ALLOW_DATA_LOSS", 
620 			"SECONDARY", "FAILOVER", "DEFAULT_FULLTEXT_LANGUAGE", "DEFAULT_LANGUAGE", 
621 			"INLINE", "NESTED_TRIGGERS", "TRANSFORM_NOISE_WORDS", "TWO_DIGIT_YEAR_CUTOFF", 
622 			"PERSISTENT_LOG_BUFFER", "DIRECTORY_NAME", "DATEFORMAT", "DELAYED_DURABILITY", 
623 			"AUTHORIZATION", "TRANSFER", "EXPLAIN", "WITH_RECOMMENDATIONS", "BATCH_SIZE", 
624 			"SETUSER", "NORESET", "DEFAULT_SCHEMA", "ALLOW_ENCRYPTED_VALUE_MODIFICATIONS", 
625 			"OLD_PASSWORD", "PROVIDER", "SID", "UNCOMMITTED", "COMMITTED", "STOPLIST", 
626 			"SEARCH", "PROPERTY", "LIST", "SEND", "MEMBER", "HASHED", "MUST_CHANGE", 
627 			"DEFAULT_DATABASE", "CHECK_EXPIRATION", "CHECK_POLICY", "WINDOWS", "UNLOCK", 
628 			"REVERT", "COOKIE", "BROWSE", "RAW", "XMLDATA", "XMLSCHEMA", "ELEMENTS", 
629 			"XSINIL", "ABSENT", "EXPLICIT", "PATH", "BASE64", "ROOT", "JSON", "INCLUDE_NULL_VALUES", 
630 			"WITHOUT_ARRAY_WRAPPER", "XMLNAMESPACES", "STATISTICS", "FULLSCAN", "SAMPLE", 
631 			"RESAMPLE", "NORECOMPUTE", "AUTO_DROP", "PERSIST_SAMPLE_PERCENT", "OPENJSON", 
632 			"OPENROWSET", "TRY_CAST", "TRY_CONVERT", "IDENTIFIER_", "DELIMITED_IDENTIFIER_", 
633 			"STRING_", "NUMBER_", "INT_NUM_", "FLOAT_NUM_", "DECIMAL_NUM_", "HEX_DIGIT_", 
634 			"BIT_NUM_", "NCHAR_TEXT", "RESPECT", "IGNORE", "NULLS"
635 		};
636 	}
637 	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
638 	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
639 
640 	/**
641 	 * @deprecated Use {@link #VOCABULARY} instead.
642 	 */
643 	@Deprecated
644 	public static final String[] tokenNames;
645 	static {
646 		tokenNames = new String[_SYMBOLIC_NAMES.length];
647 		for (int i = 0; i < tokenNames.length; i++) {
648 			tokenNames[i] = VOCABULARY.getLiteralName(i);
649 			if (tokenNames[i] == null) {
650 				tokenNames[i] = VOCABULARY.getSymbolicName(i);
651 			}
652 
653 			if (tokenNames[i] == null) {
654 				tokenNames[i] = "<INVALID>";
655 			}
656 		}
657 	}
658 
659 	@Override
660 	@Deprecated
661 	public String[] getTokenNames() {
662 		return tokenNames;
663 	}
664 
665 	@Override
666 
667 	public Vocabulary getVocabulary() {
668 		return VOCABULARY;
669 	}
670 
671 	@Override
672 	public String getGrammarFileName() { return "SQLServerStatement.g4"; }
673 
674 	@Override
675 	public String[] getRuleNames() { return ruleNames; }
676 
677 	@Override
678 	public String getSerializedATN() { return _serializedATN; }
679 
680 	@Override
681 	public ATN getATN() { return _ATN; }
682 
683 	public SQLServerStatementParser(TokenStream input) {
684 		super(input);
685 		_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
686 	}
687 
688 	public static class ExecuteContext extends ParserRuleContext {
689 		public SelectContext select() {
690 			return getRuleContext(SelectContext.class,0);
691 		}
692 		public InsertContext insert() {
693 			return getRuleContext(InsertContext.class,0);
694 		}
695 		public UpdateContext update() {
696 			return getRuleContext(UpdateContext.class,0);
697 		}
698 		public DeleteContext delete() {
699 			return getRuleContext(DeleteContext.class,0);
700 		}
701 		public CreateIndexContext createIndex() {
702 			return getRuleContext(CreateIndexContext.class,0);
703 		}
704 		public AlterIndexContext alterIndex() {
705 			return getRuleContext(AlterIndexContext.class,0);
706 		}
707 		public DropIndexContext dropIndex() {
708 			return getRuleContext(DropIndexContext.class,0);
709 		}
710 		public CreateTableContext createTable() {
711 			return getRuleContext(CreateTableContext.class,0);
712 		}
713 		public CreateDatabaseContext createDatabase() {
714 			return getRuleContext(CreateDatabaseContext.class,0);
715 		}
716 		public CreateProcedureContext createProcedure() {
717 			return getRuleContext(CreateProcedureContext.class,0);
718 		}
719 		public CreateViewContext createView() {
720 			return getRuleContext(CreateViewContext.class,0);
721 		}
722 		public CreateTriggerContext createTrigger() {
723 			return getRuleContext(CreateTriggerContext.class,0);
724 		}
725 		public CreateSequenceContext createSequence() {
726 			return getRuleContext(CreateSequenceContext.class,0);
727 		}
728 		public CreateServiceContext createService() {
729 			return getRuleContext(CreateServiceContext.class,0);
730 		}
731 		public CreateSchemaContext createSchema() {
732 			return getRuleContext(CreateSchemaContext.class,0);
733 		}
734 		public AlterTableContext alterTable() {
735 			return getRuleContext(AlterTableContext.class,0);
736 		}
737 		public AlterTriggerContext alterTrigger() {
738 			return getRuleContext(AlterTriggerContext.class,0);
739 		}
740 		public AlterSequenceContext alterSequence() {
741 			return getRuleContext(AlterSequenceContext.class,0);
742 		}
743 		public AlterDatabaseContext alterDatabase() {
744 			return getRuleContext(AlterDatabaseContext.class,0);
745 		}
746 		public AlterServiceContext alterService() {
747 			return getRuleContext(AlterServiceContext.class,0);
748 		}
749 		public AlterSchemaContext alterSchema() {
750 			return getRuleContext(AlterSchemaContext.class,0);
751 		}
752 		public AlterViewContext alterView() {
753 			return getRuleContext(AlterViewContext.class,0);
754 		}
755 		public DropTableContext dropTable() {
756 			return getRuleContext(DropTableContext.class,0);
757 		}
758 		public DropDatabaseContext dropDatabase() {
759 			return getRuleContext(DropDatabaseContext.class,0);
760 		}
761 		public DropFunctionContext dropFunction() {
762 			return getRuleContext(DropFunctionContext.class,0);
763 		}
764 		public DropProcedureContext dropProcedure() {
765 			return getRuleContext(DropProcedureContext.class,0);
766 		}
767 		public DropViewContext dropView() {
768 			return getRuleContext(DropViewContext.class,0);
769 		}
770 		public DropTriggerContext dropTrigger() {
771 			return getRuleContext(DropTriggerContext.class,0);
772 		}
773 		public DropSequenceContext dropSequence() {
774 			return getRuleContext(DropSequenceContext.class,0);
775 		}
776 		public DropServiceContext dropService() {
777 			return getRuleContext(DropServiceContext.class,0);
778 		}
779 		public DropSchemaContext dropSchema() {
780 			return getRuleContext(DropSchemaContext.class,0);
781 		}
782 		public TruncateTableContext truncateTable() {
783 			return getRuleContext(TruncateTableContext.class,0);
784 		}
785 		public CreateFunctionContext createFunction() {
786 			return getRuleContext(CreateFunctionContext.class,0);
787 		}
788 		public SetTransactionContext setTransaction() {
789 			return getRuleContext(SetTransactionContext.class,0);
790 		}
791 		public BeginTransactionContext beginTransaction() {
792 			return getRuleContext(BeginTransactionContext.class,0);
793 		}
794 		public BeginDistributedTransactionContext beginDistributedTransaction() {
795 			return getRuleContext(BeginDistributedTransactionContext.class,0);
796 		}
797 		public SetImplicitTransactionsContext setImplicitTransactions() {
798 			return getRuleContext(SetImplicitTransactionsContext.class,0);
799 		}
800 		public CommitContext commit() {
801 			return getRuleContext(CommitContext.class,0);
802 		}
803 		public CommitWorkContext commitWork() {
804 			return getRuleContext(CommitWorkContext.class,0);
805 		}
806 		public RollbackContext rollback() {
807 			return getRuleContext(RollbackContext.class,0);
808 		}
809 		public RollbackWorkContext rollbackWork() {
810 			return getRuleContext(RollbackWorkContext.class,0);
811 		}
812 		public SavepointContext savepoint() {
813 			return getRuleContext(SavepointContext.class,0);
814 		}
815 		public GrantContext grant() {
816 			return getRuleContext(GrantContext.class,0);
817 		}
818 		public RevokeContext revoke() {
819 			return getRuleContext(RevokeContext.class,0);
820 		}
821 		public DenyContext deny() {
822 			return getRuleContext(DenyContext.class,0);
823 		}
824 		public CreateUserContext createUser() {
825 			return getRuleContext(CreateUserContext.class,0);
826 		}
827 		public DropUserContext dropUser() {
828 			return getRuleContext(DropUserContext.class,0);
829 		}
830 		public AlterUserContext alterUser() {
831 			return getRuleContext(AlterUserContext.class,0);
832 		}
833 		public CreateRoleContext createRole() {
834 			return getRuleContext(CreateRoleContext.class,0);
835 		}
836 		public DropRoleContext dropRole() {
837 			return getRuleContext(DropRoleContext.class,0);
838 		}
839 		public AlterRoleContext alterRole() {
840 			return getRuleContext(AlterRoleContext.class,0);
841 		}
842 		public CreateLoginContext createLogin() {
843 			return getRuleContext(CreateLoginContext.class,0);
844 		}
845 		public DropLoginContext dropLogin() {
846 			return getRuleContext(DropLoginContext.class,0);
847 		}
848 		public AlterLoginContext alterLogin() {
849 			return getRuleContext(AlterLoginContext.class,0);
850 		}
851 		public CallContext call() {
852 			return getRuleContext(CallContext.class,0);
853 		}
854 		public ExplainContext explain() {
855 			return getRuleContext(ExplainContext.class,0);
856 		}
857 		public SetUserContext setUser() {
858 			return getRuleContext(SetUserContext.class,0);
859 		}
860 		public RevertContext revert() {
861 			return getRuleContext(RevertContext.class,0);
862 		}
863 		public UpdateStatisticsContext updateStatistics() {
864 			return getRuleContext(UpdateStatisticsContext.class,0);
865 		}
866 		public TerminalNode SEMI_() { return getToken(SQLServerStatementParser.SEMI_, 0); }
867 		public ExecuteContext(ParserRuleContext parent, int invokingState) {
868 			super(parent, invokingState);
869 		}
870 		@Override public int getRuleIndex() { return RULE_execute; }
871 		@Override
872 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
873 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExecute(this);
874 			else return visitor.visitChildren(this);
875 		}
876 	}
877 
878 	public final ExecuteContext execute() throws RecognitionException {
879 		ExecuteContext _localctx = new ExecuteContext(_ctx, getState());
880 		enterRule(_localctx, 0, RULE_execute);
881 		int _la;
882 		try {
883 			enterOuterAlt(_localctx, 1);
884 			{
885 			setState(1069);
886 			_errHandler.sync(this);
887 			switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
888 			case 1:
889 				{
890 				setState(1010);
891 				select();
892 				}
893 				break;
894 			case 2:
895 				{
896 				setState(1011);
897 				insert();
898 				}
899 				break;
900 			case 3:
901 				{
902 				setState(1012);
903 				update();
904 				}
905 				break;
906 			case 4:
907 				{
908 				setState(1013);
909 				delete();
910 				}
911 				break;
912 			case 5:
913 				{
914 				setState(1014);
915 				createIndex();
916 				}
917 				break;
918 			case 6:
919 				{
920 				setState(1015);
921 				alterIndex();
922 				}
923 				break;
924 			case 7:
925 				{
926 				setState(1016);
927 				dropIndex();
928 				}
929 				break;
930 			case 8:
931 				{
932 				setState(1017);
933 				createTable();
934 				}
935 				break;
936 			case 9:
937 				{
938 				setState(1018);
939 				createDatabase();
940 				}
941 				break;
942 			case 10:
943 				{
944 				setState(1019);
945 				createProcedure();
946 				}
947 				break;
948 			case 11:
949 				{
950 				setState(1020);
951 				createView();
952 				}
953 				break;
954 			case 12:
955 				{
956 				setState(1021);
957 				createTrigger();
958 				}
959 				break;
960 			case 13:
961 				{
962 				setState(1022);
963 				createSequence();
964 				}
965 				break;
966 			case 14:
967 				{
968 				setState(1023);
969 				createService();
970 				}
971 				break;
972 			case 15:
973 				{
974 				setState(1024);
975 				createSchema();
976 				}
977 				break;
978 			case 16:
979 				{
980 				setState(1025);
981 				alterTable();
982 				}
983 				break;
984 			case 17:
985 				{
986 				setState(1026);
987 				alterTrigger();
988 				}
989 				break;
990 			case 18:
991 				{
992 				setState(1027);
993 				alterSequence();
994 				}
995 				break;
996 			case 19:
997 				{
998 				setState(1028);
999 				alterDatabase();
1000 				}
1001 				break;
1002 			case 20:
1003 				{
1004 				setState(1029);
1005 				alterService();
1006 				}
1007 				break;
1008 			case 21:
1009 				{
1010 				setState(1030);
1011 				alterSchema();
1012 				}
1013 				break;
1014 			case 22:
1015 				{
1016 				setState(1031);
1017 				alterView();
1018 				}
1019 				break;
1020 			case 23:
1021 				{
1022 				setState(1032);
1023 				dropTable();
1024 				}
1025 				break;
1026 			case 24:
1027 				{
1028 				setState(1033);
1029 				dropDatabase();
1030 				}
1031 				break;
1032 			case 25:
1033 				{
1034 				setState(1034);
1035 				dropFunction();
1036 				}
1037 				break;
1038 			case 26:
1039 				{
1040 				setState(1035);
1041 				dropProcedure();
1042 				}
1043 				break;
1044 			case 27:
1045 				{
1046 				setState(1036);
1047 				dropView();
1048 				}
1049 				break;
1050 			case 28:
1051 				{
1052 				setState(1037);
1053 				dropTrigger();
1054 				}
1055 				break;
1056 			case 29:
1057 				{
1058 				setState(1038);
1059 				dropSequence();
1060 				}
1061 				break;
1062 			case 30:
1063 				{
1064 				setState(1039);
1065 				dropService();
1066 				}
1067 				break;
1068 			case 31:
1069 				{
1070 				setState(1040);
1071 				dropSchema();
1072 				}
1073 				break;
1074 			case 32:
1075 				{
1076 				setState(1041);
1077 				truncateTable();
1078 				}
1079 				break;
1080 			case 33:
1081 				{
1082 				setState(1042);
1083 				createFunction();
1084 				}
1085 				break;
1086 			case 34:
1087 				{
1088 				setState(1043);
1089 				setTransaction();
1090 				}
1091 				break;
1092 			case 35:
1093 				{
1094 				setState(1044);
1095 				beginTransaction();
1096 				}
1097 				break;
1098 			case 36:
1099 				{
1100 				setState(1045);
1101 				beginDistributedTransaction();
1102 				}
1103 				break;
1104 			case 37:
1105 				{
1106 				setState(1046);
1107 				setImplicitTransactions();
1108 				}
1109 				break;
1110 			case 38:
1111 				{
1112 				setState(1047);
1113 				commit();
1114 				}
1115 				break;
1116 			case 39:
1117 				{
1118 				setState(1048);
1119 				commitWork();
1120 				}
1121 				break;
1122 			case 40:
1123 				{
1124 				setState(1049);
1125 				rollback();
1126 				}
1127 				break;
1128 			case 41:
1129 				{
1130 				setState(1050);
1131 				rollbackWork();
1132 				}
1133 				break;
1134 			case 42:
1135 				{
1136 				setState(1051);
1137 				savepoint();
1138 				}
1139 				break;
1140 			case 43:
1141 				{
1142 				setState(1052);
1143 				grant();
1144 				}
1145 				break;
1146 			case 44:
1147 				{
1148 				setState(1053);
1149 				revoke();
1150 				}
1151 				break;
1152 			case 45:
1153 				{
1154 				setState(1054);
1155 				deny();
1156 				}
1157 				break;
1158 			case 46:
1159 				{
1160 				setState(1055);
1161 				createUser();
1162 				}
1163 				break;
1164 			case 47:
1165 				{
1166 				setState(1056);
1167 				dropUser();
1168 				}
1169 				break;
1170 			case 48:
1171 				{
1172 				setState(1057);
1173 				alterUser();
1174 				}
1175 				break;
1176 			case 49:
1177 				{
1178 				setState(1058);
1179 				createRole();
1180 				}
1181 				break;
1182 			case 50:
1183 				{
1184 				setState(1059);
1185 				dropRole();
1186 				}
1187 				break;
1188 			case 51:
1189 				{
1190 				setState(1060);
1191 				alterRole();
1192 				}
1193 				break;
1194 			case 52:
1195 				{
1196 				setState(1061);
1197 				createLogin();
1198 				}
1199 				break;
1200 			case 53:
1201 				{
1202 				setState(1062);
1203 				dropLogin();
1204 				}
1205 				break;
1206 			case 54:
1207 				{
1208 				setState(1063);
1209 				alterLogin();
1210 				}
1211 				break;
1212 			case 55:
1213 				{
1214 				setState(1064);
1215 				call();
1216 				}
1217 				break;
1218 			case 56:
1219 				{
1220 				setState(1065);
1221 				explain();
1222 				}
1223 				break;
1224 			case 57:
1225 				{
1226 				setState(1066);
1227 				setUser();
1228 				}
1229 				break;
1230 			case 58:
1231 				{
1232 				setState(1067);
1233 				revert();
1234 				}
1235 				break;
1236 			case 59:
1237 				{
1238 				setState(1068);
1239 				updateStatistics();
1240 				}
1241 				break;
1242 			}
1243 			setState(1072);
1244 			_errHandler.sync(this);
1245 			_la = _input.LA(1);
1246 			if (_la==SEMI_) {
1247 				{
1248 				setState(1071);
1249 				match(SEMI_);
1250 				}
1251 			}
1252 
1253 			}
1254 		}
1255 		catch (RecognitionException re) {
1256 			_localctx.exception = re;
1257 			_errHandler.reportError(this, re);
1258 			_errHandler.recover(this, re);
1259 		}
1260 		finally {
1261 			exitRule();
1262 		}
1263 		return _localctx;
1264 	}
1265 
1266 	public static class SetTransactionContext extends ParserRuleContext {
1267 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
1268 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1269 		public TerminalNode ISOLATION() { return getToken(SQLServerStatementParser.ISOLATION, 0); }
1270 		public TerminalNode LEVEL() { return getToken(SQLServerStatementParser.LEVEL, 0); }
1271 		public IsolationLevelContext isolationLevel() {
1272 			return getRuleContext(IsolationLevelContext.class,0);
1273 		}
1274 		public SetTransactionContext(ParserRuleContext parent, int invokingState) {
1275 			super(parent, invokingState);
1276 		}
1277 		@Override public int getRuleIndex() { return RULE_setTransaction; }
1278 		@Override
1279 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1280 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetTransaction(this);
1281 			else return visitor.visitChildren(this);
1282 		}
1283 	}
1284 
1285 	public final SetTransactionContext setTransaction() throws RecognitionException {
1286 		SetTransactionContext _localctx = new SetTransactionContext(_ctx, getState());
1287 		enterRule(_localctx, 2, RULE_setTransaction);
1288 		try {
1289 			enterOuterAlt(_localctx, 1);
1290 			{
1291 			setState(1074);
1292 			match(SET);
1293 			setState(1075);
1294 			match(TRANSACTION);
1295 			setState(1076);
1296 			match(ISOLATION);
1297 			setState(1077);
1298 			match(LEVEL);
1299 			setState(1078);
1300 			isolationLevel();
1301 			}
1302 		}
1303 		catch (RecognitionException re) {
1304 			_localctx.exception = re;
1305 			_errHandler.reportError(this, re);
1306 			_errHandler.recover(this, re);
1307 		}
1308 		finally {
1309 			exitRule();
1310 		}
1311 		return _localctx;
1312 	}
1313 
1314 	public static class IsolationLevelContext extends ParserRuleContext {
1315 		public TerminalNode READ() { return getToken(SQLServerStatementParser.READ, 0); }
1316 		public TerminalNode UNCOMMITTED() { return getToken(SQLServerStatementParser.UNCOMMITTED, 0); }
1317 		public TerminalNode COMMITTED() { return getToken(SQLServerStatementParser.COMMITTED, 0); }
1318 		public TerminalNode REPEATABLE() { return getToken(SQLServerStatementParser.REPEATABLE, 0); }
1319 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
1320 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
1321 		public IsolationLevelContext(ParserRuleContext parent, int invokingState) {
1322 			super(parent, invokingState);
1323 		}
1324 		@Override public int getRuleIndex() { return RULE_isolationLevel; }
1325 		@Override
1326 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1327 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIsolationLevel(this);
1328 			else return visitor.visitChildren(this);
1329 		}
1330 	}
1331 
1332 	public final IsolationLevelContext isolationLevel() throws RecognitionException {
1333 		IsolationLevelContext _localctx = new IsolationLevelContext(_ctx, getState());
1334 		enterRule(_localctx, 4, RULE_isolationLevel);
1335 		try {
1336 			setState(1088);
1337 			_errHandler.sync(this);
1338 			switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) {
1339 			case 1:
1340 				enterOuterAlt(_localctx, 1);
1341 				{
1342 				setState(1080);
1343 				match(READ);
1344 				setState(1081);
1345 				match(UNCOMMITTED);
1346 				}
1347 				break;
1348 			case 2:
1349 				enterOuterAlt(_localctx, 2);
1350 				{
1351 				setState(1082);
1352 				match(READ);
1353 				setState(1083);
1354 				match(COMMITTED);
1355 				}
1356 				break;
1357 			case 3:
1358 				enterOuterAlt(_localctx, 3);
1359 				{
1360 				setState(1084);
1361 				match(REPEATABLE);
1362 				setState(1085);
1363 				match(READ);
1364 				}
1365 				break;
1366 			case 4:
1367 				enterOuterAlt(_localctx, 4);
1368 				{
1369 				setState(1086);
1370 				match(SNAPSHOT);
1371 				}
1372 				break;
1373 			case 5:
1374 				enterOuterAlt(_localctx, 5);
1375 				{
1376 				setState(1087);
1377 				match(SERIALIZABLE);
1378 				}
1379 				break;
1380 			}
1381 		}
1382 		catch (RecognitionException re) {
1383 			_localctx.exception = re;
1384 			_errHandler.reportError(this, re);
1385 			_errHandler.recover(this, re);
1386 		}
1387 		finally {
1388 			exitRule();
1389 		}
1390 		return _localctx;
1391 	}
1392 
1393 	public static class SetImplicitTransactionsContext extends ParserRuleContext {
1394 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
1395 		public TerminalNode IMPLICIT_TRANSACTIONS() { return getToken(SQLServerStatementParser.IMPLICIT_TRANSACTIONS, 0); }
1396 		public ImplicitTransactionsValueContext implicitTransactionsValue() {
1397 			return getRuleContext(ImplicitTransactionsValueContext.class,0);
1398 		}
1399 		public SetImplicitTransactionsContext(ParserRuleContext parent, int invokingState) {
1400 			super(parent, invokingState);
1401 		}
1402 		@Override public int getRuleIndex() { return RULE_setImplicitTransactions; }
1403 		@Override
1404 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1405 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetImplicitTransactions(this);
1406 			else return visitor.visitChildren(this);
1407 		}
1408 	}
1409 
1410 	public final SetImplicitTransactionsContext setImplicitTransactions() throws RecognitionException {
1411 		SetImplicitTransactionsContext _localctx = new SetImplicitTransactionsContext(_ctx, getState());
1412 		enterRule(_localctx, 6, RULE_setImplicitTransactions);
1413 		try {
1414 			enterOuterAlt(_localctx, 1);
1415 			{
1416 			setState(1090);
1417 			match(SET);
1418 			setState(1091);
1419 			match(IMPLICIT_TRANSACTIONS);
1420 			setState(1092);
1421 			implicitTransactionsValue();
1422 			}
1423 		}
1424 		catch (RecognitionException re) {
1425 			_localctx.exception = re;
1426 			_errHandler.reportError(this, re);
1427 			_errHandler.recover(this, re);
1428 		}
1429 		finally {
1430 			exitRule();
1431 		}
1432 		return _localctx;
1433 	}
1434 
1435 	public static class ImplicitTransactionsValueContext extends ParserRuleContext {
1436 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
1437 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
1438 		public ImplicitTransactionsValueContext(ParserRuleContext parent, int invokingState) {
1439 			super(parent, invokingState);
1440 		}
1441 		@Override public int getRuleIndex() { return RULE_implicitTransactionsValue; }
1442 		@Override
1443 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1444 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitImplicitTransactionsValue(this);
1445 			else return visitor.visitChildren(this);
1446 		}
1447 	}
1448 
1449 	public final ImplicitTransactionsValueContext implicitTransactionsValue() throws RecognitionException {
1450 		ImplicitTransactionsValueContext _localctx = new ImplicitTransactionsValueContext(_ctx, getState());
1451 		enterRule(_localctx, 8, RULE_implicitTransactionsValue);
1452 		int _la;
1453 		try {
1454 			enterOuterAlt(_localctx, 1);
1455 			{
1456 			setState(1094);
1457 			_la = _input.LA(1);
1458 			if ( !(_la==ON || _la==OFF) ) {
1459 			_errHandler.recoverInline(this);
1460 			}
1461 			else {
1462 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1463 				_errHandler.reportMatch(this);
1464 				consume();
1465 			}
1466 			}
1467 		}
1468 		catch (RecognitionException re) {
1469 			_localctx.exception = re;
1470 			_errHandler.reportError(this, re);
1471 			_errHandler.recover(this, re);
1472 		}
1473 		finally {
1474 			exitRule();
1475 		}
1476 		return _localctx;
1477 	}
1478 
1479 	public static class BeginTransactionContext extends ParserRuleContext {
1480 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
1481 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1482 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1483 		public TransactionNameContext transactionName() {
1484 			return getRuleContext(TransactionNameContext.class,0);
1485 		}
1486 		public TransactionVariableNameContext transactionVariableName() {
1487 			return getRuleContext(TransactionVariableNameContext.class,0);
1488 		}
1489 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
1490 		public TerminalNode MARK() { return getToken(SQLServerStatementParser.MARK, 0); }
1491 		public StringLiteralsContext stringLiterals() {
1492 			return getRuleContext(StringLiteralsContext.class,0);
1493 		}
1494 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
1495 		public BeginTransactionContext(ParserRuleContext parent, int invokingState) {
1496 			super(parent, invokingState);
1497 		}
1498 		@Override public int getRuleIndex() { return RULE_beginTransaction; }
1499 		@Override
1500 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1501 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBeginTransaction(this);
1502 			else return visitor.visitChildren(this);
1503 		}
1504 	}
1505 
1506 	public final BeginTransactionContext beginTransaction() throws RecognitionException {
1507 		BeginTransactionContext _localctx = new BeginTransactionContext(_ctx, getState());
1508 		enterRule(_localctx, 10, RULE_beginTransaction);
1509 		int _la;
1510 		try {
1511 			enterOuterAlt(_localctx, 1);
1512 			{
1513 			setState(1096);
1514 			match(BEGIN);
1515 			setState(1097);
1516 			_la = _input.LA(1);
1517 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1518 			_errHandler.recoverInline(this);
1519 			}
1520 			else {
1521 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1522 				_errHandler.reportMatch(this);
1523 				consume();
1524 			}
1525 			setState(1110);
1526 			_errHandler.sync(this);
1527 			_la = _input.LA(1);
1528 			if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (TRIM - 53)) | (1L << (SUBSTRING - 53)) | (1L << (RIGHT - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (TIMESTAMP - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (YEAR - 118)) | (1L << (QUARTER - 118)) | (1L << (MONTH - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)))) != 0) || ((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (TOP - 248)) | (1L << (ROW - 248)) | (1L << (ROWS - 248)) | (1L << (XOR - 248)) | (1L << (ALWAYS - 248)) | (1L << (USER - 248)) | (1L << (ROLE - 248)) | (1L << (START - 248)) | (1L << (ALGORITHM - 248)) | (1L << (AUTO - 248)) | (1L << (BLOCKERS - 248)) | (1L << (CLUSTERED - 248)) | (1L << (NONCLUSTERED - 248)) | (1L << (COLUMNSTORE - 248)) | (1L << (CONTENT - 248)) | (1L << (YEARS - 248)) | (1L << (MONTHS - 248)) | (1L << (WEEKS - 248)) | (1L << (DAYS - 248)) | (1L << (MINUTES - 248)) | (1L << (DENY - 248)) | (1L << (DETERMINISTIC - 248)) | (1L << (DISTRIBUTION - 248)) | (1L << (DOCUMENT - 248)) | (1L << (DURABILITY - 248)) | (1L << (ENCRYPTED - 248)) | (1L << (FILESTREAM - 248)) | (1L << (FILETABLE - 248)) | (1L << (FILLFACTOR - 248)) | (1L << (FOLLOWING - 248)) | (1L << (HASH - 248)) | (1L << (HEAP - 248)) | (1L << (INBOUND - 248)) | (1L << (OUTBOUND - 248)) | (1L << (UNBOUNDED - 248)) | (1L << (INFINITE - 248)) | (1L << (LOGIN - 248)) | (1L << (MASKED - 248)) | (1L << (MAXDOP - 248)) | (1L << (MOVE - 248)) | (1L << (NOCHECK - 248)) | (1L << (OBJECT - 248)) | (1L << (ONLINE - 248)) | (1L << (OVER - 248)) | (1L << (PAGE - 248)) | (1L << (PAUSED - 248)) | (1L << (PERIOD - 248)) | (1L << (PERSISTED - 248)) | (1L << (PRECEDING - 248)))) != 0) || ((((_la - 312)) & ~0x3f) == 0 && ((1L << (_la - 312)) & ((1L << (RANDOMIZED - 312)) | (1L << (RANGE - 312)) | (1L << (REBUILD - 312)) | (1L << (REPLICATE - 312)) | (1L << (REPLICATION - 312)) | (1L << (RESUMABLE - 312)) | (1L << (ROWGUIDCOL - 312)) | (1L << (SAVE - 312)) | (1L << (SELF - 312)) | (1L << (SPARSE - 312)) | (1L << (SWITCH - 312)) | (1L << (TRAN - 312)) | (1L << (TRANCOUNT - 312)) | (1L << (CONTROL - 312)) | (1L << (CONCAT - 312)) | (1L << (TAKE - 312)) | (1L << (OWNERSHIP - 312)) | (1L << (DEFINITION - 312)) | (1L << (APPLICATION - 312)) | (1L << (ASSEMBLY - 312)) | (1L << (SYMMETRIC - 312)) | (1L << (ASYMMETRIC - 312)) | (1L << (SERVER - 312)) | (1L << (RECEIVE - 312)) | (1L << (CHANGE - 312)) | (1L << (TRACE - 312)) | (1L << (TRACKING - 312)) | (1L << (RESOURCES - 312)) | (1L << (SETTINGS - 312)) | (1L << (STATE - 312)) | (1L << (AVAILABILITY - 312)) | (1L << (CREDENTIAL - 312)) | (1L << (ENDPOINT - 312)) | (1L << (EVENT - 312)) | (1L << (NOTIFICATION - 312)) | (1L << (LINKED - 312)) | (1L << (AUDIT - 312)) | (1L << (DDL - 312)) | (1L << (XML - 312)) | (1L << (IMPERSONATE - 312)) | (1L << (SECURABLES - 312)) | (1L << (AUTHENTICATE - 312)) | (1L << (EXTERNAL - 312)) | (1L << (ACCESS - 312)) | (1L << (ADMINISTER - 312)) | (1L << (BULK - 312)) | (1L << (OPERATIONS - 312)) | (1L << (UNSAFE - 312)) | (1L << (SHUTDOWN - 312)) | (1L << (SCOPED - 312)) | (1L << (CONFIGURATION - 312)) | (1L << (DATASPACE - 312)) | (1L << (SERVICE - 312)) | (1L << (CERTIFICATE - 312)) | (1L << (CONTRACT - 312)) | (1L << (ENCRYPTION - 312)) | (1L << (MASTER - 312)))) != 0) || ((((_la - 376)) & ~0x3f) == 0 && ((1L << (_la - 376)) & ((1L << (DATA - 376)) | (1L << (SOURCE - 376)) | (1L << (FILE - 376)) | (1L << (FORMAT - 376)) | (1L << (LIBRARY - 376)) | (1L << (FULLTEXT - 376)) | (1L << (MASK - 376)) | (1L << (UNMASK - 376)) | (1L << (MESSAGE - 376)) | (1L << (REMOTE - 376)) | (1L << (BINDING - 376)) | (1L << (ROUTE - 376)) | (1L << (SECURITY - 376)) | (1L << (POLICY - 376)) | (1L << (AGGREGATE - 376)) | (1L << (QUEUE - 376)) | (1L << (RULE - 376)) | (1L << (SYNONYM - 376)) | (1L << (COLLECTION - 376)) | (1L << (SCRIPT - 376)) | (1L << (KILL - 376)) | (1L << (BACKUP - 376)) | (1L << (LOG - 376)) | (1L << (SHOWPLAN - 376)) | (1L << (SUBSCRIBE - 376)) | (1L << (QUERY - 376)) | (1L << (NOTIFICATIONS - 376)) | (1L << (CHECKPOINT - 376)) | (1L << (SEQUENCE - 376)) | (1L << (ABORT_AFTER_WAIT - 376)) | (1L << (ALLOW_PAGE_LOCKS - 376)) | (1L << (ALLOW_ROW_LOCKS - 376)) | (1L << (ALL_SPARSE_COLUMNS - 376)) | (1L << (BUCKET_COUNT - 376)) | (1L << (COLUMNSTORE_ARCHIVE - 376)) | (1L << (COLUMN_ENCRYPTION_KEY - 376)) | (1L << (COLUMN_SET - 376)) | (1L << (COMPRESSION_DELAY - 376)) | (1L << (DATABASE_DEAULT - 376)) | (1L << (DATA_COMPRESSION - 376)) | (1L << (DATA_CONSISTENCY_CHECK - 376)) | (1L << (ENCRYPTION_TYPE - 376)) | (1L << (SYSTEM_TIME - 376)) | (1L << (SYSTEM_VERSIONING - 376)) | (1L << (TEXTIMAGE_ON - 376)) | (1L << (WAIT_AT_LOW_PRIORITY - 376)) | (1L << (STATISTICS_INCREMENTAL - 376)) | (1L << (STATISTICS_NORECOMPUTE - 376)) | (1L << (ROUND_ROBIN - 376)) | (1L << (SCHEMA_AND_DATA - 376)) | (1L << (SCHEMA_ONLY - 376)) | (1L << (SORT_IN_TEMPDB - 376)) | (1L << (IGNORE_DUP_KEY - 376)) | (1L << (IMPLICIT_TRANSACTIONS - 376)) | (1L << (MAX_DURATION - 376)) | (1L << (MEMORY_OPTIMIZED - 376)) | (1L << (MIGRATION_STATE - 376)) | (1L << (PAD_INDEX - 376)) | (1L << (REMOTE_DATA_ARCHIVE - 376)) | (1L << (FILESTREAM_ON - 376)) | (1L << (FILETABLE_COLLATE_FILENAME - 376)) | (1L << (FILETABLE_DIRECTORY - 376)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 376)))) != 0) || ((((_la - 440)) & ~0x3f) == 0 && ((1L << (_la - 440)) & ((1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 440)) | (1L << (FILTER_PREDICATE - 440)) | (1L << (HISTORY_RETENTION_PERIOD - 440)) | (1L << (HISTORY_TABLE - 440)) | (1L << (LOCK_ESCALATION - 440)) | (1L << (DROP_EXISTING - 440)) | (1L << (ROW_NUMBER - 440)) | (1L << (FIRST - 440)) | (1L << (DATETIME2 - 440)) | (1L << (OUTPUT - 440)) | (1L << (INSERTED - 440)) | (1L << (DELETED - 440)))) != 0) || ((((_la - 505)) & ~0x3f) == 0 && ((1L << (_la - 505)) & ((1L << (FILENAME - 505)) | (1L << (SIZE - 505)) | (1L << (MAXSIZE - 505)) | (1L << (FILEGROWTH - 505)) | (1L << (UNLIMITED - 505)) | (1L << (KB - 505)) | (1L << (MB - 505)) | (1L << (GB - 505)) | (1L << (TB - 505)) | (1L << (CONTAINS - 505)) | (1L << (MEMORY_OPTIMIZED_DATA - 505)) | (1L << (FILEGROUP - 505)) | (1L << (NON_TRANSACTED_ACCESS - 505)) | (1L << (DB_CHAINING - 505)) | (1L << (TRUSTWORTHY - 505)) | (1L << (FORWARD_ONLY - 505)) | (1L << (KEYSET - 505)) | (1L << (FAST_FORWARD - 505)) | (1L << (SCROLL_LOCKS - 505)) | (1L << (OPTIMISTIC - 505)) | (1L << (TYPE_WARNING - 505)) | (1L << (SCHEMABINDING - 505)) | (1L << (CALLER - 505)) | (1L << (INPUT - 505)) | (1L << (OWNER - 505)) | (1L << (SNAPSHOT - 505)) | (1L << (REPEATABLE - 505)) | (1L << (SERIALIZABLE - 505)) | (1L << (NATIVE_COMPILATION - 505)) | (1L << (VIEW_METADATA - 505)) | (1L << (INSTEAD - 505)) | (1L << (APPEND - 505)) | (1L << (INCREMENT - 505)) | (1L << (CACHE - 505)) | (1L << (MINVALUE - 505)) | (1L << (MAXVALUE - 505)) | (1L << (RESTART - 505)) | (1L << (LOB_COMPACTION - 505)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 505)) | (1L << (REORGANIZE - 505)) | (1L << (RESUME - 505)) | (1L << (PAUSE - 505)) | (1L << (ABORT - 505)))) != 0) || ((((_la - 571)) & ~0x3f) == 0 && ((1L << (_la - 571)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 571)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 571)) | (1L << (IMMEDIATE - 571)) | (1L << (NO_WAIT - 571)) | (1L << (TARGET_RECOVERY_TIME - 571)) | (1L << (SECONDS - 571)) | (1L << (HONOR_BROKER_PRIORITY - 571)) | (1L << (ERROR_BROKER_CONVERSATIONS - 571)) | (1L << (NEW_BROKER - 571)) | (1L << (DISABLE_BROKER - 571)) | (1L << (ENABLE_BROKER - 571)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 571)) | (1L << (READ_COMMITTED_SNAPSHOT - 571)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 571)) | (1L << (RECURSIVE_TRIGGERS - 571)) | (1L << (QUOTED_IDENTIFIER - 571)) | (1L << (NUMERIC_ROUNDABORT - 571)) | (1L << (CONCAT_NULL_YIELDS_NULL - 571)) | (1L << (COMPATIBILITY_LEVEL - 571)) | (1L << (ARITHABORT - 571)) | (1L << (ANSI_WARNINGS - 571)) | (1L << (ANSI_PADDING - 571)) | (1L << (ANSI_NULLS - 571)) | (1L << (ANSI_NULL_DEFAULT - 571)) | (1L << (PAGE_VERIFY - 571)) | (1L << (CHECKSUM - 571)) | (1L << (TORN_PAGE_DETECTION - 571)) | (1L << (BULK_LOGGED - 571)) | (1L << (RECOVERY - 571)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 571)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 571)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 571)) | (1L << (EXECUTION_COUNT - 571)) | (1L << (QUERY_CAPTURE_POLICY - 571)) | (1L << (WAIT_STATS_CAPTURE_MODE - 571)) | (1L << (MAX_PLANS_PER_QUERY - 571)) | (1L << (QUERY_CAPTURE_MODE - 571)) | (1L << (SIZE_BASED_CLEANUP_MODE - 571)) | (1L << (INTERVAL_LENGTH_MINUTES - 571)) | (1L << (MAX_STORAGE_SIZE_MB - 571)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 571)) | (1L << (CLEANUP_POLICY - 571)) | (1L << (CUSTOM - 571)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 571)) | (1L << (OPERATION_MODE - 571)) | (1L << (QUERY_STORE - 571)) | (1L << (CURSOR_DEFAULT - 571)) | (1L << (GLOBAL - 571)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 571)) | (1L << (HOURS - 571)) | (1L << (CHANGE_RETENTION - 571)) | (1L << (AUTO_CLEANUP - 571)) | (1L << (CHANGE_TRACKING - 571)) | (1L << (AUTOMATIC_TUNING - 571)) | (1L << (FORCE_LAST_GOOD_PLAN - 571)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 571)) | (1L << (AUTO_UPDATE_STATISTICS - 571)) | (1L << (AUTO_SHRINK - 571)) | (1L << (AUTO_CREATE_STATISTICS - 571)) | (1L << (INCREMENTAL - 571)) | (1L << (AUTO_CLOSE - 571)) | (1L << (DATA_RETENTION - 571)) | (1L << (TEMPORAL_HISTORY_RETENTION - 571)) | (1L << (EDITION - 571)))) != 0) || ((((_la - 635)) & ~0x3f) == 0 && ((1L << (_la - 635)) & ((1L << (MIXED_PAGE_ALLOCATION - 635)) | (1L << (DISABLED - 635)) | (1L << (ALLOWED - 635)) | (1L << (HADR - 635)) | (1L << (MULTI_USER - 635)) | (1L << (RESTRICTED_USER - 635)) | (1L << (SINGLE_USER - 635)) | (1L << (OFFLINE - 635)) | (1L << (EMERGENCY - 635)) | (1L << (SUSPEND - 635)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 635)) | (1L << (ELASTIC_POOL - 635)) | (1L << (SERVICE_OBJECTIVE - 635)) | (1L << (DATABASE_NAME - 635)) | (1L << (ALLOW_CONNECTIONS - 635)) | (1L << (GEO - 635)) | (1L << (NAMED - 635)) | (1L << (DATEFIRST - 635)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 635)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 635)) | (1L << (SECONDARY - 635)) | (1L << (FAILOVER - 635)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 635)) | (1L << (DEFAULT_LANGUAGE - 635)) | (1L << (INLINE - 635)) | (1L << (NESTED_TRIGGERS - 635)) | (1L << (TRANSFORM_NOISE_WORDS - 635)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 635)) | (1L << (PERSISTENT_LOG_BUFFER - 635)) | (1L << (DIRECTORY_NAME - 635)) | (1L << (DATEFORMAT - 635)) | (1L << (DELAYED_DURABILITY - 635)) | (1L << (AUTHORIZATION - 635)) | (1L << (TRANSFER - 635)) | (1L << (PROVIDER - 635)) | (1L << (SID - 635)) | (1L << (SEARCH - 635)) | (1L << (MEMBER - 635)))) != 0) || ((((_la - 707)) & ~0x3f) == 0 && ((1L << (_la - 707)) & ((1L << (JSON - 707)) | (1L << (IDENTIFIER_ - 707)) | (1L << (DELIMITED_IDENTIFIER_ - 707)))) != 0)) {
1529 				{
1530 				setState(1100);
1531 				_errHandler.sync(this);
1532 				switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) {
1533 				case 1:
1534 					{
1535 					setState(1098);
1536 					transactionName();
1537 					}
1538 					break;
1539 				case 2:
1540 					{
1541 					setState(1099);
1542 					transactionVariableName();
1543 					}
1544 					break;
1545 				}
1546 				setState(1108);
1547 				_errHandler.sync(this);
1548 				_la = _input.LA(1);
1549 				if (_la==WITH) {
1550 					{
1551 					setState(1102);
1552 					match(WITH);
1553 					setState(1103);
1554 					match(MARK);
1555 					setState(1106);
1556 					_errHandler.sync(this);
1557 					switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) {
1558 					case 1:
1559 						{
1560 						setState(1104);
1561 						stringLiterals();
1562 						}
1563 						break;
1564 					case 2:
1565 						{
1566 						setState(1105);
1567 						match(NCHAR_TEXT);
1568 						}
1569 						break;
1570 					}
1571 					}
1572 				}
1573 
1574 				}
1575 			}
1576 
1577 			}
1578 		}
1579 		catch (RecognitionException re) {
1580 			_localctx.exception = re;
1581 			_errHandler.reportError(this, re);
1582 			_errHandler.recover(this, re);
1583 		}
1584 		finally {
1585 			exitRule();
1586 		}
1587 		return _localctx;
1588 	}
1589 
1590 	public static class BeginDistributedTransactionContext extends ParserRuleContext {
1591 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
1592 		public TerminalNode DISTRIBUTED() { return getToken(SQLServerStatementParser.DISTRIBUTED, 0); }
1593 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1594 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1595 		public TransactionNameContext transactionName() {
1596 			return getRuleContext(TransactionNameContext.class,0);
1597 		}
1598 		public TransactionVariableNameContext transactionVariableName() {
1599 			return getRuleContext(TransactionVariableNameContext.class,0);
1600 		}
1601 		public BeginDistributedTransactionContext(ParserRuleContext parent, int invokingState) {
1602 			super(parent, invokingState);
1603 		}
1604 		@Override public int getRuleIndex() { return RULE_beginDistributedTransaction; }
1605 		@Override
1606 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1607 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBeginDistributedTransaction(this);
1608 			else return visitor.visitChildren(this);
1609 		}
1610 	}
1611 
1612 	public final BeginDistributedTransactionContext beginDistributedTransaction() throws RecognitionException {
1613 		BeginDistributedTransactionContext _localctx = new BeginDistributedTransactionContext(_ctx, getState());
1614 		enterRule(_localctx, 12, RULE_beginDistributedTransaction);
1615 		int _la;
1616 		try {
1617 			enterOuterAlt(_localctx, 1);
1618 			{
1619 			setState(1112);
1620 			match(BEGIN);
1621 			setState(1113);
1622 			match(DISTRIBUTED);
1623 			setState(1114);
1624 			_la = _input.LA(1);
1625 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1626 			_errHandler.recoverInline(this);
1627 			}
1628 			else {
1629 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1630 				_errHandler.reportMatch(this);
1631 				consume();
1632 			}
1633 			setState(1117);
1634 			_errHandler.sync(this);
1635 			switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
1636 			case 1:
1637 				{
1638 				setState(1115);
1639 				transactionName();
1640 				}
1641 				break;
1642 			case 2:
1643 				{
1644 				setState(1116);
1645 				transactionVariableName();
1646 				}
1647 				break;
1648 			}
1649 			}
1650 		}
1651 		catch (RecognitionException re) {
1652 			_localctx.exception = re;
1653 			_errHandler.reportError(this, re);
1654 			_errHandler.recover(this, re);
1655 		}
1656 		finally {
1657 			exitRule();
1658 		}
1659 		return _localctx;
1660 	}
1661 
1662 	public static class CommitContext extends ParserRuleContext {
1663 		public TerminalNode COMMIT() { return getToken(SQLServerStatementParser.COMMIT, 0); }
1664 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
1665 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
1666 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
1667 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
1668 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
1669 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1670 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1671 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
1672 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
1673 		public TransactionNameContext transactionName() {
1674 			return getRuleContext(TransactionNameContext.class,0);
1675 		}
1676 		public TransactionVariableNameContext transactionVariableName() {
1677 			return getRuleContext(TransactionVariableNameContext.class,0);
1678 		}
1679 		public CommitContext(ParserRuleContext parent, int invokingState) {
1680 			super(parent, invokingState);
1681 		}
1682 		@Override public int getRuleIndex() { return RULE_commit; }
1683 		@Override
1684 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1685 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommit(this);
1686 			else return visitor.visitChildren(this);
1687 		}
1688 	}
1689 
1690 	public final CommitContext commit() throws RecognitionException {
1691 		CommitContext _localctx = new CommitContext(_ctx, getState());
1692 		enterRule(_localctx, 14, RULE_commit);
1693 		int _la;
1694 		try {
1695 			enterOuterAlt(_localctx, 1);
1696 			{
1697 			setState(1119);
1698 			match(COMMIT);
1699 			setState(1125);
1700 			_errHandler.sync(this);
1701 			_la = _input.LA(1);
1702 			if (_la==TRANSACTION || _la==TRAN) {
1703 				{
1704 				setState(1120);
1705 				_la = _input.LA(1);
1706 				if ( !(_la==TRANSACTION || _la==TRAN) ) {
1707 				_errHandler.recoverInline(this);
1708 				}
1709 				else {
1710 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1711 					_errHandler.reportMatch(this);
1712 					consume();
1713 				}
1714 				setState(1123);
1715 				_errHandler.sync(this);
1716 				switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) {
1717 				case 1:
1718 					{
1719 					setState(1121);
1720 					transactionName();
1721 					}
1722 					break;
1723 				case 2:
1724 					{
1725 					setState(1122);
1726 					transactionVariableName();
1727 					}
1728 					break;
1729 				}
1730 				}
1731 			}
1732 
1733 			setState(1133);
1734 			_errHandler.sync(this);
1735 			_la = _input.LA(1);
1736 			if (_la==WITH) {
1737 				{
1738 				setState(1127);
1739 				match(WITH);
1740 				setState(1128);
1741 				match(LP_);
1742 				setState(1129);
1743 				match(DELAYED_DURABILITY);
1744 				setState(1130);
1745 				match(EQ_);
1746 				setState(1131);
1747 				_la = _input.LA(1);
1748 				if ( !(_la==ON || _la==OFF) ) {
1749 				_errHandler.recoverInline(this);
1750 				}
1751 				else {
1752 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1753 					_errHandler.reportMatch(this);
1754 					consume();
1755 				}
1756 				setState(1132);
1757 				match(RP_);
1758 				}
1759 			}
1760 
1761 			}
1762 		}
1763 		catch (RecognitionException re) {
1764 			_localctx.exception = re;
1765 			_errHandler.reportError(this, re);
1766 			_errHandler.recover(this, re);
1767 		}
1768 		finally {
1769 			exitRule();
1770 		}
1771 		return _localctx;
1772 	}
1773 
1774 	public static class CommitWorkContext extends ParserRuleContext {
1775 		public TerminalNode COMMIT() { return getToken(SQLServerStatementParser.COMMIT, 0); }
1776 		public TerminalNode WORK() { return getToken(SQLServerStatementParser.WORK, 0); }
1777 		public CommitWorkContext(ParserRuleContext parent, int invokingState) {
1778 			super(parent, invokingState);
1779 		}
1780 		@Override public int getRuleIndex() { return RULE_commitWork; }
1781 		@Override
1782 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1783 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommitWork(this);
1784 			else return visitor.visitChildren(this);
1785 		}
1786 	}
1787 
1788 	public final CommitWorkContext commitWork() throws RecognitionException {
1789 		CommitWorkContext _localctx = new CommitWorkContext(_ctx, getState());
1790 		enterRule(_localctx, 16, RULE_commitWork);
1791 		int _la;
1792 		try {
1793 			enterOuterAlt(_localctx, 1);
1794 			{
1795 			setState(1135);
1796 			match(COMMIT);
1797 			setState(1137);
1798 			_errHandler.sync(this);
1799 			_la = _input.LA(1);
1800 			if (_la==WORK) {
1801 				{
1802 				setState(1136);
1803 				match(WORK);
1804 				}
1805 			}
1806 
1807 			}
1808 		}
1809 		catch (RecognitionException re) {
1810 			_localctx.exception = re;
1811 			_errHandler.reportError(this, re);
1812 			_errHandler.recover(this, re);
1813 		}
1814 		finally {
1815 			exitRule();
1816 		}
1817 		return _localctx;
1818 	}
1819 
1820 	public static class RollbackContext extends ParserRuleContext {
1821 		public TerminalNode ROLLBACK() { return getToken(SQLServerStatementParser.ROLLBACK, 0); }
1822 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1823 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1824 		public TransactionNameContext transactionName() {
1825 			return getRuleContext(TransactionNameContext.class,0);
1826 		}
1827 		public TransactionVariableNameContext transactionVariableName() {
1828 			return getRuleContext(TransactionVariableNameContext.class,0);
1829 		}
1830 		public SavepointNameContext savepointName() {
1831 			return getRuleContext(SavepointNameContext.class,0);
1832 		}
1833 		public SavepointVariableNameContext savepointVariableName() {
1834 			return getRuleContext(SavepointVariableNameContext.class,0);
1835 		}
1836 		public RollbackContext(ParserRuleContext parent, int invokingState) {
1837 			super(parent, invokingState);
1838 		}
1839 		@Override public int getRuleIndex() { return RULE_rollback; }
1840 		@Override
1841 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1842 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRollback(this);
1843 			else return visitor.visitChildren(this);
1844 		}
1845 	}
1846 
1847 	public final RollbackContext rollback() throws RecognitionException {
1848 		RollbackContext _localctx = new RollbackContext(_ctx, getState());
1849 		enterRule(_localctx, 18, RULE_rollback);
1850 		int _la;
1851 		try {
1852 			enterOuterAlt(_localctx, 1);
1853 			{
1854 			setState(1139);
1855 			match(ROLLBACK);
1856 			setState(1140);
1857 			_la = _input.LA(1);
1858 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1859 			_errHandler.recoverInline(this);
1860 			}
1861 			else {
1862 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1863 				_errHandler.reportMatch(this);
1864 				consume();
1865 			}
1866 			setState(1145);
1867 			_errHandler.sync(this);
1868 			switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
1869 			case 1:
1870 				{
1871 				setState(1141);
1872 				transactionName();
1873 				}
1874 				break;
1875 			case 2:
1876 				{
1877 				setState(1142);
1878 				transactionVariableName();
1879 				}
1880 				break;
1881 			case 3:
1882 				{
1883 				setState(1143);
1884 				savepointName();
1885 				}
1886 				break;
1887 			case 4:
1888 				{
1889 				setState(1144);
1890 				savepointVariableName();
1891 				}
1892 				break;
1893 			}
1894 			}
1895 		}
1896 		catch (RecognitionException re) {
1897 			_localctx.exception = re;
1898 			_errHandler.reportError(this, re);
1899 			_errHandler.recover(this, re);
1900 		}
1901 		finally {
1902 			exitRule();
1903 		}
1904 		return _localctx;
1905 	}
1906 
1907 	public static class RollbackWorkContext extends ParserRuleContext {
1908 		public TerminalNode ROLLBACK() { return getToken(SQLServerStatementParser.ROLLBACK, 0); }
1909 		public TerminalNode WORK() { return getToken(SQLServerStatementParser.WORK, 0); }
1910 		public RollbackWorkContext(ParserRuleContext parent, int invokingState) {
1911 			super(parent, invokingState);
1912 		}
1913 		@Override public int getRuleIndex() { return RULE_rollbackWork; }
1914 		@Override
1915 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1916 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRollbackWork(this);
1917 			else return visitor.visitChildren(this);
1918 		}
1919 	}
1920 
1921 	public final RollbackWorkContext rollbackWork() throws RecognitionException {
1922 		RollbackWorkContext _localctx = new RollbackWorkContext(_ctx, getState());
1923 		enterRule(_localctx, 20, RULE_rollbackWork);
1924 		int _la;
1925 		try {
1926 			enterOuterAlt(_localctx, 1);
1927 			{
1928 			setState(1147);
1929 			match(ROLLBACK);
1930 			setState(1149);
1931 			_errHandler.sync(this);
1932 			_la = _input.LA(1);
1933 			if (_la==WORK) {
1934 				{
1935 				setState(1148);
1936 				match(WORK);
1937 				}
1938 			}
1939 
1940 			}
1941 		}
1942 		catch (RecognitionException re) {
1943 			_localctx.exception = re;
1944 			_errHandler.reportError(this, re);
1945 			_errHandler.recover(this, re);
1946 		}
1947 		finally {
1948 			exitRule();
1949 		}
1950 		return _localctx;
1951 	}
1952 
1953 	public static class SavepointContext extends ParserRuleContext {
1954 		public TerminalNode SAVE() { return getToken(SQLServerStatementParser.SAVE, 0); }
1955 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
1956 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
1957 		public SavepointNameContext savepointName() {
1958 			return getRuleContext(SavepointNameContext.class,0);
1959 		}
1960 		public SavepointVariableNameContext savepointVariableName() {
1961 			return getRuleContext(SavepointVariableNameContext.class,0);
1962 		}
1963 		public SavepointContext(ParserRuleContext parent, int invokingState) {
1964 			super(parent, invokingState);
1965 		}
1966 		@Override public int getRuleIndex() { return RULE_savepoint; }
1967 		@Override
1968 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
1969 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSavepoint(this);
1970 			else return visitor.visitChildren(this);
1971 		}
1972 	}
1973 
1974 	public final SavepointContext savepoint() throws RecognitionException {
1975 		SavepointContext _localctx = new SavepointContext(_ctx, getState());
1976 		enterRule(_localctx, 22, RULE_savepoint);
1977 		int _la;
1978 		try {
1979 			enterOuterAlt(_localctx, 1);
1980 			{
1981 			setState(1151);
1982 			match(SAVE);
1983 			setState(1152);
1984 			_la = _input.LA(1);
1985 			if ( !(_la==TRANSACTION || _la==TRAN) ) {
1986 			_errHandler.recoverInline(this);
1987 			}
1988 			else {
1989 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
1990 				_errHandler.reportMatch(this);
1991 				consume();
1992 			}
1993 			setState(1155);
1994 			_errHandler.sync(this);
1995 			switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
1996 			case 1:
1997 				{
1998 				setState(1153);
1999 				savepointName();
2000 				}
2001 				break;
2002 			case 2:
2003 				{
2004 				setState(1154);
2005 				savepointVariableName();
2006 				}
2007 				break;
2008 			}
2009 			}
2010 		}
2011 		catch (RecognitionException re) {
2012 			_localctx.exception = re;
2013 			_errHandler.reportError(this, re);
2014 			_errHandler.recover(this, re);
2015 		}
2016 		finally {
2017 			exitRule();
2018 		}
2019 		return _localctx;
2020 	}
2021 
2022 	public static class ParameterMarkerContext extends ParserRuleContext {
2023 		public TerminalNode QUESTION_() { return getToken(SQLServerStatementParser.QUESTION_, 0); }
2024 		public ParameterMarkerContext(ParserRuleContext parent, int invokingState) {
2025 			super(parent, invokingState);
2026 		}
2027 		@Override public int getRuleIndex() { return RULE_parameterMarker; }
2028 		@Override
2029 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2030 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitParameterMarker(this);
2031 			else return visitor.visitChildren(this);
2032 		}
2033 	}
2034 
2035 	public final ParameterMarkerContext parameterMarker() throws RecognitionException {
2036 		ParameterMarkerContext _localctx = new ParameterMarkerContext(_ctx, getState());
2037 		enterRule(_localctx, 24, RULE_parameterMarker);
2038 		try {
2039 			enterOuterAlt(_localctx, 1);
2040 			{
2041 			setState(1157);
2042 			match(QUESTION_);
2043 			}
2044 		}
2045 		catch (RecognitionException re) {
2046 			_localctx.exception = re;
2047 			_errHandler.reportError(this, re);
2048 			_errHandler.recover(this, re);
2049 		}
2050 		finally {
2051 			exitRule();
2052 		}
2053 		return _localctx;
2054 	}
2055 
2056 	public static class LiteralsContext extends ParserRuleContext {
2057 		public StringLiteralsContext stringLiterals() {
2058 			return getRuleContext(StringLiteralsContext.class,0);
2059 		}
2060 		public NumberLiteralsContext numberLiterals() {
2061 			return getRuleContext(NumberLiteralsContext.class,0);
2062 		}
2063 		public DateTimeLiteralsContext dateTimeLiterals() {
2064 			return getRuleContext(DateTimeLiteralsContext.class,0);
2065 		}
2066 		public HexadecimalLiteralsContext hexadecimalLiterals() {
2067 			return getRuleContext(HexadecimalLiteralsContext.class,0);
2068 		}
2069 		public BitValueLiteralsContext bitValueLiterals() {
2070 			return getRuleContext(BitValueLiteralsContext.class,0);
2071 		}
2072 		public BooleanLiteralsContext booleanLiterals() {
2073 			return getRuleContext(BooleanLiteralsContext.class,0);
2074 		}
2075 		public NullValueLiteralsContext nullValueLiterals() {
2076 			return getRuleContext(NullValueLiteralsContext.class,0);
2077 		}
2078 		public LiteralsContext(ParserRuleContext parent, int invokingState) {
2079 			super(parent, invokingState);
2080 		}
2081 		@Override public int getRuleIndex() { return RULE_literals; }
2082 		@Override
2083 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2084 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitLiterals(this);
2085 			else return visitor.visitChildren(this);
2086 		}
2087 	}
2088 
2089 	public final LiteralsContext literals() throws RecognitionException {
2090 		LiteralsContext _localctx = new LiteralsContext(_ctx, getState());
2091 		enterRule(_localctx, 26, RULE_literals);
2092 		try {
2093 			setState(1166);
2094 			_errHandler.sync(this);
2095 			switch (_input.LA(1)) {
2096 			case STRING_:
2097 			case NCHAR_TEXT:
2098 				enterOuterAlt(_localctx, 1);
2099 				{
2100 				setState(1159);
2101 				stringLiterals();
2102 				}
2103 				break;
2104 			case PLUS_:
2105 			case MINUS_:
2106 			case NUMBER_:
2107 				enterOuterAlt(_localctx, 2);
2108 				{
2109 				setState(1160);
2110 				numberLiterals();
2111 				}
2112 				break;
2113 			case LBE_:
2114 			case DATE:
2115 			case TIME:
2116 			case TIMESTAMP:
2117 				enterOuterAlt(_localctx, 3);
2118 				{
2119 				setState(1161);
2120 				dateTimeLiterals();
2121 				}
2122 				break;
2123 			case HEX_DIGIT_:
2124 				enterOuterAlt(_localctx, 4);
2125 				{
2126 				setState(1162);
2127 				hexadecimalLiterals();
2128 				}
2129 				break;
2130 			case BIT_NUM_:
2131 				enterOuterAlt(_localctx, 5);
2132 				{
2133 				setState(1163);
2134 				bitValueLiterals();
2135 				}
2136 				break;
2137 			case TRUE:
2138 			case FALSE:
2139 				enterOuterAlt(_localctx, 6);
2140 				{
2141 				setState(1164);
2142 				booleanLiterals();
2143 				}
2144 				break;
2145 			case NULL:
2146 				enterOuterAlt(_localctx, 7);
2147 				{
2148 				setState(1165);
2149 				nullValueLiterals();
2150 				}
2151 				break;
2152 			default:
2153 				throw new NoViableAltException(this);
2154 			}
2155 		}
2156 		catch (RecognitionException re) {
2157 			_localctx.exception = re;
2158 			_errHandler.reportError(this, re);
2159 			_errHandler.recover(this, re);
2160 		}
2161 		finally {
2162 			exitRule();
2163 		}
2164 		return _localctx;
2165 	}
2166 
2167 	public static class StringLiteralsContext extends ParserRuleContext {
2168 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
2169 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
2170 		public StringLiteralsContext(ParserRuleContext parent, int invokingState) {
2171 			super(parent, invokingState);
2172 		}
2173 		@Override public int getRuleIndex() { return RULE_stringLiterals; }
2174 		@Override
2175 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2176 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStringLiterals(this);
2177 			else return visitor.visitChildren(this);
2178 		}
2179 	}
2180 
2181 	public final StringLiteralsContext stringLiterals() throws RecognitionException {
2182 		StringLiteralsContext _localctx = new StringLiteralsContext(_ctx, getState());
2183 		enterRule(_localctx, 28, RULE_stringLiterals);
2184 		int _la;
2185 		try {
2186 			enterOuterAlt(_localctx, 1);
2187 			{
2188 			setState(1168);
2189 			_la = _input.LA(1);
2190 			if ( !(_la==STRING_ || _la==NCHAR_TEXT) ) {
2191 			_errHandler.recoverInline(this);
2192 			}
2193 			else {
2194 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2195 				_errHandler.reportMatch(this);
2196 				consume();
2197 			}
2198 			}
2199 		}
2200 		catch (RecognitionException re) {
2201 			_localctx.exception = re;
2202 			_errHandler.reportError(this, re);
2203 			_errHandler.recover(this, re);
2204 		}
2205 		finally {
2206 			exitRule();
2207 		}
2208 		return _localctx;
2209 	}
2210 
2211 	public static class NumberLiteralsContext extends ParserRuleContext {
2212 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
2213 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
2214 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
2215 		public NumberLiteralsContext(ParserRuleContext parent, int invokingState) {
2216 			super(parent, invokingState);
2217 		}
2218 		@Override public int getRuleIndex() { return RULE_numberLiterals; }
2219 		@Override
2220 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2221 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNumberLiterals(this);
2222 			else return visitor.visitChildren(this);
2223 		}
2224 	}
2225 
2226 	public final NumberLiteralsContext numberLiterals() throws RecognitionException {
2227 		NumberLiteralsContext _localctx = new NumberLiteralsContext(_ctx, getState());
2228 		enterRule(_localctx, 30, RULE_numberLiterals);
2229 		int _la;
2230 		try {
2231 			enterOuterAlt(_localctx, 1);
2232 			{
2233 			setState(1171);
2234 			_errHandler.sync(this);
2235 			_la = _input.LA(1);
2236 			if (_la==PLUS_ || _la==MINUS_) {
2237 				{
2238 				setState(1170);
2239 				_la = _input.LA(1);
2240 				if ( !(_la==PLUS_ || _la==MINUS_) ) {
2241 				_errHandler.recoverInline(this);
2242 				}
2243 				else {
2244 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2245 					_errHandler.reportMatch(this);
2246 					consume();
2247 				}
2248 				}
2249 			}
2250 
2251 			setState(1173);
2252 			match(NUMBER_);
2253 			}
2254 		}
2255 		catch (RecognitionException re) {
2256 			_localctx.exception = re;
2257 			_errHandler.reportError(this, re);
2258 			_errHandler.recover(this, re);
2259 		}
2260 		finally {
2261 			exitRule();
2262 		}
2263 		return _localctx;
2264 	}
2265 
2266 	public static class DateTimeLiteralsContext extends ParserRuleContext {
2267 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
2268 		public TerminalNode DATE() { return getToken(SQLServerStatementParser.DATE, 0); }
2269 		public TerminalNode TIME() { return getToken(SQLServerStatementParser.TIME, 0); }
2270 		public TerminalNode TIMESTAMP() { return getToken(SQLServerStatementParser.TIMESTAMP, 0); }
2271 		public TerminalNode LBE_() { return getToken(SQLServerStatementParser.LBE_, 0); }
2272 		public IdentifierContext identifier() {
2273 			return getRuleContext(IdentifierContext.class,0);
2274 		}
2275 		public TerminalNode RBE_() { return getToken(SQLServerStatementParser.RBE_, 0); }
2276 		public DateTimeLiteralsContext(ParserRuleContext parent, int invokingState) {
2277 			super(parent, invokingState);
2278 		}
2279 		@Override public int getRuleIndex() { return RULE_dateTimeLiterals; }
2280 		@Override
2281 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2282 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDateTimeLiterals(this);
2283 			else return visitor.visitChildren(this);
2284 		}
2285 	}
2286 
2287 	public final DateTimeLiteralsContext dateTimeLiterals() throws RecognitionException {
2288 		DateTimeLiteralsContext _localctx = new DateTimeLiteralsContext(_ctx, getState());
2289 		enterRule(_localctx, 32, RULE_dateTimeLiterals);
2290 		int _la;
2291 		try {
2292 			setState(1182);
2293 			_errHandler.sync(this);
2294 			switch (_input.LA(1)) {
2295 			case DATE:
2296 			case TIME:
2297 			case TIMESTAMP:
2298 				enterOuterAlt(_localctx, 1);
2299 				{
2300 				setState(1175);
2301 				_la = _input.LA(1);
2302 				if ( !(((((_la - 135)) & ~0x3f) == 0 && ((1L << (_la - 135)) & ((1L << (DATE - 135)) | (1L << (TIME - 135)) | (1L << (TIMESTAMP - 135)))) != 0)) ) {
2303 				_errHandler.recoverInline(this);
2304 				}
2305 				else {
2306 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2307 					_errHandler.reportMatch(this);
2308 					consume();
2309 				}
2310 				setState(1176);
2311 				match(STRING_);
2312 				}
2313 				break;
2314 			case LBE_:
2315 				enterOuterAlt(_localctx, 2);
2316 				{
2317 				setState(1177);
2318 				match(LBE_);
2319 				setState(1178);
2320 				identifier();
2321 				setState(1179);
2322 				match(STRING_);
2323 				setState(1180);
2324 				match(RBE_);
2325 				}
2326 				break;
2327 			default:
2328 				throw new NoViableAltException(this);
2329 			}
2330 		}
2331 		catch (RecognitionException re) {
2332 			_localctx.exception = re;
2333 			_errHandler.reportError(this, re);
2334 			_errHandler.recover(this, re);
2335 		}
2336 		finally {
2337 			exitRule();
2338 		}
2339 		return _localctx;
2340 	}
2341 
2342 	public static class HexadecimalLiteralsContext extends ParserRuleContext {
2343 		public TerminalNode HEX_DIGIT_() { return getToken(SQLServerStatementParser.HEX_DIGIT_, 0); }
2344 		public HexadecimalLiteralsContext(ParserRuleContext parent, int invokingState) {
2345 			super(parent, invokingState);
2346 		}
2347 		@Override public int getRuleIndex() { return RULE_hexadecimalLiterals; }
2348 		@Override
2349 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2350 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHexadecimalLiterals(this);
2351 			else return visitor.visitChildren(this);
2352 		}
2353 	}
2354 
2355 	public final HexadecimalLiteralsContext hexadecimalLiterals() throws RecognitionException {
2356 		HexadecimalLiteralsContext _localctx = new HexadecimalLiteralsContext(_ctx, getState());
2357 		enterRule(_localctx, 34, RULE_hexadecimalLiterals);
2358 		try {
2359 			enterOuterAlt(_localctx, 1);
2360 			{
2361 			setState(1184);
2362 			match(HEX_DIGIT_);
2363 			}
2364 		}
2365 		catch (RecognitionException re) {
2366 			_localctx.exception = re;
2367 			_errHandler.reportError(this, re);
2368 			_errHandler.recover(this, re);
2369 		}
2370 		finally {
2371 			exitRule();
2372 		}
2373 		return _localctx;
2374 	}
2375 
2376 	public static class BitValueLiteralsContext extends ParserRuleContext {
2377 		public TerminalNode BIT_NUM_() { return getToken(SQLServerStatementParser.BIT_NUM_, 0); }
2378 		public BitValueLiteralsContext(ParserRuleContext parent, int invokingState) {
2379 			super(parent, invokingState);
2380 		}
2381 		@Override public int getRuleIndex() { return RULE_bitValueLiterals; }
2382 		@Override
2383 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2384 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBitValueLiterals(this);
2385 			else return visitor.visitChildren(this);
2386 		}
2387 	}
2388 
2389 	public final BitValueLiteralsContext bitValueLiterals() throws RecognitionException {
2390 		BitValueLiteralsContext _localctx = new BitValueLiteralsContext(_ctx, getState());
2391 		enterRule(_localctx, 36, RULE_bitValueLiterals);
2392 		try {
2393 			enterOuterAlt(_localctx, 1);
2394 			{
2395 			setState(1186);
2396 			match(BIT_NUM_);
2397 			}
2398 		}
2399 		catch (RecognitionException re) {
2400 			_localctx.exception = re;
2401 			_errHandler.reportError(this, re);
2402 			_errHandler.recover(this, re);
2403 		}
2404 		finally {
2405 			exitRule();
2406 		}
2407 		return _localctx;
2408 	}
2409 
2410 	public static class BooleanLiteralsContext extends ParserRuleContext {
2411 		public TerminalNode TRUE() { return getToken(SQLServerStatementParser.TRUE, 0); }
2412 		public TerminalNode FALSE() { return getToken(SQLServerStatementParser.FALSE, 0); }
2413 		public BooleanLiteralsContext(ParserRuleContext parent, int invokingState) {
2414 			super(parent, invokingState);
2415 		}
2416 		@Override public int getRuleIndex() { return RULE_booleanLiterals; }
2417 		@Override
2418 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2419 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBooleanLiterals(this);
2420 			else return visitor.visitChildren(this);
2421 		}
2422 	}
2423 
2424 	public final BooleanLiteralsContext booleanLiterals() throws RecognitionException {
2425 		BooleanLiteralsContext _localctx = new BooleanLiteralsContext(_ctx, getState());
2426 		enterRule(_localctx, 38, RULE_booleanLiterals);
2427 		int _la;
2428 		try {
2429 			enterOuterAlt(_localctx, 1);
2430 			{
2431 			setState(1188);
2432 			_la = _input.LA(1);
2433 			if ( !(_la==TRUE || _la==FALSE) ) {
2434 			_errHandler.recoverInline(this);
2435 			}
2436 			else {
2437 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
2438 				_errHandler.reportMatch(this);
2439 				consume();
2440 			}
2441 			}
2442 		}
2443 		catch (RecognitionException re) {
2444 			_localctx.exception = re;
2445 			_errHandler.reportError(this, re);
2446 			_errHandler.recover(this, re);
2447 		}
2448 		finally {
2449 			exitRule();
2450 		}
2451 		return _localctx;
2452 	}
2453 
2454 	public static class NullValueLiteralsContext extends ParserRuleContext {
2455 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
2456 		public NullValueLiteralsContext(ParserRuleContext parent, int invokingState) {
2457 			super(parent, invokingState);
2458 		}
2459 		@Override public int getRuleIndex() { return RULE_nullValueLiterals; }
2460 		@Override
2461 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2462 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNullValueLiterals(this);
2463 			else return visitor.visitChildren(this);
2464 		}
2465 	}
2466 
2467 	public final NullValueLiteralsContext nullValueLiterals() throws RecognitionException {
2468 		NullValueLiteralsContext _localctx = new NullValueLiteralsContext(_ctx, getState());
2469 		enterRule(_localctx, 40, RULE_nullValueLiterals);
2470 		try {
2471 			enterOuterAlt(_localctx, 1);
2472 			{
2473 			setState(1190);
2474 			match(NULL);
2475 			}
2476 		}
2477 		catch (RecognitionException re) {
2478 			_localctx.exception = re;
2479 			_errHandler.reportError(this, re);
2480 			_errHandler.recover(this, re);
2481 		}
2482 		finally {
2483 			exitRule();
2484 		}
2485 		return _localctx;
2486 	}
2487 
2488 	public static class IdentifierContext extends ParserRuleContext {
2489 		public RegularIdentifierContext regularIdentifier() {
2490 			return getRuleContext(RegularIdentifierContext.class,0);
2491 		}
2492 		public DelimitedIdentifierContext delimitedIdentifier() {
2493 			return getRuleContext(DelimitedIdentifierContext.class,0);
2494 		}
2495 		public IdentifierContext(ParserRuleContext parent, int invokingState) {
2496 			super(parent, invokingState);
2497 		}
2498 		@Override public int getRuleIndex() { return RULE_identifier; }
2499 		@Override
2500 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2501 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIdentifier(this);
2502 			else return visitor.visitChildren(this);
2503 		}
2504 	}
2505 
2506 	public final IdentifierContext identifier() throws RecognitionException {
2507 		IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
2508 		enterRule(_localctx, 42, RULE_identifier);
2509 		try {
2510 			setState(1194);
2511 			_errHandler.sync(this);
2512 			switch (_input.LA(1)) {
2513 			case TRUNCATE:
2514 			case SCHEMA:
2515 			case COLUMNS:
2516 			case PRECISION:
2517 			case FUNCTION:
2518 			case TRIGGER:
2519 			case CAST:
2520 			case TRIM:
2521 			case SUBSTRING:
2522 			case RIGHT:
2523 			case OFF:
2524 			case GROUP:
2525 			case LIMIT:
2526 			case OFFSET:
2527 			case SAVEPOINT:
2528 			case BOOLEAN:
2529 			case ARRAY:
2530 			case DATE:
2531 			case TIMESTAMP:
2532 			case LOCALTIME:
2533 			case LOCALTIMESTAMP:
2534 			case YEAR:
2535 			case QUARTER:
2536 			case MONTH:
2537 			case WEEK:
2538 			case DAY:
2539 			case SECOND:
2540 			case MICROSECOND:
2541 			case MAX:
2542 			case MIN:
2543 			case SUM:
2544 			case COUNT:
2545 			case AVG:
2546 			case ENABLE:
2547 			case DISABLE:
2548 			case INSTANCE:
2549 			case DO:
2550 			case DEFINER:
2551 			case SQL:
2552 			case CASCADED:
2553 			case LOCAL:
2554 			case NEXT:
2555 			case NAME:
2556 			case INTEGER:
2557 			case TYPE:
2558 			case TEXT:
2559 			case VIEWS:
2560 			case READ_ONLY:
2561 			case DATABASE:
2562 			case RETURNS:
2563 			case DATEPART:
2564 			case PASSWORD:
2565 			case BINARY:
2566 			case HIDDEN_:
2567 			case MOD:
2568 			case PARTITION:
2569 			case PARTITIONS:
2570 			case TOP:
2571 			case ROW:
2572 			case ROWS:
2573 			case XOR:
2574 			case ALWAYS:
2575 			case USER:
2576 			case ROLE:
2577 			case START:
2578 			case ALGORITHM:
2579 			case AUTO:
2580 			case BLOCKERS:
2581 			case CLUSTERED:
2582 			case NONCLUSTERED:
2583 			case COLUMNSTORE:
2584 			case CONTENT:
2585 			case YEARS:
2586 			case MONTHS:
2587 			case WEEKS:
2588 			case DAYS:
2589 			case MINUTES:
2590 			case DENY:
2591 			case DETERMINISTIC:
2592 			case DISTRIBUTION:
2593 			case DOCUMENT:
2594 			case DURABILITY:
2595 			case ENCRYPTED:
2596 			case FILESTREAM:
2597 			case FILETABLE:
2598 			case FILLFACTOR:
2599 			case FOLLOWING:
2600 			case HASH:
2601 			case HEAP:
2602 			case INBOUND:
2603 			case OUTBOUND:
2604 			case UNBOUNDED:
2605 			case INFINITE:
2606 			case LOGIN:
2607 			case MASKED:
2608 			case MAXDOP:
2609 			case MOVE:
2610 			case NOCHECK:
2611 			case OBJECT:
2612 			case ONLINE:
2613 			case OVER:
2614 			case PAGE:
2615 			case PAUSED:
2616 			case PERIOD:
2617 			case PERSISTED:
2618 			case PRECEDING:
2619 			case RANDOMIZED:
2620 			case RANGE:
2621 			case REBUILD:
2622 			case REPLICATE:
2623 			case REPLICATION:
2624 			case RESUMABLE:
2625 			case ROWGUIDCOL:
2626 			case SAVE:
2627 			case SELF:
2628 			case SPARSE:
2629 			case SWITCH:
2630 			case TRAN:
2631 			case TRANCOUNT:
2632 			case CONTROL:
2633 			case CONCAT:
2634 			case TAKE:
2635 			case OWNERSHIP:
2636 			case DEFINITION:
2637 			case APPLICATION:
2638 			case ASSEMBLY:
2639 			case SYMMETRIC:
2640 			case ASYMMETRIC:
2641 			case SERVER:
2642 			case RECEIVE:
2643 			case CHANGE:
2644 			case TRACE:
2645 			case TRACKING:
2646 			case RESOURCES:
2647 			case SETTINGS:
2648 			case STATE:
2649 			case AVAILABILITY:
2650 			case CREDENTIAL:
2651 			case ENDPOINT:
2652 			case EVENT:
2653 			case NOTIFICATION:
2654 			case LINKED:
2655 			case AUDIT:
2656 			case DDL:
2657 			case XML:
2658 			case IMPERSONATE:
2659 			case SECURABLES:
2660 			case AUTHENTICATE:
2661 			case EXTERNAL:
2662 			case ACCESS:
2663 			case ADMINISTER:
2664 			case BULK:
2665 			case OPERATIONS:
2666 			case UNSAFE:
2667 			case SHUTDOWN:
2668 			case SCOPED:
2669 			case CONFIGURATION:
2670 			case DATASPACE:
2671 			case SERVICE:
2672 			case CERTIFICATE:
2673 			case CONTRACT:
2674 			case ENCRYPTION:
2675 			case MASTER:
2676 			case DATA:
2677 			case SOURCE:
2678 			case FILE:
2679 			case FORMAT:
2680 			case LIBRARY:
2681 			case FULLTEXT:
2682 			case MASK:
2683 			case UNMASK:
2684 			case MESSAGE:
2685 			case REMOTE:
2686 			case BINDING:
2687 			case ROUTE:
2688 			case SECURITY:
2689 			case POLICY:
2690 			case AGGREGATE:
2691 			case QUEUE:
2692 			case RULE:
2693 			case SYNONYM:
2694 			case COLLECTION:
2695 			case SCRIPT:
2696 			case KILL:
2697 			case BACKUP:
2698 			case LOG:
2699 			case SHOWPLAN:
2700 			case SUBSCRIBE:
2701 			case QUERY:
2702 			case NOTIFICATIONS:
2703 			case CHECKPOINT:
2704 			case SEQUENCE:
2705 			case ABORT_AFTER_WAIT:
2706 			case ALLOW_PAGE_LOCKS:
2707 			case ALLOW_ROW_LOCKS:
2708 			case ALL_SPARSE_COLUMNS:
2709 			case BUCKET_COUNT:
2710 			case COLUMNSTORE_ARCHIVE:
2711 			case COLUMN_ENCRYPTION_KEY:
2712 			case COLUMN_SET:
2713 			case COMPRESSION_DELAY:
2714 			case DATABASE_DEAULT:
2715 			case DATA_COMPRESSION:
2716 			case DATA_CONSISTENCY_CHECK:
2717 			case ENCRYPTION_TYPE:
2718 			case SYSTEM_TIME:
2719 			case SYSTEM_VERSIONING:
2720 			case TEXTIMAGE_ON:
2721 			case WAIT_AT_LOW_PRIORITY:
2722 			case STATISTICS_INCREMENTAL:
2723 			case STATISTICS_NORECOMPUTE:
2724 			case ROUND_ROBIN:
2725 			case SCHEMA_AND_DATA:
2726 			case SCHEMA_ONLY:
2727 			case SORT_IN_TEMPDB:
2728 			case IGNORE_DUP_KEY:
2729 			case IMPLICIT_TRANSACTIONS:
2730 			case MAX_DURATION:
2731 			case MEMORY_OPTIMIZED:
2732 			case MIGRATION_STATE:
2733 			case PAD_INDEX:
2734 			case REMOTE_DATA_ARCHIVE:
2735 			case FILESTREAM_ON:
2736 			case FILETABLE_COLLATE_FILENAME:
2737 			case FILETABLE_DIRECTORY:
2738 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
2739 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
2740 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
2741 			case FILTER_PREDICATE:
2742 			case HISTORY_RETENTION_PERIOD:
2743 			case HISTORY_TABLE:
2744 			case LOCK_ESCALATION:
2745 			case DROP_EXISTING:
2746 			case ROW_NUMBER:
2747 			case FIRST:
2748 			case DATETIME2:
2749 			case OUTPUT:
2750 			case INSERTED:
2751 			case DELETED:
2752 			case FILENAME:
2753 			case SIZE:
2754 			case MAXSIZE:
2755 			case FILEGROWTH:
2756 			case UNLIMITED:
2757 			case KB:
2758 			case MB:
2759 			case GB:
2760 			case TB:
2761 			case CONTAINS:
2762 			case MEMORY_OPTIMIZED_DATA:
2763 			case FILEGROUP:
2764 			case NON_TRANSACTED_ACCESS:
2765 			case DB_CHAINING:
2766 			case TRUSTWORTHY:
2767 			case FORWARD_ONLY:
2768 			case KEYSET:
2769 			case FAST_FORWARD:
2770 			case SCROLL_LOCKS:
2771 			case OPTIMISTIC:
2772 			case TYPE_WARNING:
2773 			case SCHEMABINDING:
2774 			case CALLER:
2775 			case INPUT:
2776 			case OWNER:
2777 			case SNAPSHOT:
2778 			case REPEATABLE:
2779 			case SERIALIZABLE:
2780 			case NATIVE_COMPILATION:
2781 			case VIEW_METADATA:
2782 			case INSTEAD:
2783 			case APPEND:
2784 			case INCREMENT:
2785 			case CACHE:
2786 			case MINVALUE:
2787 			case MAXVALUE:
2788 			case RESTART:
2789 			case LOB_COMPACTION:
2790 			case COMPRESS_ALL_ROW_GROUPS:
2791 			case REORGANIZE:
2792 			case RESUME:
2793 			case PAUSE:
2794 			case ABORT:
2795 			case ACCELERATED_DATABASE_RECOVERY:
2796 			case PERSISTENT_VERSION_STORE_FILEGROUP:
2797 			case IMMEDIATE:
2798 			case NO_WAIT:
2799 			case TARGET_RECOVERY_TIME:
2800 			case SECONDS:
2801 			case HONOR_BROKER_PRIORITY:
2802 			case ERROR_BROKER_CONVERSATIONS:
2803 			case NEW_BROKER:
2804 			case DISABLE_BROKER:
2805 			case ENABLE_BROKER:
2806 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
2807 			case READ_COMMITTED_SNAPSHOT:
2808 			case ALLOW_SNAPSHOT_ISOLATION:
2809 			case RECURSIVE_TRIGGERS:
2810 			case QUOTED_IDENTIFIER:
2811 			case NUMERIC_ROUNDABORT:
2812 			case CONCAT_NULL_YIELDS_NULL:
2813 			case COMPATIBILITY_LEVEL:
2814 			case ARITHABORT:
2815 			case ANSI_WARNINGS:
2816 			case ANSI_PADDING:
2817 			case ANSI_NULLS:
2818 			case ANSI_NULL_DEFAULT:
2819 			case PAGE_VERIFY:
2820 			case CHECKSUM:
2821 			case TORN_PAGE_DETECTION:
2822 			case BULK_LOGGED:
2823 			case RECOVERY:
2824 			case TOTAL_EXECUTION_CPU_TIME_MS:
2825 			case TOTAL_COMPILE_CPU_TIME_MS:
2826 			case STALE_CAPTURE_POLICY_THRESHOLD:
2827 			case EXECUTION_COUNT:
2828 			case QUERY_CAPTURE_POLICY:
2829 			case WAIT_STATS_CAPTURE_MODE:
2830 			case MAX_PLANS_PER_QUERY:
2831 			case QUERY_CAPTURE_MODE:
2832 			case SIZE_BASED_CLEANUP_MODE:
2833 			case INTERVAL_LENGTH_MINUTES:
2834 			case MAX_STORAGE_SIZE_MB:
2835 			case DATA_FLUSH_INTERVAL_SECONDS:
2836 			case CLEANUP_POLICY:
2837 			case CUSTOM:
2838 			case STALE_QUERY_THRESHOLD_DAYS:
2839 			case OPERATION_MODE:
2840 			case QUERY_STORE:
2841 			case CURSOR_DEFAULT:
2842 			case GLOBAL:
2843 			case CURSOR_CLOSE_ON_COMMIT:
2844 			case HOURS:
2845 			case CHANGE_RETENTION:
2846 			case AUTO_CLEANUP:
2847 			case CHANGE_TRACKING:
2848 			case AUTOMATIC_TUNING:
2849 			case FORCE_LAST_GOOD_PLAN:
2850 			case AUTO_UPDATE_STATISTICS_ASYNC:
2851 			case AUTO_UPDATE_STATISTICS:
2852 			case AUTO_SHRINK:
2853 			case AUTO_CREATE_STATISTICS:
2854 			case INCREMENTAL:
2855 			case AUTO_CLOSE:
2856 			case DATA_RETENTION:
2857 			case TEMPORAL_HISTORY_RETENTION:
2858 			case EDITION:
2859 			case MIXED_PAGE_ALLOCATION:
2860 			case DISABLED:
2861 			case ALLOWED:
2862 			case HADR:
2863 			case MULTI_USER:
2864 			case RESTRICTED_USER:
2865 			case SINGLE_USER:
2866 			case OFFLINE:
2867 			case EMERGENCY:
2868 			case SUSPEND:
2869 			case DATE_CORRELATION_OPTIMIZATION:
2870 			case ELASTIC_POOL:
2871 			case SERVICE_OBJECTIVE:
2872 			case DATABASE_NAME:
2873 			case ALLOW_CONNECTIONS:
2874 			case GEO:
2875 			case NAMED:
2876 			case DATEFIRST:
2877 			case BACKUP_STORAGE_REDUNDANCY:
2878 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
2879 			case SECONDARY:
2880 			case FAILOVER:
2881 			case DEFAULT_FULLTEXT_LANGUAGE:
2882 			case DEFAULT_LANGUAGE:
2883 			case INLINE:
2884 			case NESTED_TRIGGERS:
2885 			case TRANSFORM_NOISE_WORDS:
2886 			case TWO_DIGIT_YEAR_CUTOFF:
2887 			case PERSISTENT_LOG_BUFFER:
2888 			case DIRECTORY_NAME:
2889 			case DATEFORMAT:
2890 			case DELAYED_DURABILITY:
2891 			case AUTHORIZATION:
2892 			case TRANSFER:
2893 			case PROVIDER:
2894 			case SID:
2895 			case SEARCH:
2896 			case MEMBER:
2897 			case JSON:
2898 			case IDENTIFIER_:
2899 				enterOuterAlt(_localctx, 1);
2900 				{
2901 				setState(1192);
2902 				regularIdentifier();
2903 				}
2904 				break;
2905 			case DELIMITED_IDENTIFIER_:
2906 				enterOuterAlt(_localctx, 2);
2907 				{
2908 				setState(1193);
2909 				delimitedIdentifier();
2910 				}
2911 				break;
2912 			default:
2913 				throw new NoViableAltException(this);
2914 			}
2915 		}
2916 		catch (RecognitionException re) {
2917 			_localctx.exception = re;
2918 			_errHandler.reportError(this, re);
2919 			_errHandler.recover(this, re);
2920 		}
2921 		finally {
2922 			exitRule();
2923 		}
2924 		return _localctx;
2925 	}
2926 
2927 	public static class RegularIdentifierContext extends ParserRuleContext {
2928 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
2929 		public UnreservedWordContext unreservedWord() {
2930 			return getRuleContext(UnreservedWordContext.class,0);
2931 		}
2932 		public RegularIdentifierContext(ParserRuleContext parent, int invokingState) {
2933 			super(parent, invokingState);
2934 		}
2935 		@Override public int getRuleIndex() { return RULE_regularIdentifier; }
2936 		@Override
2937 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
2938 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRegularIdentifier(this);
2939 			else return visitor.visitChildren(this);
2940 		}
2941 	}
2942 
2943 	public final RegularIdentifierContext regularIdentifier() throws RecognitionException {
2944 		RegularIdentifierContext _localctx = new RegularIdentifierContext(_ctx, getState());
2945 		enterRule(_localctx, 44, RULE_regularIdentifier);
2946 		try {
2947 			setState(1198);
2948 			_errHandler.sync(this);
2949 			switch (_input.LA(1)) {
2950 			case IDENTIFIER_:
2951 				enterOuterAlt(_localctx, 1);
2952 				{
2953 				setState(1196);
2954 				match(IDENTIFIER_);
2955 				}
2956 				break;
2957 			case TRUNCATE:
2958 			case SCHEMA:
2959 			case COLUMNS:
2960 			case PRECISION:
2961 			case FUNCTION:
2962 			case TRIGGER:
2963 			case CAST:
2964 			case TRIM:
2965 			case SUBSTRING:
2966 			case RIGHT:
2967 			case OFF:
2968 			case GROUP:
2969 			case LIMIT:
2970 			case OFFSET:
2971 			case SAVEPOINT:
2972 			case BOOLEAN:
2973 			case ARRAY:
2974 			case DATE:
2975 			case TIMESTAMP:
2976 			case LOCALTIME:
2977 			case LOCALTIMESTAMP:
2978 			case YEAR:
2979 			case QUARTER:
2980 			case MONTH:
2981 			case WEEK:
2982 			case DAY:
2983 			case SECOND:
2984 			case MICROSECOND:
2985 			case MAX:
2986 			case MIN:
2987 			case SUM:
2988 			case COUNT:
2989 			case AVG:
2990 			case ENABLE:
2991 			case DISABLE:
2992 			case INSTANCE:
2993 			case DO:
2994 			case DEFINER:
2995 			case SQL:
2996 			case CASCADED:
2997 			case LOCAL:
2998 			case NEXT:
2999 			case NAME:
3000 			case INTEGER:
3001 			case TYPE:
3002 			case TEXT:
3003 			case VIEWS:
3004 			case READ_ONLY:
3005 			case DATABASE:
3006 			case RETURNS:
3007 			case DATEPART:
3008 			case PASSWORD:
3009 			case BINARY:
3010 			case HIDDEN_:
3011 			case MOD:
3012 			case PARTITION:
3013 			case PARTITIONS:
3014 			case TOP:
3015 			case ROW:
3016 			case ROWS:
3017 			case XOR:
3018 			case ALWAYS:
3019 			case USER:
3020 			case ROLE:
3021 			case START:
3022 			case ALGORITHM:
3023 			case AUTO:
3024 			case BLOCKERS:
3025 			case CLUSTERED:
3026 			case NONCLUSTERED:
3027 			case COLUMNSTORE:
3028 			case CONTENT:
3029 			case YEARS:
3030 			case MONTHS:
3031 			case WEEKS:
3032 			case DAYS:
3033 			case MINUTES:
3034 			case DENY:
3035 			case DETERMINISTIC:
3036 			case DISTRIBUTION:
3037 			case DOCUMENT:
3038 			case DURABILITY:
3039 			case ENCRYPTED:
3040 			case FILESTREAM:
3041 			case FILETABLE:
3042 			case FILLFACTOR:
3043 			case FOLLOWING:
3044 			case HASH:
3045 			case HEAP:
3046 			case INBOUND:
3047 			case OUTBOUND:
3048 			case UNBOUNDED:
3049 			case INFINITE:
3050 			case LOGIN:
3051 			case MASKED:
3052 			case MAXDOP:
3053 			case MOVE:
3054 			case NOCHECK:
3055 			case OBJECT:
3056 			case ONLINE:
3057 			case OVER:
3058 			case PAGE:
3059 			case PAUSED:
3060 			case PERIOD:
3061 			case PERSISTED:
3062 			case PRECEDING:
3063 			case RANDOMIZED:
3064 			case RANGE:
3065 			case REBUILD:
3066 			case REPLICATE:
3067 			case REPLICATION:
3068 			case RESUMABLE:
3069 			case ROWGUIDCOL:
3070 			case SAVE:
3071 			case SELF:
3072 			case SPARSE:
3073 			case SWITCH:
3074 			case TRAN:
3075 			case TRANCOUNT:
3076 			case CONTROL:
3077 			case CONCAT:
3078 			case TAKE:
3079 			case OWNERSHIP:
3080 			case DEFINITION:
3081 			case APPLICATION:
3082 			case ASSEMBLY:
3083 			case SYMMETRIC:
3084 			case ASYMMETRIC:
3085 			case SERVER:
3086 			case RECEIVE:
3087 			case CHANGE:
3088 			case TRACE:
3089 			case TRACKING:
3090 			case RESOURCES:
3091 			case SETTINGS:
3092 			case STATE:
3093 			case AVAILABILITY:
3094 			case CREDENTIAL:
3095 			case ENDPOINT:
3096 			case EVENT:
3097 			case NOTIFICATION:
3098 			case LINKED:
3099 			case AUDIT:
3100 			case DDL:
3101 			case XML:
3102 			case IMPERSONATE:
3103 			case SECURABLES:
3104 			case AUTHENTICATE:
3105 			case EXTERNAL:
3106 			case ACCESS:
3107 			case ADMINISTER:
3108 			case BULK:
3109 			case OPERATIONS:
3110 			case UNSAFE:
3111 			case SHUTDOWN:
3112 			case SCOPED:
3113 			case CONFIGURATION:
3114 			case DATASPACE:
3115 			case SERVICE:
3116 			case CERTIFICATE:
3117 			case CONTRACT:
3118 			case ENCRYPTION:
3119 			case MASTER:
3120 			case DATA:
3121 			case SOURCE:
3122 			case FILE:
3123 			case FORMAT:
3124 			case LIBRARY:
3125 			case FULLTEXT:
3126 			case MASK:
3127 			case UNMASK:
3128 			case MESSAGE:
3129 			case REMOTE:
3130 			case BINDING:
3131 			case ROUTE:
3132 			case SECURITY:
3133 			case POLICY:
3134 			case AGGREGATE:
3135 			case QUEUE:
3136 			case RULE:
3137 			case SYNONYM:
3138 			case COLLECTION:
3139 			case SCRIPT:
3140 			case KILL:
3141 			case BACKUP:
3142 			case LOG:
3143 			case SHOWPLAN:
3144 			case SUBSCRIBE:
3145 			case QUERY:
3146 			case NOTIFICATIONS:
3147 			case CHECKPOINT:
3148 			case SEQUENCE:
3149 			case ABORT_AFTER_WAIT:
3150 			case ALLOW_PAGE_LOCKS:
3151 			case ALLOW_ROW_LOCKS:
3152 			case ALL_SPARSE_COLUMNS:
3153 			case BUCKET_COUNT:
3154 			case COLUMNSTORE_ARCHIVE:
3155 			case COLUMN_ENCRYPTION_KEY:
3156 			case COLUMN_SET:
3157 			case COMPRESSION_DELAY:
3158 			case DATABASE_DEAULT:
3159 			case DATA_COMPRESSION:
3160 			case DATA_CONSISTENCY_CHECK:
3161 			case ENCRYPTION_TYPE:
3162 			case SYSTEM_TIME:
3163 			case SYSTEM_VERSIONING:
3164 			case TEXTIMAGE_ON:
3165 			case WAIT_AT_LOW_PRIORITY:
3166 			case STATISTICS_INCREMENTAL:
3167 			case STATISTICS_NORECOMPUTE:
3168 			case ROUND_ROBIN:
3169 			case SCHEMA_AND_DATA:
3170 			case SCHEMA_ONLY:
3171 			case SORT_IN_TEMPDB:
3172 			case IGNORE_DUP_KEY:
3173 			case IMPLICIT_TRANSACTIONS:
3174 			case MAX_DURATION:
3175 			case MEMORY_OPTIMIZED:
3176 			case MIGRATION_STATE:
3177 			case PAD_INDEX:
3178 			case REMOTE_DATA_ARCHIVE:
3179 			case FILESTREAM_ON:
3180 			case FILETABLE_COLLATE_FILENAME:
3181 			case FILETABLE_DIRECTORY:
3182 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
3183 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
3184 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
3185 			case FILTER_PREDICATE:
3186 			case HISTORY_RETENTION_PERIOD:
3187 			case HISTORY_TABLE:
3188 			case LOCK_ESCALATION:
3189 			case DROP_EXISTING:
3190 			case ROW_NUMBER:
3191 			case FIRST:
3192 			case DATETIME2:
3193 			case OUTPUT:
3194 			case INSERTED:
3195 			case DELETED:
3196 			case FILENAME:
3197 			case SIZE:
3198 			case MAXSIZE:
3199 			case FILEGROWTH:
3200 			case UNLIMITED:
3201 			case KB:
3202 			case MB:
3203 			case GB:
3204 			case TB:
3205 			case CONTAINS:
3206 			case MEMORY_OPTIMIZED_DATA:
3207 			case FILEGROUP:
3208 			case NON_TRANSACTED_ACCESS:
3209 			case DB_CHAINING:
3210 			case TRUSTWORTHY:
3211 			case FORWARD_ONLY:
3212 			case KEYSET:
3213 			case FAST_FORWARD:
3214 			case SCROLL_LOCKS:
3215 			case OPTIMISTIC:
3216 			case TYPE_WARNING:
3217 			case SCHEMABINDING:
3218 			case CALLER:
3219 			case INPUT:
3220 			case OWNER:
3221 			case SNAPSHOT:
3222 			case REPEATABLE:
3223 			case SERIALIZABLE:
3224 			case NATIVE_COMPILATION:
3225 			case VIEW_METADATA:
3226 			case INSTEAD:
3227 			case APPEND:
3228 			case INCREMENT:
3229 			case CACHE:
3230 			case MINVALUE:
3231 			case MAXVALUE:
3232 			case RESTART:
3233 			case LOB_COMPACTION:
3234 			case COMPRESS_ALL_ROW_GROUPS:
3235 			case REORGANIZE:
3236 			case RESUME:
3237 			case PAUSE:
3238 			case ABORT:
3239 			case ACCELERATED_DATABASE_RECOVERY:
3240 			case PERSISTENT_VERSION_STORE_FILEGROUP:
3241 			case IMMEDIATE:
3242 			case NO_WAIT:
3243 			case TARGET_RECOVERY_TIME:
3244 			case SECONDS:
3245 			case HONOR_BROKER_PRIORITY:
3246 			case ERROR_BROKER_CONVERSATIONS:
3247 			case NEW_BROKER:
3248 			case DISABLE_BROKER:
3249 			case ENABLE_BROKER:
3250 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
3251 			case READ_COMMITTED_SNAPSHOT:
3252 			case ALLOW_SNAPSHOT_ISOLATION:
3253 			case RECURSIVE_TRIGGERS:
3254 			case QUOTED_IDENTIFIER:
3255 			case NUMERIC_ROUNDABORT:
3256 			case CONCAT_NULL_YIELDS_NULL:
3257 			case COMPATIBILITY_LEVEL:
3258 			case ARITHABORT:
3259 			case ANSI_WARNINGS:
3260 			case ANSI_PADDING:
3261 			case ANSI_NULLS:
3262 			case ANSI_NULL_DEFAULT:
3263 			case PAGE_VERIFY:
3264 			case CHECKSUM:
3265 			case TORN_PAGE_DETECTION:
3266 			case BULK_LOGGED:
3267 			case RECOVERY:
3268 			case TOTAL_EXECUTION_CPU_TIME_MS:
3269 			case TOTAL_COMPILE_CPU_TIME_MS:
3270 			case STALE_CAPTURE_POLICY_THRESHOLD:
3271 			case EXECUTION_COUNT:
3272 			case QUERY_CAPTURE_POLICY:
3273 			case WAIT_STATS_CAPTURE_MODE:
3274 			case MAX_PLANS_PER_QUERY:
3275 			case QUERY_CAPTURE_MODE:
3276 			case SIZE_BASED_CLEANUP_MODE:
3277 			case INTERVAL_LENGTH_MINUTES:
3278 			case MAX_STORAGE_SIZE_MB:
3279 			case DATA_FLUSH_INTERVAL_SECONDS:
3280 			case CLEANUP_POLICY:
3281 			case CUSTOM:
3282 			case STALE_QUERY_THRESHOLD_DAYS:
3283 			case OPERATION_MODE:
3284 			case QUERY_STORE:
3285 			case CURSOR_DEFAULT:
3286 			case GLOBAL:
3287 			case CURSOR_CLOSE_ON_COMMIT:
3288 			case HOURS:
3289 			case CHANGE_RETENTION:
3290 			case AUTO_CLEANUP:
3291 			case CHANGE_TRACKING:
3292 			case AUTOMATIC_TUNING:
3293 			case FORCE_LAST_GOOD_PLAN:
3294 			case AUTO_UPDATE_STATISTICS_ASYNC:
3295 			case AUTO_UPDATE_STATISTICS:
3296 			case AUTO_SHRINK:
3297 			case AUTO_CREATE_STATISTICS:
3298 			case INCREMENTAL:
3299 			case AUTO_CLOSE:
3300 			case DATA_RETENTION:
3301 			case TEMPORAL_HISTORY_RETENTION:
3302 			case EDITION:
3303 			case MIXED_PAGE_ALLOCATION:
3304 			case DISABLED:
3305 			case ALLOWED:
3306 			case HADR:
3307 			case MULTI_USER:
3308 			case RESTRICTED_USER:
3309 			case SINGLE_USER:
3310 			case OFFLINE:
3311 			case EMERGENCY:
3312 			case SUSPEND:
3313 			case DATE_CORRELATION_OPTIMIZATION:
3314 			case ELASTIC_POOL:
3315 			case SERVICE_OBJECTIVE:
3316 			case DATABASE_NAME:
3317 			case ALLOW_CONNECTIONS:
3318 			case GEO:
3319 			case NAMED:
3320 			case DATEFIRST:
3321 			case BACKUP_STORAGE_REDUNDANCY:
3322 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
3323 			case SECONDARY:
3324 			case FAILOVER:
3325 			case DEFAULT_FULLTEXT_LANGUAGE:
3326 			case DEFAULT_LANGUAGE:
3327 			case INLINE:
3328 			case NESTED_TRIGGERS:
3329 			case TRANSFORM_NOISE_WORDS:
3330 			case TWO_DIGIT_YEAR_CUTOFF:
3331 			case PERSISTENT_LOG_BUFFER:
3332 			case DIRECTORY_NAME:
3333 			case DATEFORMAT:
3334 			case DELAYED_DURABILITY:
3335 			case AUTHORIZATION:
3336 			case TRANSFER:
3337 			case PROVIDER:
3338 			case SID:
3339 			case SEARCH:
3340 			case MEMBER:
3341 			case JSON:
3342 				enterOuterAlt(_localctx, 2);
3343 				{
3344 				setState(1197);
3345 				unreservedWord();
3346 				}
3347 				break;
3348 			default:
3349 				throw new NoViableAltException(this);
3350 			}
3351 		}
3352 		catch (RecognitionException re) {
3353 			_localctx.exception = re;
3354 			_errHandler.reportError(this, re);
3355 			_errHandler.recover(this, re);
3356 		}
3357 		finally {
3358 			exitRule();
3359 		}
3360 		return _localctx;
3361 	}
3362 
3363 	public static class DelimitedIdentifierContext extends ParserRuleContext {
3364 		public TerminalNode DELIMITED_IDENTIFIER_() { return getToken(SQLServerStatementParser.DELIMITED_IDENTIFIER_, 0); }
3365 		public DelimitedIdentifierContext(ParserRuleContext parent, int invokingState) {
3366 			super(parent, invokingState);
3367 		}
3368 		@Override public int getRuleIndex() { return RULE_delimitedIdentifier; }
3369 		@Override
3370 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3371 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDelimitedIdentifier(this);
3372 			else return visitor.visitChildren(this);
3373 		}
3374 	}
3375 
3376 	public final DelimitedIdentifierContext delimitedIdentifier() throws RecognitionException {
3377 		DelimitedIdentifierContext _localctx = new DelimitedIdentifierContext(_ctx, getState());
3378 		enterRule(_localctx, 46, RULE_delimitedIdentifier);
3379 		try {
3380 			enterOuterAlt(_localctx, 1);
3381 			{
3382 			setState(1200);
3383 			match(DELIMITED_IDENTIFIER_);
3384 			}
3385 		}
3386 		catch (RecognitionException re) {
3387 			_localctx.exception = re;
3388 			_errHandler.reportError(this, re);
3389 			_errHandler.recover(this, re);
3390 		}
3391 		finally {
3392 			exitRule();
3393 		}
3394 		return _localctx;
3395 	}
3396 
3397 	public static class UnreservedWordContext extends ParserRuleContext {
3398 		public TerminalNode TRUNCATE() { return getToken(SQLServerStatementParser.TRUNCATE, 0); }
3399 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
3400 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
3401 		public TerminalNode LIMIT() { return getToken(SQLServerStatementParser.LIMIT, 0); }
3402 		public TerminalNode OFFSET() { return getToken(SQLServerStatementParser.OFFSET, 0); }
3403 		public TerminalNode SAVEPOINT() { return getToken(SQLServerStatementParser.SAVEPOINT, 0); }
3404 		public TerminalNode BOOLEAN() { return getToken(SQLServerStatementParser.BOOLEAN, 0); }
3405 		public TerminalNode ARRAY() { return getToken(SQLServerStatementParser.ARRAY, 0); }
3406 		public TerminalNode LOCALTIME() { return getToken(SQLServerStatementParser.LOCALTIME, 0); }
3407 		public TerminalNode LOCALTIMESTAMP() { return getToken(SQLServerStatementParser.LOCALTIMESTAMP, 0); }
3408 		public TerminalNode QUARTER() { return getToken(SQLServerStatementParser.QUARTER, 0); }
3409 		public TerminalNode WEEK() { return getToken(SQLServerStatementParser.WEEK, 0); }
3410 		public TerminalNode MICROSECOND() { return getToken(SQLServerStatementParser.MICROSECOND, 0); }
3411 		public TerminalNode ENABLE() { return getToken(SQLServerStatementParser.ENABLE, 0); }
3412 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
3413 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
3414 		public TerminalNode HIDDEN_() { return getToken(SQLServerStatementParser.HIDDEN_, 0); }
3415 		public TerminalNode MOD() { return getToken(SQLServerStatementParser.MOD, 0); }
3416 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
3417 		public TerminalNode TOP() { return getToken(SQLServerStatementParser.TOP, 0); }
3418 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
3419 		public TerminalNode XOR() { return getToken(SQLServerStatementParser.XOR, 0); }
3420 		public TerminalNode ALWAYS() { return getToken(SQLServerStatementParser.ALWAYS, 0); }
3421 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
3422 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
3423 		public TerminalNode ALGORITHM() { return getToken(SQLServerStatementParser.ALGORITHM, 0); }
3424 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
3425 		public TerminalNode BLOCKERS() { return getToken(SQLServerStatementParser.BLOCKERS, 0); }
3426 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
3427 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
3428 		public TerminalNode CONTENT() { return getToken(SQLServerStatementParser.CONTENT, 0); }
3429 		public TerminalNode CONCAT() { return getToken(SQLServerStatementParser.CONCAT, 0); }
3430 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
3431 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
3432 		public TerminalNode DENY() { return getToken(SQLServerStatementParser.DENY, 0); }
3433 		public TerminalNode DETERMINISTIC() { return getToken(SQLServerStatementParser.DETERMINISTIC, 0); }
3434 		public TerminalNode DISTRIBUTION() { return getToken(SQLServerStatementParser.DISTRIBUTION, 0); }
3435 		public TerminalNode DOCUMENT() { return getToken(SQLServerStatementParser.DOCUMENT, 0); }
3436 		public TerminalNode DURABILITY() { return getToken(SQLServerStatementParser.DURABILITY, 0); }
3437 		public TerminalNode ENCRYPTED() { return getToken(SQLServerStatementParser.ENCRYPTED, 0); }
3438 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
3439 		public TerminalNode FILETABLE() { return getToken(SQLServerStatementParser.FILETABLE, 0); }
3440 		public TerminalNode FOLLOWING() { return getToken(SQLServerStatementParser.FOLLOWING, 0); }
3441 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
3442 		public TerminalNode HEAP() { return getToken(SQLServerStatementParser.HEAP, 0); }
3443 		public TerminalNode INBOUND() { return getToken(SQLServerStatementParser.INBOUND, 0); }
3444 		public TerminalNode INFINITE() { return getToken(SQLServerStatementParser.INFINITE, 0); }
3445 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
3446 		public TerminalNode MASKED() { return getToken(SQLServerStatementParser.MASKED, 0); }
3447 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
3448 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
3449 		public TerminalNode MONTHS() { return getToken(SQLServerStatementParser.MONTHS, 0); }
3450 		public TerminalNode MOVE() { return getToken(SQLServerStatementParser.MOVE, 0); }
3451 		public TerminalNode NOCHECK() { return getToken(SQLServerStatementParser.NOCHECK, 0); }
3452 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
3453 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
3454 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
3455 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
3456 		public TerminalNode OUTBOUND() { return getToken(SQLServerStatementParser.OUTBOUND, 0); }
3457 		public TerminalNode OVER() { return getToken(SQLServerStatementParser.OVER, 0); }
3458 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
3459 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
3460 		public TerminalNode PAUSED() { return getToken(SQLServerStatementParser.PAUSED, 0); }
3461 		public TerminalNode PERIOD() { return getToken(SQLServerStatementParser.PERIOD, 0); }
3462 		public TerminalNode PERSISTED() { return getToken(SQLServerStatementParser.PERSISTED, 0); }
3463 		public TerminalNode PRECEDING() { return getToken(SQLServerStatementParser.PRECEDING, 0); }
3464 		public TerminalNode RANDOMIZED() { return getToken(SQLServerStatementParser.RANDOMIZED, 0); }
3465 		public TerminalNode RANGE() { return getToken(SQLServerStatementParser.RANGE, 0); }
3466 		public TerminalNode REBUILD() { return getToken(SQLServerStatementParser.REBUILD, 0); }
3467 		public TerminalNode REPLICATE() { return getToken(SQLServerStatementParser.REPLICATE, 0); }
3468 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
3469 		public TerminalNode RESUMABLE() { return getToken(SQLServerStatementParser.RESUMABLE, 0); }
3470 		public TerminalNode ROWGUIDCOL() { return getToken(SQLServerStatementParser.ROWGUIDCOL, 0); }
3471 		public TerminalNode SAVE() { return getToken(SQLServerStatementParser.SAVE, 0); }
3472 		public TerminalNode SELF() { return getToken(SQLServerStatementParser.SELF, 0); }
3473 		public TerminalNode SPARSE() { return getToken(SQLServerStatementParser.SPARSE, 0); }
3474 		public TerminalNode SWITCH() { return getToken(SQLServerStatementParser.SWITCH, 0); }
3475 		public TerminalNode TRAN() { return getToken(SQLServerStatementParser.TRAN, 0); }
3476 		public TerminalNode TRANCOUNT() { return getToken(SQLServerStatementParser.TRANCOUNT, 0); }
3477 		public TerminalNode UNBOUNDED() { return getToken(SQLServerStatementParser.UNBOUNDED, 0); }
3478 		public TerminalNode YEARS() { return getToken(SQLServerStatementParser.YEARS, 0); }
3479 		public TerminalNode WEEKS() { return getToken(SQLServerStatementParser.WEEKS, 0); }
3480 		public TerminalNode ABORT_AFTER_WAIT() { return getToken(SQLServerStatementParser.ABORT_AFTER_WAIT, 0); }
3481 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
3482 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
3483 		public TerminalNode ALL_SPARSE_COLUMNS() { return getToken(SQLServerStatementParser.ALL_SPARSE_COLUMNS, 0); }
3484 		public TerminalNode BUCKET_COUNT() { return getToken(SQLServerStatementParser.BUCKET_COUNT, 0); }
3485 		public TerminalNode COLUMNSTORE_ARCHIVE() { return getToken(SQLServerStatementParser.COLUMNSTORE_ARCHIVE, 0); }
3486 		public TerminalNode COLUMN_ENCRYPTION_KEY() { return getToken(SQLServerStatementParser.COLUMN_ENCRYPTION_KEY, 0); }
3487 		public TerminalNode COLUMN_SET() { return getToken(SQLServerStatementParser.COLUMN_SET, 0); }
3488 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
3489 		public TerminalNode DATABASE_DEAULT() { return getToken(SQLServerStatementParser.DATABASE_DEAULT, 0); }
3490 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
3491 		public TerminalNode DATA_CONSISTENCY_CHECK() { return getToken(SQLServerStatementParser.DATA_CONSISTENCY_CHECK, 0); }
3492 		public TerminalNode ENCRYPTION_TYPE() { return getToken(SQLServerStatementParser.ENCRYPTION_TYPE, 0); }
3493 		public TerminalNode SYSTEM_TIME() { return getToken(SQLServerStatementParser.SYSTEM_TIME, 0); }
3494 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
3495 		public TerminalNode TEXTIMAGE_ON() { return getToken(SQLServerStatementParser.TEXTIMAGE_ON, 0); }
3496 		public TerminalNode WAIT_AT_LOW_PRIORITY() { return getToken(SQLServerStatementParser.WAIT_AT_LOW_PRIORITY, 0); }
3497 		public TerminalNode STATISTICS_INCREMENTAL() { return getToken(SQLServerStatementParser.STATISTICS_INCREMENTAL, 0); }
3498 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
3499 		public TerminalNode ROUND_ROBIN() { return getToken(SQLServerStatementParser.ROUND_ROBIN, 0); }
3500 		public TerminalNode SCHEMA_AND_DATA() { return getToken(SQLServerStatementParser.SCHEMA_AND_DATA, 0); }
3501 		public TerminalNode SCHEMA_ONLY() { return getToken(SQLServerStatementParser.SCHEMA_ONLY, 0); }
3502 		public TerminalNode SORT_IN_TEMPDB() { return getToken(SQLServerStatementParser.SORT_IN_TEMPDB, 0); }
3503 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
3504 		public TerminalNode IMPLICIT_TRANSACTIONS() { return getToken(SQLServerStatementParser.IMPLICIT_TRANSACTIONS, 0); }
3505 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
3506 		public TerminalNode MEMORY_OPTIMIZED() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED, 0); }
3507 		public TerminalNode MIGRATION_STATE() { return getToken(SQLServerStatementParser.MIGRATION_STATE, 0); }
3508 		public TerminalNode PAD_INDEX() { return getToken(SQLServerStatementParser.PAD_INDEX, 0); }
3509 		public TerminalNode REMOTE_DATA_ARCHIVE() { return getToken(SQLServerStatementParser.REMOTE_DATA_ARCHIVE, 0); }
3510 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
3511 		public TerminalNode FILETABLE_COLLATE_FILENAME() { return getToken(SQLServerStatementParser.FILETABLE_COLLATE_FILENAME, 0); }
3512 		public TerminalNode FILETABLE_DIRECTORY() { return getToken(SQLServerStatementParser.FILETABLE_DIRECTORY, 0); }
3513 		public TerminalNode FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME, 0); }
3514 		public TerminalNode FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME, 0); }
3515 		public TerminalNode FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME, 0); }
3516 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
3517 		public TerminalNode FILTER_PREDICATE() { return getToken(SQLServerStatementParser.FILTER_PREDICATE, 0); }
3518 		public TerminalNode HISTORY_RETENTION_PERIOD() { return getToken(SQLServerStatementParser.HISTORY_RETENTION_PERIOD, 0); }
3519 		public TerminalNode HISTORY_TABLE() { return getToken(SQLServerStatementParser.HISTORY_TABLE, 0); }
3520 		public TerminalNode LOCK_ESCALATION() { return getToken(SQLServerStatementParser.LOCK_ESCALATION, 0); }
3521 		public TerminalNode DROP_EXISTING() { return getToken(SQLServerStatementParser.DROP_EXISTING, 0); }
3522 		public TerminalNode ROW_NUMBER() { return getToken(SQLServerStatementParser.ROW_NUMBER, 0); }
3523 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
3524 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
3525 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
3526 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
3527 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
3528 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
3529 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
3530 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
3531 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
3532 		public TerminalNode RECEIVE() { return getToken(SQLServerStatementParser.RECEIVE, 0); }
3533 		public TerminalNode CHANGE() { return getToken(SQLServerStatementParser.CHANGE, 0); }
3534 		public TerminalNode TRACE() { return getToken(SQLServerStatementParser.TRACE, 0); }
3535 		public TerminalNode TRACKING() { return getToken(SQLServerStatementParser.TRACKING, 0); }
3536 		public TerminalNode RESOURCES() { return getToken(SQLServerStatementParser.RESOURCES, 0); }
3537 		public TerminalNode SETTINGS() { return getToken(SQLServerStatementParser.SETTINGS, 0); }
3538 		public TerminalNode STATE() { return getToken(SQLServerStatementParser.STATE, 0); }
3539 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
3540 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
3541 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
3542 		public TerminalNode EVENT() { return getToken(SQLServerStatementParser.EVENT, 0); }
3543 		public TerminalNode NOTIFICATION() { return getToken(SQLServerStatementParser.NOTIFICATION, 0); }
3544 		public TerminalNode LINKED() { return getToken(SQLServerStatementParser.LINKED, 0); }
3545 		public TerminalNode AUDIT() { return getToken(SQLServerStatementParser.AUDIT, 0); }
3546 		public TerminalNode DDL() { return getToken(SQLServerStatementParser.DDL, 0); }
3547 		public TerminalNode SQL() { return getToken(SQLServerStatementParser.SQL, 0); }
3548 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
3549 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
3550 		public TerminalNode SECURABLES() { return getToken(SQLServerStatementParser.SECURABLES, 0); }
3551 		public TerminalNode AUTHENTICATE() { return getToken(SQLServerStatementParser.AUTHENTICATE, 0); }
3552 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
3553 		public TerminalNode ACCESS() { return getToken(SQLServerStatementParser.ACCESS, 0); }
3554 		public TerminalNode ADMINISTER() { return getToken(SQLServerStatementParser.ADMINISTER, 0); }
3555 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
3556 		public TerminalNode OPERATIONS() { return getToken(SQLServerStatementParser.OPERATIONS, 0); }
3557 		public TerminalNode UNSAFE() { return getToken(SQLServerStatementParser.UNSAFE, 0); }
3558 		public TerminalNode SHUTDOWN() { return getToken(SQLServerStatementParser.SHUTDOWN, 0); }
3559 		public TerminalNode SCOPED() { return getToken(SQLServerStatementParser.SCOPED, 0); }
3560 		public TerminalNode CONFIGURATION() { return getToken(SQLServerStatementParser.CONFIGURATION, 0); }
3561 		public TerminalNode DATASPACE() { return getToken(SQLServerStatementParser.DATASPACE, 0); }
3562 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
3563 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
3564 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
3565 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
3566 		public TerminalNode MASTER() { return getToken(SQLServerStatementParser.MASTER, 0); }
3567 		public TerminalNode DATA() { return getToken(SQLServerStatementParser.DATA, 0); }
3568 		public TerminalNode SOURCE() { return getToken(SQLServerStatementParser.SOURCE, 0); }
3569 		public TerminalNode FILE() { return getToken(SQLServerStatementParser.FILE, 0); }
3570 		public TerminalNode FORMAT() { return getToken(SQLServerStatementParser.FORMAT, 0); }
3571 		public TerminalNode LIBRARY() { return getToken(SQLServerStatementParser.LIBRARY, 0); }
3572 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
3573 		public TerminalNode MASK() { return getToken(SQLServerStatementParser.MASK, 0); }
3574 		public TerminalNode UNMASK() { return getToken(SQLServerStatementParser.UNMASK, 0); }
3575 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
3576 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
3577 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
3578 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
3579 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
3580 		public TerminalNode SECURITY() { return getToken(SQLServerStatementParser.SECURITY, 0); }
3581 		public TerminalNode POLICY() { return getToken(SQLServerStatementParser.POLICY, 0); }
3582 		public TerminalNode AGGREGATE() { return getToken(SQLServerStatementParser.AGGREGATE, 0); }
3583 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
3584 		public TerminalNode RULE() { return getToken(SQLServerStatementParser.RULE, 0); }
3585 		public TerminalNode SYNONYM() { return getToken(SQLServerStatementParser.SYNONYM, 0); }
3586 		public TerminalNode COLLECTION() { return getToken(SQLServerStatementParser.COLLECTION, 0); }
3587 		public TerminalNode SCRIPT() { return getToken(SQLServerStatementParser.SCRIPT, 0); }
3588 		public TerminalNode KILL() { return getToken(SQLServerStatementParser.KILL, 0); }
3589 		public TerminalNode BACKUP() { return getToken(SQLServerStatementParser.BACKUP, 0); }
3590 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
3591 		public TerminalNode SHOWPLAN() { return getToken(SQLServerStatementParser.SHOWPLAN, 0); }
3592 		public TerminalNode SUBSCRIBE() { return getToken(SQLServerStatementParser.SUBSCRIBE, 0); }
3593 		public TerminalNode QUERY() { return getToken(SQLServerStatementParser.QUERY, 0); }
3594 		public TerminalNode NOTIFICATIONS() { return getToken(SQLServerStatementParser.NOTIFICATIONS, 0); }
3595 		public TerminalNode CHECKPOINT() { return getToken(SQLServerStatementParser.CHECKPOINT, 0); }
3596 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
3597 		public TerminalNode INSTANCE() { return getToken(SQLServerStatementParser.INSTANCE, 0); }
3598 		public TerminalNode DO() { return getToken(SQLServerStatementParser.DO, 0); }
3599 		public TerminalNode DEFINER() { return getToken(SQLServerStatementParser.DEFINER, 0); }
3600 		public TerminalNode LOCAL() { return getToken(SQLServerStatementParser.LOCAL, 0); }
3601 		public TerminalNode CASCADED() { return getToken(SQLServerStatementParser.CASCADED, 0); }
3602 		public TerminalNode NEXT() { return getToken(SQLServerStatementParser.NEXT, 0); }
3603 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
3604 		public TerminalNode INTEGER() { return getToken(SQLServerStatementParser.INTEGER, 0); }
3605 		public TerminalNode MAX() { return getToken(SQLServerStatementParser.MAX, 0); }
3606 		public TerminalNode MIN() { return getToken(SQLServerStatementParser.MIN, 0); }
3607 		public TerminalNode SUM() { return getToken(SQLServerStatementParser.SUM, 0); }
3608 		public TerminalNode COUNT() { return getToken(SQLServerStatementParser.COUNT, 0); }
3609 		public TerminalNode AVG() { return getToken(SQLServerStatementParser.AVG, 0); }
3610 		public TerminalNode FIRST() { return getToken(SQLServerStatementParser.FIRST, 0); }
3611 		public TerminalNode DATETIME2() { return getToken(SQLServerStatementParser.DATETIME2, 0); }
3612 		public TerminalNode OUTPUT() { return getToken(SQLServerStatementParser.OUTPUT, 0); }
3613 		public TerminalNode INSERTED() { return getToken(SQLServerStatementParser.INSERTED, 0); }
3614 		public TerminalNode DELETED() { return getToken(SQLServerStatementParser.DELETED, 0); }
3615 		public TerminalNode KB() { return getToken(SQLServerStatementParser.KB, 0); }
3616 		public TerminalNode MB() { return getToken(SQLServerStatementParser.MB, 0); }
3617 		public TerminalNode GB() { return getToken(SQLServerStatementParser.GB, 0); }
3618 		public TerminalNode TB() { return getToken(SQLServerStatementParser.TB, 0); }
3619 		public TerminalNode FILENAME() { return getToken(SQLServerStatementParser.FILENAME, 0); }
3620 		public TerminalNode MAXSIZE() { return getToken(SQLServerStatementParser.MAXSIZE, 0); }
3621 		public TerminalNode FILEGROWTH() { return getToken(SQLServerStatementParser.FILEGROWTH, 0); }
3622 		public TerminalNode UNLIMITED() { return getToken(SQLServerStatementParser.UNLIMITED, 0); }
3623 		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_DATA, 0); }
3624 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
3625 		public TerminalNode NON_TRANSACTED_ACCESS() { return getToken(SQLServerStatementParser.NON_TRANSACTED_ACCESS, 0); }
3626 		public TerminalNode DB_CHAINING() { return getToken(SQLServerStatementParser.DB_CHAINING, 0); }
3627 		public TerminalNode TRUSTWORTHY() { return getToken(SQLServerStatementParser.TRUSTWORTHY, 0); }
3628 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
3629 		public TerminalNode ROWS() { return getToken(SQLServerStatementParser.ROWS, 0); }
3630 		public TerminalNode DATE() { return getToken(SQLServerStatementParser.DATE, 0); }
3631 		public TerminalNode DATEPART() { return getToken(SQLServerStatementParser.DATEPART, 0); }
3632 		public TerminalNode CAST() { return getToken(SQLServerStatementParser.CAST, 0); }
3633 		public TerminalNode DAY() { return getToken(SQLServerStatementParser.DAY, 0); }
3634 		public TerminalNode FORWARD_ONLY() { return getToken(SQLServerStatementParser.FORWARD_ONLY, 0); }
3635 		public TerminalNode KEYSET() { return getToken(SQLServerStatementParser.KEYSET, 0); }
3636 		public TerminalNode FAST_FORWARD() { return getToken(SQLServerStatementParser.FAST_FORWARD, 0); }
3637 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
3638 		public TerminalNode SCROLL_LOCKS() { return getToken(SQLServerStatementParser.SCROLL_LOCKS, 0); }
3639 		public TerminalNode OPTIMISTIC() { return getToken(SQLServerStatementParser.OPTIMISTIC, 0); }
3640 		public TerminalNode TYPE_WARNING() { return getToken(SQLServerStatementParser.TYPE_WARNING, 0); }
3641 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
3642 		public TerminalNode CALLER() { return getToken(SQLServerStatementParser.CALLER, 0); }
3643 		public TerminalNode OWNER() { return getToken(SQLServerStatementParser.OWNER, 0); }
3644 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
3645 		public TerminalNode REPEATABLE() { return getToken(SQLServerStatementParser.REPEATABLE, 0); }
3646 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
3647 		public TerminalNode NATIVE_COMPILATION() { return getToken(SQLServerStatementParser.NATIVE_COMPILATION, 0); }
3648 		public TerminalNode VIEW_METADATA() { return getToken(SQLServerStatementParser.VIEW_METADATA, 0); }
3649 		public TerminalNode INSTEAD() { return getToken(SQLServerStatementParser.INSTEAD, 0); }
3650 		public TerminalNode APPEND() { return getToken(SQLServerStatementParser.APPEND, 0); }
3651 		public TerminalNode INCREMENT() { return getToken(SQLServerStatementParser.INCREMENT, 0); }
3652 		public TerminalNode CACHE() { return getToken(SQLServerStatementParser.CACHE, 0); }
3653 		public TerminalNode MINVALUE() { return getToken(SQLServerStatementParser.MINVALUE, 0); }
3654 		public TerminalNode MAXVALUE() { return getToken(SQLServerStatementParser.MAXVALUE, 0); }
3655 		public TerminalNode RESTART() { return getToken(SQLServerStatementParser.RESTART, 0); }
3656 		public TerminalNode LOB_COMPACTION() { return getToken(SQLServerStatementParser.LOB_COMPACTION, 0); }
3657 		public TerminalNode COMPRESS_ALL_ROW_GROUPS() { return getToken(SQLServerStatementParser.COMPRESS_ALL_ROW_GROUPS, 0); }
3658 		public TerminalNode REORGANIZE() { return getToken(SQLServerStatementParser.REORGANIZE, 0); }
3659 		public TerminalNode RESUME() { return getToken(SQLServerStatementParser.RESUME, 0); }
3660 		public TerminalNode PAUSE() { return getToken(SQLServerStatementParser.PAUSE, 0); }
3661 		public TerminalNode ABORT() { return getToken(SQLServerStatementParser.ABORT, 0); }
3662 		public TerminalNode ACCELERATED_DATABASE_RECOVERY() { return getToken(SQLServerStatementParser.ACCELERATED_DATABASE_RECOVERY, 0); }
3663 		public TerminalNode PERSISTENT_VERSION_STORE_FILEGROUP() { return getToken(SQLServerStatementParser.PERSISTENT_VERSION_STORE_FILEGROUP, 0); }
3664 		public TerminalNode IMMEDIATE() { return getToken(SQLServerStatementParser.IMMEDIATE, 0); }
3665 		public TerminalNode NO_WAIT() { return getToken(SQLServerStatementParser.NO_WAIT, 0); }
3666 		public TerminalNode TARGET_RECOVERY_TIME() { return getToken(SQLServerStatementParser.TARGET_RECOVERY_TIME, 0); }
3667 		public TerminalNode SECONDS() { return getToken(SQLServerStatementParser.SECONDS, 0); }
3668 		public TerminalNode HONOR_BROKER_PRIORITY() { return getToken(SQLServerStatementParser.HONOR_BROKER_PRIORITY, 0); }
3669 		public TerminalNode ERROR_BROKER_CONVERSATIONS() { return getToken(SQLServerStatementParser.ERROR_BROKER_CONVERSATIONS, 0); }
3670 		public TerminalNode NEW_BROKER() { return getToken(SQLServerStatementParser.NEW_BROKER, 0); }
3671 		public TerminalNode DISABLE_BROKER() { return getToken(SQLServerStatementParser.DISABLE_BROKER, 0); }
3672 		public TerminalNode ENABLE_BROKER() { return getToken(SQLServerStatementParser.ENABLE_BROKER, 0); }
3673 		public TerminalNode MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT, 0); }
3674 		public TerminalNode READ_COMMITTED_SNAPSHOT() { return getToken(SQLServerStatementParser.READ_COMMITTED_SNAPSHOT, 0); }
3675 		public TerminalNode ALLOW_SNAPSHOT_ISOLATION() { return getToken(SQLServerStatementParser.ALLOW_SNAPSHOT_ISOLATION, 0); }
3676 		public TerminalNode RECURSIVE_TRIGGERS() { return getToken(SQLServerStatementParser.RECURSIVE_TRIGGERS, 0); }
3677 		public TerminalNode QUOTED_IDENTIFIER() { return getToken(SQLServerStatementParser.QUOTED_IDENTIFIER, 0); }
3678 		public TerminalNode NUMERIC_ROUNDABORT() { return getToken(SQLServerStatementParser.NUMERIC_ROUNDABORT, 0); }
3679 		public TerminalNode CONCAT_NULL_YIELDS_NULL() { return getToken(SQLServerStatementParser.CONCAT_NULL_YIELDS_NULL, 0); }
3680 		public TerminalNode COMPATIBILITY_LEVEL() { return getToken(SQLServerStatementParser.COMPATIBILITY_LEVEL, 0); }
3681 		public TerminalNode ARITHABORT() { return getToken(SQLServerStatementParser.ARITHABORT, 0); }
3682 		public TerminalNode ANSI_WARNINGS() { return getToken(SQLServerStatementParser.ANSI_WARNINGS, 0); }
3683 		public TerminalNode ANSI_PADDING() { return getToken(SQLServerStatementParser.ANSI_PADDING, 0); }
3684 		public TerminalNode ANSI_NULLS() { return getToken(SQLServerStatementParser.ANSI_NULLS, 0); }
3685 		public TerminalNode ANSI_NULL_DEFAULT() { return getToken(SQLServerStatementParser.ANSI_NULL_DEFAULT, 0); }
3686 		public TerminalNode PAGE_VERIFY() { return getToken(SQLServerStatementParser.PAGE_VERIFY, 0); }
3687 		public TerminalNode CHECKSUM() { return getToken(SQLServerStatementParser.CHECKSUM, 0); }
3688 		public TerminalNode TORN_PAGE_DETECTION() { return getToken(SQLServerStatementParser.TORN_PAGE_DETECTION, 0); }
3689 		public TerminalNode BULK_LOGGED() { return getToken(SQLServerStatementParser.BULK_LOGGED, 0); }
3690 		public TerminalNode RECOVERY() { return getToken(SQLServerStatementParser.RECOVERY, 0); }
3691 		public TerminalNode TOTAL_EXECUTION_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_EXECUTION_CPU_TIME_MS, 0); }
3692 		public TerminalNode TOTAL_COMPILE_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_COMPILE_CPU_TIME_MS, 0); }
3693 		public TerminalNode STALE_CAPTURE_POLICY_THRESHOLD() { return getToken(SQLServerStatementParser.STALE_CAPTURE_POLICY_THRESHOLD, 0); }
3694 		public TerminalNode EXECUTION_COUNT() { return getToken(SQLServerStatementParser.EXECUTION_COUNT, 0); }
3695 		public TerminalNode QUERY_CAPTURE_POLICY() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_POLICY, 0); }
3696 		public TerminalNode WAIT_STATS_CAPTURE_MODE() { return getToken(SQLServerStatementParser.WAIT_STATS_CAPTURE_MODE, 0); }
3697 		public TerminalNode MAX_PLANS_PER_QUERY() { return getToken(SQLServerStatementParser.MAX_PLANS_PER_QUERY, 0); }
3698 		public TerminalNode QUERY_CAPTURE_MODE() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_MODE, 0); }
3699 		public TerminalNode SIZE_BASED_CLEANUP_MODE() { return getToken(SQLServerStatementParser.SIZE_BASED_CLEANUP_MODE, 0); }
3700 		public TerminalNode INTERVAL_LENGTH_MINUTES() { return getToken(SQLServerStatementParser.INTERVAL_LENGTH_MINUTES, 0); }
3701 		public TerminalNode MAX_STORAGE_SIZE_MB() { return getToken(SQLServerStatementParser.MAX_STORAGE_SIZE_MB, 0); }
3702 		public TerminalNode DATA_FLUSH_INTERVAL_SECONDS() { return getToken(SQLServerStatementParser.DATA_FLUSH_INTERVAL_SECONDS, 0); }
3703 		public TerminalNode CLEANUP_POLICY() { return getToken(SQLServerStatementParser.CLEANUP_POLICY, 0); }
3704 		public TerminalNode CUSTOM() { return getToken(SQLServerStatementParser.CUSTOM, 0); }
3705 		public TerminalNode STALE_QUERY_THRESHOLD_DAYS() { return getToken(SQLServerStatementParser.STALE_QUERY_THRESHOLD_DAYS, 0); }
3706 		public TerminalNode OPERATION_MODE() { return getToken(SQLServerStatementParser.OPERATION_MODE, 0); }
3707 		public TerminalNode QUERY_STORE() { return getToken(SQLServerStatementParser.QUERY_STORE, 0); }
3708 		public TerminalNode CURSOR_DEFAULT() { return getToken(SQLServerStatementParser.CURSOR_DEFAULT, 0); }
3709 		public TerminalNode GLOBAL() { return getToken(SQLServerStatementParser.GLOBAL, 0); }
3710 		public TerminalNode CURSOR_CLOSE_ON_COMMIT() { return getToken(SQLServerStatementParser.CURSOR_CLOSE_ON_COMMIT, 0); }
3711 		public TerminalNode HOURS() { return getToken(SQLServerStatementParser.HOURS, 0); }
3712 		public TerminalNode CHANGE_RETENTION() { return getToken(SQLServerStatementParser.CHANGE_RETENTION, 0); }
3713 		public TerminalNode AUTO_CLEANUP() { return getToken(SQLServerStatementParser.AUTO_CLEANUP, 0); }
3714 		public TerminalNode CHANGE_TRACKING() { return getToken(SQLServerStatementParser.CHANGE_TRACKING, 0); }
3715 		public TerminalNode AUTOMATIC_TUNING() { return getToken(SQLServerStatementParser.AUTOMATIC_TUNING, 0); }
3716 		public TerminalNode FORCE_LAST_GOOD_PLAN() { return getToken(SQLServerStatementParser.FORCE_LAST_GOOD_PLAN, 0); }
3717 		public TerminalNode AUTO_UPDATE_STATISTICS_ASYNC() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS_ASYNC, 0); }
3718 		public TerminalNode AUTO_UPDATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS, 0); }
3719 		public TerminalNode AUTO_SHRINK() { return getToken(SQLServerStatementParser.AUTO_SHRINK, 0); }
3720 		public TerminalNode AUTO_CREATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_CREATE_STATISTICS, 0); }
3721 		public TerminalNode INCREMENTAL() { return getToken(SQLServerStatementParser.INCREMENTAL, 0); }
3722 		public TerminalNode AUTO_CLOSE() { return getToken(SQLServerStatementParser.AUTO_CLOSE, 0); }
3723 		public TerminalNode DATA_RETENTION() { return getToken(SQLServerStatementParser.DATA_RETENTION, 0); }
3724 		public TerminalNode TEMPORAL_HISTORY_RETENTION() { return getToken(SQLServerStatementParser.TEMPORAL_HISTORY_RETENTION, 0); }
3725 		public TerminalNode EDITION() { return getToken(SQLServerStatementParser.EDITION, 0); }
3726 		public TerminalNode MIXED_PAGE_ALLOCATION() { return getToken(SQLServerStatementParser.MIXED_PAGE_ALLOCATION, 0); }
3727 		public TerminalNode DISABLED() { return getToken(SQLServerStatementParser.DISABLED, 0); }
3728 		public TerminalNode ALLOWED() { return getToken(SQLServerStatementParser.ALLOWED, 0); }
3729 		public TerminalNode HADR() { return getToken(SQLServerStatementParser.HADR, 0); }
3730 		public TerminalNode MULTI_USER() { return getToken(SQLServerStatementParser.MULTI_USER, 0); }
3731 		public TerminalNode RESTRICTED_USER() { return getToken(SQLServerStatementParser.RESTRICTED_USER, 0); }
3732 		public TerminalNode SINGLE_USER() { return getToken(SQLServerStatementParser.SINGLE_USER, 0); }
3733 		public TerminalNode OFFLINE() { return getToken(SQLServerStatementParser.OFFLINE, 0); }
3734 		public TerminalNode EMERGENCY() { return getToken(SQLServerStatementParser.EMERGENCY, 0); }
3735 		public TerminalNode SUSPEND() { return getToken(SQLServerStatementParser.SUSPEND, 0); }
3736 		public TerminalNode DATE_CORRELATION_OPTIMIZATION() { return getToken(SQLServerStatementParser.DATE_CORRELATION_OPTIMIZATION, 0); }
3737 		public TerminalNode ELASTIC_POOL() { return getToken(SQLServerStatementParser.ELASTIC_POOL, 0); }
3738 		public TerminalNode SERVICE_OBJECTIVE() { return getToken(SQLServerStatementParser.SERVICE_OBJECTIVE, 0); }
3739 		public TerminalNode DATABASE_NAME() { return getToken(SQLServerStatementParser.DATABASE_NAME, 0); }
3740 		public TerminalNode ALLOW_CONNECTIONS() { return getToken(SQLServerStatementParser.ALLOW_CONNECTIONS, 0); }
3741 		public TerminalNode GEO() { return getToken(SQLServerStatementParser.GEO, 0); }
3742 		public TerminalNode NAMED() { return getToken(SQLServerStatementParser.NAMED, 0); }
3743 		public TerminalNode DATEFIRST() { return getToken(SQLServerStatementParser.DATEFIRST, 0); }
3744 		public TerminalNode BACKUP_STORAGE_REDUNDANCY() { return getToken(SQLServerStatementParser.BACKUP_STORAGE_REDUNDANCY, 0); }
3745 		public TerminalNode FORCE_FAILOVER_ALLOW_DATA_LOSS() { return getToken(SQLServerStatementParser.FORCE_FAILOVER_ALLOW_DATA_LOSS, 0); }
3746 		public TerminalNode SECONDARY() { return getToken(SQLServerStatementParser.SECONDARY, 0); }
3747 		public TerminalNode FAILOVER() { return getToken(SQLServerStatementParser.FAILOVER, 0); }
3748 		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
3749 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
3750 		public TerminalNode INLINE() { return getToken(SQLServerStatementParser.INLINE, 0); }
3751 		public TerminalNode NESTED_TRIGGERS() { return getToken(SQLServerStatementParser.NESTED_TRIGGERS, 0); }
3752 		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(SQLServerStatementParser.TRANSFORM_NOISE_WORDS, 0); }
3753 		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(SQLServerStatementParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
3754 		public TerminalNode PERSISTENT_LOG_BUFFER() { return getToken(SQLServerStatementParser.PERSISTENT_LOG_BUFFER, 0); }
3755 		public TerminalNode DIRECTORY_NAME() { return getToken(SQLServerStatementParser.DIRECTORY_NAME, 0); }
3756 		public TerminalNode DATEFORMAT() { return getToken(SQLServerStatementParser.DATEFORMAT, 0); }
3757 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
3758 		public TerminalNode TRANSFER() { return getToken(SQLServerStatementParser.TRANSFER, 0); }
3759 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
3760 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
3761 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
3762 		public TerminalNode MEMBER() { return getToken(SQLServerStatementParser.MEMBER, 0); }
3763 		public TerminalNode SEARCH() { return getToken(SQLServerStatementParser.SEARCH, 0); }
3764 		public TerminalNode TEXT() { return getToken(SQLServerStatementParser.TEXT, 0); }
3765 		public TerminalNode SECOND() { return getToken(SQLServerStatementParser.SECOND, 0); }
3766 		public TerminalNode PRECISION() { return getToken(SQLServerStatementParser.PRECISION, 0); }
3767 		public TerminalNode VIEWS() { return getToken(SQLServerStatementParser.VIEWS, 0); }
3768 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
3769 		public TerminalNode COLUMNS() { return getToken(SQLServerStatementParser.COLUMNS, 0); }
3770 		public TerminalNode SUBSTRING() { return getToken(SQLServerStatementParser.SUBSTRING, 0); }
3771 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
3772 		public TerminalNode SIZE() { return getToken(SQLServerStatementParser.SIZE, 0); }
3773 		public TerminalNode CONTAINS() { return getToken(SQLServerStatementParser.CONTAINS, 0); }
3774 		public TerminalNode MONTH() { return getToken(SQLServerStatementParser.MONTH, 0); }
3775 		public TerminalNode INPUT() { return getToken(SQLServerStatementParser.INPUT, 0); }
3776 		public TerminalNode YEAR() { return getToken(SQLServerStatementParser.YEAR, 0); }
3777 		public TerminalNode TIMESTAMP() { return getToken(SQLServerStatementParser.TIMESTAMP, 0); }
3778 		public TerminalNode TRIM() { return getToken(SQLServerStatementParser.TRIM, 0); }
3779 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
3780 		public TerminalNode RIGHT() { return getToken(SQLServerStatementParser.RIGHT, 0); }
3781 		public TerminalNode JSON() { return getToken(SQLServerStatementParser.JSON, 0); }
3782 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
3783 		public UnreservedWordContext(ParserRuleContext parent, int invokingState) {
3784 			super(parent, invokingState);
3785 		}
3786 		@Override public int getRuleIndex() { return RULE_unreservedWord; }
3787 		@Override
3788 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3789 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUnreservedWord(this);
3790 			else return visitor.visitChildren(this);
3791 		}
3792 	}
3793 
3794 	public final UnreservedWordContext unreservedWord() throws RecognitionException {
3795 		UnreservedWordContext _localctx = new UnreservedWordContext(_ctx, getState());
3796 		enterRule(_localctx, 48, RULE_unreservedWord);
3797 		int _la;
3798 		try {
3799 			enterOuterAlt(_localctx, 1);
3800 			{
3801 			setState(1202);
3802 			_la = _input.LA(1);
3803 			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << TRUNCATE) | (1L << SCHEMA) | (1L << COLUMNS))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (PRECISION - 69)) | (1L << (FUNCTION - 69)) | (1L << (TRIGGER - 69)) | (1L << (CAST - 69)) | (1L << (TRIM - 69)) | (1L << (SUBSTRING - 69)) | (1L << (RIGHT - 69)) | (1L << (OFF - 69)) | (1L << (GROUP - 69)) | (1L << (LIMIT - 69)) | (1L << (OFFSET - 69)) | (1L << (SAVEPOINT - 69)) | (1L << (BOOLEAN - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (ARRAY - 133)) | (1L << (DATE - 133)) | (1L << (TIMESTAMP - 133)) | (1L << (LOCALTIME - 133)) | (1L << (LOCALTIMESTAMP - 133)) | (1L << (YEAR - 133)) | (1L << (QUARTER - 133)) | (1L << (MONTH - 133)) | (1L << (WEEK - 133)) | (1L << (DAY - 133)) | (1L << (SECOND - 133)) | (1L << (MICROSECOND - 133)) | (1L << (MAX - 133)) | (1L << (MIN - 133)) | (1L << (SUM - 133)) | (1L << (COUNT - 133)) | (1L << (AVG - 133)) | (1L << (ENABLE - 133)) | (1L << (DISABLE - 133)) | (1L << (INSTANCE - 133)) | (1L << (DO - 133)) | (1L << (DEFINER - 133)) | (1L << (SQL - 133)) | (1L << (CASCADED - 133)) | (1L << (LOCAL - 133)) | (1L << (NEXT - 133)) | (1L << (NAME - 133)) | (1L << (INTEGER - 133)) | (1L << (TYPE - 133)) | (1L << (TEXT - 133)) | (1L << (VIEWS - 133)))) != 0) || ((((_la - 203)) & ~0x3f) == 0 && ((1L << (_la - 203)) & ((1L << (READ_ONLY - 203)) | (1L << (DATABASE - 203)) | (1L << (RETURNS - 203)) | (1L << (DATEPART - 203)) | (1L << (PASSWORD - 203)) | (1L << (BINARY - 203)) | (1L << (HIDDEN_ - 203)) | (1L << (MOD - 203)) | (1L << (PARTITION - 203)) | (1L << (PARTITIONS - 203)) | (1L << (TOP - 203)) | (1L << (ROW - 203)) | (1L << (ROWS - 203)) | (1L << (XOR - 203)) | (1L << (ALWAYS - 203)) | (1L << (USER - 203)) | (1L << (ROLE - 203)) | (1L << (START - 203)) | (1L << (ALGORITHM - 203)))) != 0) || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & ((1L << (AUTO - 267)) | (1L << (BLOCKERS - 267)) | (1L << (CLUSTERED - 267)) | (1L << (NONCLUSTERED - 267)) | (1L << (COLUMNSTORE - 267)) | (1L << (CONTENT - 267)) | (1L << (YEARS - 267)) | (1L << (MONTHS - 267)) | (1L << (WEEKS - 267)) | (1L << (DAYS - 267)) | (1L << (MINUTES - 267)) | (1L << (DENY - 267)) | (1L << (DETERMINISTIC - 267)) | (1L << (DISTRIBUTION - 267)) | (1L << (DOCUMENT - 267)) | (1L << (DURABILITY - 267)) | (1L << (ENCRYPTED - 267)) | (1L << (FILESTREAM - 267)) | (1L << (FILETABLE - 267)) | (1L << (FILLFACTOR - 267)) | (1L << (FOLLOWING - 267)) | (1L << (HASH - 267)) | (1L << (HEAP - 267)) | (1L << (INBOUND - 267)) | (1L << (OUTBOUND - 267)) | (1L << (UNBOUNDED - 267)) | (1L << (INFINITE - 267)) | (1L << (LOGIN - 267)) | (1L << (MASKED - 267)) | (1L << (MAXDOP - 267)) | (1L << (MOVE - 267)) | (1L << (NOCHECK - 267)) | (1L << (OBJECT - 267)) | (1L << (ONLINE - 267)) | (1L << (OVER - 267)) | (1L << (PAGE - 267)) | (1L << (PAUSED - 267)) | (1L << (PERIOD - 267)) | (1L << (PERSISTED - 267)) | (1L << (PRECEDING - 267)) | (1L << (RANDOMIZED - 267)) | (1L << (RANGE - 267)) | (1L << (REBUILD - 267)) | (1L << (REPLICATE - 267)) | (1L << (REPLICATION - 267)) | (1L << (RESUMABLE - 267)) | (1L << (ROWGUIDCOL - 267)) | (1L << (SAVE - 267)) | (1L << (SELF - 267)) | (1L << (SPARSE - 267)) | (1L << (SWITCH - 267)) | (1L << (TRAN - 267)) | (1L << (TRANCOUNT - 267)))) != 0) || ((((_la - 332)) & ~0x3f) == 0 && ((1L << (_la - 332)) & ((1L << (CONTROL - 332)) | (1L << (CONCAT - 332)) | (1L << (TAKE - 332)) | (1L << (OWNERSHIP - 332)) | (1L << (DEFINITION - 332)) | (1L << (APPLICATION - 332)) | (1L << (ASSEMBLY - 332)) | (1L << (SYMMETRIC - 332)) | (1L << (ASYMMETRIC - 332)) | (1L << (SERVER - 332)) | (1L << (RECEIVE - 332)) | (1L << (CHANGE - 332)) | (1L << (TRACE - 332)) | (1L << (TRACKING - 332)) | (1L << (RESOURCES - 332)) | (1L << (SETTINGS - 332)) | (1L << (STATE - 332)) | (1L << (AVAILABILITY - 332)) | (1L << (CREDENTIAL - 332)) | (1L << (ENDPOINT - 332)) | (1L << (EVENT - 332)) | (1L << (NOTIFICATION - 332)) | (1L << (LINKED - 332)) | (1L << (AUDIT - 332)) | (1L << (DDL - 332)) | (1L << (XML - 332)) | (1L << (IMPERSONATE - 332)) | (1L << (SECURABLES - 332)) | (1L << (AUTHENTICATE - 332)) | (1L << (EXTERNAL - 332)) | (1L << (ACCESS - 332)) | (1L << (ADMINISTER - 332)) | (1L << (BULK - 332)) | (1L << (OPERATIONS - 332)) | (1L << (UNSAFE - 332)) | (1L << (SHUTDOWN - 332)) | (1L << (SCOPED - 332)) | (1L << (CONFIGURATION - 332)) | (1L << (DATASPACE - 332)) | (1L << (SERVICE - 332)) | (1L << (CERTIFICATE - 332)) | (1L << (CONTRACT - 332)) | (1L << (ENCRYPTION - 332)) | (1L << (MASTER - 332)) | (1L << (DATA - 332)) | (1L << (SOURCE - 332)) | (1L << (FILE - 332)) | (1L << (FORMAT - 332)) | (1L << (LIBRARY - 332)) | (1L << (FULLTEXT - 332)) | (1L << (MASK - 332)) | (1L << (UNMASK - 332)) | (1L << (MESSAGE - 332)) | (1L << (REMOTE - 332)) | (1L << (BINDING - 332)) | (1L << (ROUTE - 332)) | (1L << (SECURITY - 332)) | (1L << (POLICY - 332)) | (1L << (AGGREGATE - 332)) | (1L << (QUEUE - 332)) | (1L << (RULE - 332)) | (1L << (SYNONYM - 332)) | (1L << (COLLECTION - 332)) | (1L << (SCRIPT - 332)))) != 0) || ((((_la - 396)) & ~0x3f) == 0 && ((1L << (_la - 396)) & ((1L << (KILL - 396)) | (1L << (BACKUP - 396)) | (1L << (LOG - 396)) | (1L << (SHOWPLAN - 396)) | (1L << (SUBSCRIBE - 396)) | (1L << (QUERY - 396)) | (1L << (NOTIFICATIONS - 396)) | (1L << (CHECKPOINT - 396)) | (1L << (SEQUENCE - 396)) | (1L << (ABORT_AFTER_WAIT - 396)) | (1L << (ALLOW_PAGE_LOCKS - 396)) | (1L << (ALLOW_ROW_LOCKS - 396)) | (1L << (ALL_SPARSE_COLUMNS - 396)) | (1L << (BUCKET_COUNT - 396)) | (1L << (COLUMNSTORE_ARCHIVE - 396)) | (1L << (COLUMN_ENCRYPTION_KEY - 396)) | (1L << (COLUMN_SET - 396)) | (1L << (COMPRESSION_DELAY - 396)) | (1L << (DATABASE_DEAULT - 396)) | (1L << (DATA_COMPRESSION - 396)) | (1L << (DATA_CONSISTENCY_CHECK - 396)) | (1L << (ENCRYPTION_TYPE - 396)) | (1L << (SYSTEM_TIME - 396)) | (1L << (SYSTEM_VERSIONING - 396)) | (1L << (TEXTIMAGE_ON - 396)) | (1L << (WAIT_AT_LOW_PRIORITY - 396)) | (1L << (STATISTICS_INCREMENTAL - 396)) | (1L << (STATISTICS_NORECOMPUTE - 396)) | (1L << (ROUND_ROBIN - 396)) | (1L << (SCHEMA_AND_DATA - 396)) | (1L << (SCHEMA_ONLY - 396)) | (1L << (SORT_IN_TEMPDB - 396)) | (1L << (IGNORE_DUP_KEY - 396)) | (1L << (IMPLICIT_TRANSACTIONS - 396)) | (1L << (MAX_DURATION - 396)) | (1L << (MEMORY_OPTIMIZED - 396)) | (1L << (MIGRATION_STATE - 396)) | (1L << (PAD_INDEX - 396)) | (1L << (REMOTE_DATA_ARCHIVE - 396)) | (1L << (FILESTREAM_ON - 396)) | (1L << (FILETABLE_COLLATE_FILENAME - 396)) | (1L << (FILETABLE_DIRECTORY - 396)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 396)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 396)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 396)) | (1L << (FILTER_PREDICATE - 396)) | (1L << (HISTORY_RETENTION_PERIOD - 396)) | (1L << (HISTORY_TABLE - 396)) | (1L << (LOCK_ESCALATION - 396)) | (1L << (DROP_EXISTING - 396)) | (1L << (ROW_NUMBER - 396)) | (1L << (FIRST - 396)) | (1L << (DATETIME2 - 396)))) != 0) || ((((_la - 466)) & ~0x3f) == 0 && ((1L << (_la - 466)) & ((1L << (OUTPUT - 466)) | (1L << (INSERTED - 466)) | (1L << (DELETED - 466)) | (1L << (FILENAME - 466)) | (1L << (SIZE - 466)) | (1L << (MAXSIZE - 466)) | (1L << (FILEGROWTH - 466)) | (1L << (UNLIMITED - 466)) | (1L << (KB - 466)) | (1L << (MB - 466)) | (1L << (GB - 466)) | (1L << (TB - 466)) | (1L << (CONTAINS - 466)) | (1L << (MEMORY_OPTIMIZED_DATA - 466)) | (1L << (FILEGROUP - 466)) | (1L << (NON_TRANSACTED_ACCESS - 466)) | (1L << (DB_CHAINING - 466)) | (1L << (TRUSTWORTHY - 466)) | (1L << (FORWARD_ONLY - 466)) | (1L << (KEYSET - 466)) | (1L << (FAST_FORWARD - 466)) | (1L << (SCROLL_LOCKS - 466)) | (1L << (OPTIMISTIC - 466)) | (1L << (TYPE_WARNING - 466)) | (1L << (SCHEMABINDING - 466)))) != 0) || ((((_la - 530)) & ~0x3f) == 0 && ((1L << (_la - 530)) & ((1L << (CALLER - 530)) | (1L << (INPUT - 530)) | (1L << (OWNER - 530)) | (1L << (SNAPSHOT - 530)) | (1L << (REPEATABLE - 530)) | (1L << (SERIALIZABLE - 530)) | (1L << (NATIVE_COMPILATION - 530)) | (1L << (VIEW_METADATA - 530)) | (1L << (INSTEAD - 530)) | (1L << (APPEND - 530)) | (1L << (INCREMENT - 530)) | (1L << (CACHE - 530)) | (1L << (MINVALUE - 530)) | (1L << (MAXVALUE - 530)) | (1L << (RESTART - 530)) | (1L << (LOB_COMPACTION - 530)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 530)) | (1L << (REORGANIZE - 530)) | (1L << (RESUME - 530)) | (1L << (PAUSE - 530)) | (1L << (ABORT - 530)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 530)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 530)) | (1L << (IMMEDIATE - 530)) | (1L << (NO_WAIT - 530)) | (1L << (TARGET_RECOVERY_TIME - 530)) | (1L << (SECONDS - 530)) | (1L << (HONOR_BROKER_PRIORITY - 530)) | (1L << (ERROR_BROKER_CONVERSATIONS - 530)) | (1L << (NEW_BROKER - 530)) | (1L << (DISABLE_BROKER - 530)) | (1L << (ENABLE_BROKER - 530)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 530)) | (1L << (READ_COMMITTED_SNAPSHOT - 530)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 530)) | (1L << (RECURSIVE_TRIGGERS - 530)) | (1L << (QUOTED_IDENTIFIER - 530)) | (1L << (NUMERIC_ROUNDABORT - 530)) | (1L << (CONCAT_NULL_YIELDS_NULL - 530)) | (1L << (COMPATIBILITY_LEVEL - 530)) | (1L << (ARITHABORT - 530)) | (1L << (ANSI_WARNINGS - 530)) | (1L << (ANSI_PADDING - 530)) | (1L << (ANSI_NULLS - 530)))) != 0) || ((((_la - 594)) & ~0x3f) == 0 && ((1L << (_la - 594)) & ((1L << (ANSI_NULL_DEFAULT - 594)) | (1L << (PAGE_VERIFY - 594)) | (1L << (CHECKSUM - 594)) | (1L << (TORN_PAGE_DETECTION - 594)) | (1L << (BULK_LOGGED - 594)) | (1L << (RECOVERY - 594)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 594)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 594)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 594)) | (1L << (EXECUTION_COUNT - 594)) | (1L << (QUERY_CAPTURE_POLICY - 594)) | (1L << (WAIT_STATS_CAPTURE_MODE - 594)) | (1L << (MAX_PLANS_PER_QUERY - 594)) | (1L << (QUERY_CAPTURE_MODE - 594)) | (1L << (SIZE_BASED_CLEANUP_MODE - 594)) | (1L << (INTERVAL_LENGTH_MINUTES - 594)) | (1L << (MAX_STORAGE_SIZE_MB - 594)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 594)) | (1L << (CLEANUP_POLICY - 594)) | (1L << (CUSTOM - 594)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 594)) | (1L << (OPERATION_MODE - 594)) | (1L << (QUERY_STORE - 594)) | (1L << (CURSOR_DEFAULT - 594)) | (1L << (GLOBAL - 594)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 594)) | (1L << (HOURS - 594)) | (1L << (CHANGE_RETENTION - 594)) | (1L << (AUTO_CLEANUP - 594)) | (1L << (CHANGE_TRACKING - 594)) | (1L << (AUTOMATIC_TUNING - 594)) | (1L << (FORCE_LAST_GOOD_PLAN - 594)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 594)) | (1L << (AUTO_UPDATE_STATISTICS - 594)) | (1L << (AUTO_SHRINK - 594)) | (1L << (AUTO_CREATE_STATISTICS - 594)) | (1L << (INCREMENTAL - 594)) | (1L << (AUTO_CLOSE - 594)) | (1L << (DATA_RETENTION - 594)) | (1L << (TEMPORAL_HISTORY_RETENTION - 594)) | (1L << (EDITION - 594)) | (1L << (MIXED_PAGE_ALLOCATION - 594)) | (1L << (DISABLED - 594)) | (1L << (ALLOWED - 594)) | (1L << (HADR - 594)) | (1L << (MULTI_USER - 594)) | (1L << (RESTRICTED_USER - 594)) | (1L << (SINGLE_USER - 594)) | (1L << (OFFLINE - 594)) | (1L << (EMERGENCY - 594)) | (1L << (SUSPEND - 594)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 594)) | (1L << (ELASTIC_POOL - 594)) | (1L << (SERVICE_OBJECTIVE - 594)) | (1L << (DATABASE_NAME - 594)) | (1L << (ALLOW_CONNECTIONS - 594)) | (1L << (GEO - 594)) | (1L << (NAMED - 594)) | (1L << (DATEFIRST - 594)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 594)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 594)) | (1L << (SECONDARY - 594)) | (1L << (FAILOVER - 594)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 594)))) != 0) || ((((_la - 658)) & ~0x3f) == 0 && ((1L << (_la - 658)) & ((1L << (DEFAULT_LANGUAGE - 658)) | (1L << (INLINE - 658)) | (1L << (NESTED_TRIGGERS - 658)) | (1L << (TRANSFORM_NOISE_WORDS - 658)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 658)) | (1L << (PERSISTENT_LOG_BUFFER - 658)) | (1L << (DIRECTORY_NAME - 658)) | (1L << (DATEFORMAT - 658)) | (1L << (DELAYED_DURABILITY - 658)) | (1L << (AUTHORIZATION - 658)) | (1L << (TRANSFER - 658)) | (1L << (PROVIDER - 658)) | (1L << (SID - 658)) | (1L << (SEARCH - 658)) | (1L << (MEMBER - 658)) | (1L << (JSON - 658)))) != 0)) ) {
3804 			_errHandler.recoverInline(this);
3805 			}
3806 			else {
3807 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
3808 				_errHandler.reportMatch(this);
3809 				consume();
3810 			}
3811 			}
3812 		}
3813 		catch (RecognitionException re) {
3814 			_localctx.exception = re;
3815 			_errHandler.reportError(this, re);
3816 			_errHandler.recover(this, re);
3817 		}
3818 		finally {
3819 			exitRule();
3820 		}
3821 		return _localctx;
3822 	}
3823 
3824 	public static class DatabaseNameContext extends ParserRuleContext {
3825 		public IdentifierContext identifier() {
3826 			return getRuleContext(IdentifierContext.class,0);
3827 		}
3828 		public DatabaseNameContext(ParserRuleContext parent, int invokingState) {
3829 			super(parent, invokingState);
3830 		}
3831 		@Override public int getRuleIndex() { return RULE_databaseName; }
3832 		@Override
3833 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3834 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseName(this);
3835 			else return visitor.visitChildren(this);
3836 		}
3837 	}
3838 
3839 	public final DatabaseNameContext databaseName() throws RecognitionException {
3840 		DatabaseNameContext _localctx = new DatabaseNameContext(_ctx, getState());
3841 		enterRule(_localctx, 50, RULE_databaseName);
3842 		try {
3843 			enterOuterAlt(_localctx, 1);
3844 			{
3845 			setState(1204);
3846 			identifier();
3847 			}
3848 		}
3849 		catch (RecognitionException re) {
3850 			_localctx.exception = re;
3851 			_errHandler.reportError(this, re);
3852 			_errHandler.recover(this, re);
3853 		}
3854 		finally {
3855 			exitRule();
3856 		}
3857 		return _localctx;
3858 	}
3859 
3860 	public static class SchemaNameContext extends ParserRuleContext {
3861 		public IdentifierContext identifier() {
3862 			return getRuleContext(IdentifierContext.class,0);
3863 		}
3864 		public SchemaNameContext(ParserRuleContext parent, int invokingState) {
3865 			super(parent, invokingState);
3866 		}
3867 		@Override public int getRuleIndex() { return RULE_schemaName; }
3868 		@Override
3869 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3870 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaName(this);
3871 			else return visitor.visitChildren(this);
3872 		}
3873 	}
3874 
3875 	public final SchemaNameContext schemaName() throws RecognitionException {
3876 		SchemaNameContext _localctx = new SchemaNameContext(_ctx, getState());
3877 		enterRule(_localctx, 52, RULE_schemaName);
3878 		try {
3879 			enterOuterAlt(_localctx, 1);
3880 			{
3881 			setState(1206);
3882 			identifier();
3883 			}
3884 		}
3885 		catch (RecognitionException re) {
3886 			_localctx.exception = re;
3887 			_errHandler.reportError(this, re);
3888 			_errHandler.recover(this, re);
3889 		}
3890 		finally {
3891 			exitRule();
3892 		}
3893 		return _localctx;
3894 	}
3895 
3896 	public static class FunctionNameContext extends ParserRuleContext {
3897 		public NameContext name() {
3898 			return getRuleContext(NameContext.class,0);
3899 		}
3900 		public OwnerContext owner() {
3901 			return getRuleContext(OwnerContext.class,0);
3902 		}
3903 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
3904 		public FunctionNameContext(ParserRuleContext parent, int invokingState) {
3905 			super(parent, invokingState);
3906 		}
3907 		@Override public int getRuleIndex() { return RULE_functionName; }
3908 		@Override
3909 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3910 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFunctionName(this);
3911 			else return visitor.visitChildren(this);
3912 		}
3913 	}
3914 
3915 	public final FunctionNameContext functionName() throws RecognitionException {
3916 		FunctionNameContext _localctx = new FunctionNameContext(_ctx, getState());
3917 		enterRule(_localctx, 54, RULE_functionName);
3918 		try {
3919 			enterOuterAlt(_localctx, 1);
3920 			{
3921 			setState(1211);
3922 			_errHandler.sync(this);
3923 			switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
3924 			case 1:
3925 				{
3926 				setState(1208);
3927 				owner();
3928 				setState(1209);
3929 				match(DOT_);
3930 				}
3931 				break;
3932 			}
3933 			setState(1213);
3934 			name();
3935 			}
3936 		}
3937 		catch (RecognitionException re) {
3938 			_localctx.exception = re;
3939 			_errHandler.reportError(this, re);
3940 			_errHandler.recover(this, re);
3941 		}
3942 		finally {
3943 			exitRule();
3944 		}
3945 		return _localctx;
3946 	}
3947 
3948 	public static class ProcedureNameContext extends ParserRuleContext {
3949 		public NameContext name() {
3950 			return getRuleContext(NameContext.class,0);
3951 		}
3952 		public OwnerContext owner() {
3953 			return getRuleContext(OwnerContext.class,0);
3954 		}
3955 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
3956 		public TerminalNode SEMI_() { return getToken(SQLServerStatementParser.SEMI_, 0); }
3957 		public NumberLiteralsContext numberLiterals() {
3958 			return getRuleContext(NumberLiteralsContext.class,0);
3959 		}
3960 		public ProcedureNameContext(ParserRuleContext parent, int invokingState) {
3961 			super(parent, invokingState);
3962 		}
3963 		@Override public int getRuleIndex() { return RULE_procedureName; }
3964 		@Override
3965 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
3966 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcedureName(this);
3967 			else return visitor.visitChildren(this);
3968 		}
3969 	}
3970 
3971 	public final ProcedureNameContext procedureName() throws RecognitionException {
3972 		ProcedureNameContext _localctx = new ProcedureNameContext(_ctx, getState());
3973 		enterRule(_localctx, 56, RULE_procedureName);
3974 		try {
3975 			enterOuterAlt(_localctx, 1);
3976 			{
3977 			setState(1218);
3978 			_errHandler.sync(this);
3979 			switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) {
3980 			case 1:
3981 				{
3982 				setState(1215);
3983 				owner();
3984 				setState(1216);
3985 				match(DOT_);
3986 				}
3987 				break;
3988 			}
3989 			setState(1220);
3990 			name();
3991 			setState(1223);
3992 			_errHandler.sync(this);
3993 			switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) {
3994 			case 1:
3995 				{
3996 				setState(1221);
3997 				match(SEMI_);
3998 				setState(1222);
3999 				numberLiterals();
4000 				}
4001 				break;
4002 			}
4003 			}
4004 		}
4005 		catch (RecognitionException re) {
4006 			_localctx.exception = re;
4007 			_errHandler.reportError(this, re);
4008 			_errHandler.recover(this, re);
4009 		}
4010 		finally {
4011 			exitRule();
4012 		}
4013 		return _localctx;
4014 	}
4015 
4016 	public static class ViewNameContext extends ParserRuleContext {
4017 		public NameContext name() {
4018 			return getRuleContext(NameContext.class,0);
4019 		}
4020 		public OwnerContext owner() {
4021 			return getRuleContext(OwnerContext.class,0);
4022 		}
4023 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4024 		public ViewNameContext(ParserRuleContext parent, int invokingState) {
4025 			super(parent, invokingState);
4026 		}
4027 		@Override public int getRuleIndex() { return RULE_viewName; }
4028 		@Override
4029 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4030 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitViewName(this);
4031 			else return visitor.visitChildren(this);
4032 		}
4033 	}
4034 
4035 	public final ViewNameContext viewName() throws RecognitionException {
4036 		ViewNameContext _localctx = new ViewNameContext(_ctx, getState());
4037 		enterRule(_localctx, 58, RULE_viewName);
4038 		try {
4039 			enterOuterAlt(_localctx, 1);
4040 			{
4041 			setState(1228);
4042 			_errHandler.sync(this);
4043 			switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) {
4044 			case 1:
4045 				{
4046 				setState(1225);
4047 				owner();
4048 				setState(1226);
4049 				match(DOT_);
4050 				}
4051 				break;
4052 			}
4053 			setState(1230);
4054 			name();
4055 			}
4056 		}
4057 		catch (RecognitionException re) {
4058 			_localctx.exception = re;
4059 			_errHandler.reportError(this, re);
4060 			_errHandler.recover(this, re);
4061 		}
4062 		finally {
4063 			exitRule();
4064 		}
4065 		return _localctx;
4066 	}
4067 
4068 	public static class TriggerNameContext extends ParserRuleContext {
4069 		public NameContext name() {
4070 			return getRuleContext(NameContext.class,0);
4071 		}
4072 		public SchemaNameContext schemaName() {
4073 			return getRuleContext(SchemaNameContext.class,0);
4074 		}
4075 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4076 		public TriggerNameContext(ParserRuleContext parent, int invokingState) {
4077 			super(parent, invokingState);
4078 		}
4079 		@Override public int getRuleIndex() { return RULE_triggerName; }
4080 		@Override
4081 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4082 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTriggerName(this);
4083 			else return visitor.visitChildren(this);
4084 		}
4085 	}
4086 
4087 	public final TriggerNameContext triggerName() throws RecognitionException {
4088 		TriggerNameContext _localctx = new TriggerNameContext(_ctx, getState());
4089 		enterRule(_localctx, 60, RULE_triggerName);
4090 		try {
4091 			enterOuterAlt(_localctx, 1);
4092 			{
4093 			setState(1235);
4094 			_errHandler.sync(this);
4095 			switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) {
4096 			case 1:
4097 				{
4098 				setState(1232);
4099 				schemaName();
4100 				setState(1233);
4101 				match(DOT_);
4102 				}
4103 				break;
4104 			}
4105 			setState(1237);
4106 			name();
4107 			}
4108 		}
4109 		catch (RecognitionException re) {
4110 			_localctx.exception = re;
4111 			_errHandler.reportError(this, re);
4112 			_errHandler.recover(this, re);
4113 		}
4114 		finally {
4115 			exitRule();
4116 		}
4117 		return _localctx;
4118 	}
4119 
4120 	public static class SequenceNameContext extends ParserRuleContext {
4121 		public NameContext name() {
4122 			return getRuleContext(NameContext.class,0);
4123 		}
4124 		public SchemaNameContext schemaName() {
4125 			return getRuleContext(SchemaNameContext.class,0);
4126 		}
4127 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4128 		public SequenceNameContext(ParserRuleContext parent, int invokingState) {
4129 			super(parent, invokingState);
4130 		}
4131 		@Override public int getRuleIndex() { return RULE_sequenceName; }
4132 		@Override
4133 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4134 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSequenceName(this);
4135 			else return visitor.visitChildren(this);
4136 		}
4137 	}
4138 
4139 	public final SequenceNameContext sequenceName() throws RecognitionException {
4140 		SequenceNameContext _localctx = new SequenceNameContext(_ctx, getState());
4141 		enterRule(_localctx, 62, RULE_sequenceName);
4142 		try {
4143 			enterOuterAlt(_localctx, 1);
4144 			{
4145 			setState(1242);
4146 			_errHandler.sync(this);
4147 			switch ( getInterpreter().adaptivePredict(_input,25,_ctx) ) {
4148 			case 1:
4149 				{
4150 				setState(1239);
4151 				schemaName();
4152 				setState(1240);
4153 				match(DOT_);
4154 				}
4155 				break;
4156 			}
4157 			setState(1244);
4158 			name();
4159 			}
4160 		}
4161 		catch (RecognitionException re) {
4162 			_localctx.exception = re;
4163 			_errHandler.reportError(this, re);
4164 			_errHandler.recover(this, re);
4165 		}
4166 		finally {
4167 			exitRule();
4168 		}
4169 		return _localctx;
4170 	}
4171 
4172 	public static class TableNameContext extends ParserRuleContext {
4173 		public NameContext name() {
4174 			return getRuleContext(NameContext.class,0);
4175 		}
4176 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
4177 		public TerminalNode DOT_(int i) {
4178 			return getToken(SQLServerStatementParser.DOT_, i);
4179 		}
4180 		public DatabaseNameContext databaseName() {
4181 			return getRuleContext(DatabaseNameContext.class,0);
4182 		}
4183 		public OwnerContext owner() {
4184 			return getRuleContext(OwnerContext.class,0);
4185 		}
4186 		public TableNameContext(ParserRuleContext parent, int invokingState) {
4187 			super(parent, invokingState);
4188 		}
4189 		@Override public int getRuleIndex() { return RULE_tableName; }
4190 		@Override
4191 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4192 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableName(this);
4193 			else return visitor.visitChildren(this);
4194 		}
4195 	}
4196 
4197 	public final TableNameContext tableName() throws RecognitionException {
4198 		TableNameContext _localctx = new TableNameContext(_ctx, getState());
4199 		enterRule(_localctx, 64, RULE_tableName);
4200 		int _la;
4201 		try {
4202 			enterOuterAlt(_localctx, 1);
4203 			{
4204 			setState(1255);
4205 			_errHandler.sync(this);
4206 			switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
4207 			case 1:
4208 				{
4209 				setState(1249);
4210 				_errHandler.sync(this);
4211 				switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
4212 				case 1:
4213 					{
4214 					setState(1246);
4215 					databaseName();
4216 					setState(1247);
4217 					match(DOT_);
4218 					}
4219 					break;
4220 				}
4221 				{
4222 				setState(1252);
4223 				_errHandler.sync(this);
4224 				_la = _input.LA(1);
4225 				if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (TRIM - 53)) | (1L << (SUBSTRING - 53)) | (1L << (RIGHT - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (TIMESTAMP - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (YEAR - 118)) | (1L << (QUARTER - 118)) | (1L << (MONTH - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)))) != 0) || ((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (TOP - 248)) | (1L << (ROW - 248)) | (1L << (ROWS - 248)) | (1L << (XOR - 248)) | (1L << (ALWAYS - 248)) | (1L << (USER - 248)) | (1L << (ROLE - 248)) | (1L << (START - 248)) | (1L << (ALGORITHM - 248)) | (1L << (AUTO - 248)) | (1L << (BLOCKERS - 248)) | (1L << (CLUSTERED - 248)) | (1L << (NONCLUSTERED - 248)) | (1L << (COLUMNSTORE - 248)) | (1L << (CONTENT - 248)) | (1L << (YEARS - 248)) | (1L << (MONTHS - 248)) | (1L << (WEEKS - 248)) | (1L << (DAYS - 248)) | (1L << (MINUTES - 248)) | (1L << (DENY - 248)) | (1L << (DETERMINISTIC - 248)) | (1L << (DISTRIBUTION - 248)) | (1L << (DOCUMENT - 248)) | (1L << (DURABILITY - 248)) | (1L << (ENCRYPTED - 248)) | (1L << (FILESTREAM - 248)) | (1L << (FILETABLE - 248)) | (1L << (FILLFACTOR - 248)) | (1L << (FOLLOWING - 248)) | (1L << (HASH - 248)) | (1L << (HEAP - 248)) | (1L << (INBOUND - 248)) | (1L << (OUTBOUND - 248)) | (1L << (UNBOUNDED - 248)) | (1L << (INFINITE - 248)) | (1L << (LOGIN - 248)) | (1L << (MASKED - 248)) | (1L << (MAXDOP - 248)) | (1L << (MOVE - 248)) | (1L << (NOCHECK - 248)) | (1L << (OBJECT - 248)) | (1L << (ONLINE - 248)) | (1L << (OVER - 248)) | (1L << (PAGE - 248)) | (1L << (PAUSED - 248)) | (1L << (PERIOD - 248)) | (1L << (PERSISTED - 248)) | (1L << (PRECEDING - 248)))) != 0) || ((((_la - 312)) & ~0x3f) == 0 && ((1L << (_la - 312)) & ((1L << (RANDOMIZED - 312)) | (1L << (RANGE - 312)) | (1L << (REBUILD - 312)) | (1L << (REPLICATE - 312)) | (1L << (REPLICATION - 312)) | (1L << (RESUMABLE - 312)) | (1L << (ROWGUIDCOL - 312)) | (1L << (SAVE - 312)) | (1L << (SELF - 312)) | (1L << (SPARSE - 312)) | (1L << (SWITCH - 312)) | (1L << (TRAN - 312)) | (1L << (TRANCOUNT - 312)) | (1L << (CONTROL - 312)) | (1L << (CONCAT - 312)) | (1L << (TAKE - 312)) | (1L << (OWNERSHIP - 312)) | (1L << (DEFINITION - 312)) | (1L << (APPLICATION - 312)) | (1L << (ASSEMBLY - 312)) | (1L << (SYMMETRIC - 312)) | (1L << (ASYMMETRIC - 312)) | (1L << (SERVER - 312)) | (1L << (RECEIVE - 312)) | (1L << (CHANGE - 312)) | (1L << (TRACE - 312)) | (1L << (TRACKING - 312)) | (1L << (RESOURCES - 312)) | (1L << (SETTINGS - 312)) | (1L << (STATE - 312)) | (1L << (AVAILABILITY - 312)) | (1L << (CREDENTIAL - 312)) | (1L << (ENDPOINT - 312)) | (1L << (EVENT - 312)) | (1L << (NOTIFICATION - 312)) | (1L << (LINKED - 312)) | (1L << (AUDIT - 312)) | (1L << (DDL - 312)) | (1L << (XML - 312)) | (1L << (IMPERSONATE - 312)) | (1L << (SECURABLES - 312)) | (1L << (AUTHENTICATE - 312)) | (1L << (EXTERNAL - 312)) | (1L << (ACCESS - 312)) | (1L << (ADMINISTER - 312)) | (1L << (BULK - 312)) | (1L << (OPERATIONS - 312)) | (1L << (UNSAFE - 312)) | (1L << (SHUTDOWN - 312)) | (1L << (SCOPED - 312)) | (1L << (CONFIGURATION - 312)) | (1L << (DATASPACE - 312)) | (1L << (SERVICE - 312)) | (1L << (CERTIFICATE - 312)) | (1L << (CONTRACT - 312)) | (1L << (ENCRYPTION - 312)) | (1L << (MASTER - 312)))) != 0) || ((((_la - 376)) & ~0x3f) == 0 && ((1L << (_la - 376)) & ((1L << (DATA - 376)) | (1L << (SOURCE - 376)) | (1L << (FILE - 376)) | (1L << (FORMAT - 376)) | (1L << (LIBRARY - 376)) | (1L << (FULLTEXT - 376)) | (1L << (MASK - 376)) | (1L << (UNMASK - 376)) | (1L << (MESSAGE - 376)) | (1L << (REMOTE - 376)) | (1L << (BINDING - 376)) | (1L << (ROUTE - 376)) | (1L << (SECURITY - 376)) | (1L << (POLICY - 376)) | (1L << (AGGREGATE - 376)) | (1L << (QUEUE - 376)) | (1L << (RULE - 376)) | (1L << (SYNONYM - 376)) | (1L << (COLLECTION - 376)) | (1L << (SCRIPT - 376)) | (1L << (KILL - 376)) | (1L << (BACKUP - 376)) | (1L << (LOG - 376)) | (1L << (SHOWPLAN - 376)) | (1L << (SUBSCRIBE - 376)) | (1L << (QUERY - 376)) | (1L << (NOTIFICATIONS - 376)) | (1L << (CHECKPOINT - 376)) | (1L << (SEQUENCE - 376)) | (1L << (ABORT_AFTER_WAIT - 376)) | (1L << (ALLOW_PAGE_LOCKS - 376)) | (1L << (ALLOW_ROW_LOCKS - 376)) | (1L << (ALL_SPARSE_COLUMNS - 376)) | (1L << (BUCKET_COUNT - 376)) | (1L << (COLUMNSTORE_ARCHIVE - 376)) | (1L << (COLUMN_ENCRYPTION_KEY - 376)) | (1L << (COLUMN_SET - 376)) | (1L << (COMPRESSION_DELAY - 376)) | (1L << (DATABASE_DEAULT - 376)) | (1L << (DATA_COMPRESSION - 376)) | (1L << (DATA_CONSISTENCY_CHECK - 376)) | (1L << (ENCRYPTION_TYPE - 376)) | (1L << (SYSTEM_TIME - 376)) | (1L << (SYSTEM_VERSIONING - 376)) | (1L << (TEXTIMAGE_ON - 376)) | (1L << (WAIT_AT_LOW_PRIORITY - 376)) | (1L << (STATISTICS_INCREMENTAL - 376)) | (1L << (STATISTICS_NORECOMPUTE - 376)) | (1L << (ROUND_ROBIN - 376)) | (1L << (SCHEMA_AND_DATA - 376)) | (1L << (SCHEMA_ONLY - 376)) | (1L << (SORT_IN_TEMPDB - 376)) | (1L << (IGNORE_DUP_KEY - 376)) | (1L << (IMPLICIT_TRANSACTIONS - 376)) | (1L << (MAX_DURATION - 376)) | (1L << (MEMORY_OPTIMIZED - 376)) | (1L << (MIGRATION_STATE - 376)) | (1L << (PAD_INDEX - 376)) | (1L << (REMOTE_DATA_ARCHIVE - 376)) | (1L << (FILESTREAM_ON - 376)) | (1L << (FILETABLE_COLLATE_FILENAME - 376)) | (1L << (FILETABLE_DIRECTORY - 376)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 376)))) != 0) || ((((_la - 440)) & ~0x3f) == 0 && ((1L << (_la - 440)) & ((1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 440)) | (1L << (FILTER_PREDICATE - 440)) | (1L << (HISTORY_RETENTION_PERIOD - 440)) | (1L << (HISTORY_TABLE - 440)) | (1L << (LOCK_ESCALATION - 440)) | (1L << (DROP_EXISTING - 440)) | (1L << (ROW_NUMBER - 440)) | (1L << (FIRST - 440)) | (1L << (DATETIME2 - 440)) | (1L << (OUTPUT - 440)) | (1L << (INSERTED - 440)) | (1L << (DELETED - 440)))) != 0) || ((((_la - 505)) & ~0x3f) == 0 && ((1L << (_la - 505)) & ((1L << (FILENAME - 505)) | (1L << (SIZE - 505)) | (1L << (MAXSIZE - 505)) | (1L << (FILEGROWTH - 505)) | (1L << (UNLIMITED - 505)) | (1L << (KB - 505)) | (1L << (MB - 505)) | (1L << (GB - 505)) | (1L << (TB - 505)) | (1L << (CONTAINS - 505)) | (1L << (MEMORY_OPTIMIZED_DATA - 505)) | (1L << (FILEGROUP - 505)) | (1L << (NON_TRANSACTED_ACCESS - 505)) | (1L << (DB_CHAINING - 505)) | (1L << (TRUSTWORTHY - 505)) | (1L << (FORWARD_ONLY - 505)) | (1L << (KEYSET - 505)) | (1L << (FAST_FORWARD - 505)) | (1L << (SCROLL_LOCKS - 505)) | (1L << (OPTIMISTIC - 505)) | (1L << (TYPE_WARNING - 505)) | (1L << (SCHEMABINDING - 505)) | (1L << (CALLER - 505)) | (1L << (INPUT - 505)) | (1L << (OWNER - 505)) | (1L << (SNAPSHOT - 505)) | (1L << (REPEATABLE - 505)) | (1L << (SERIALIZABLE - 505)) | (1L << (NATIVE_COMPILATION - 505)) | (1L << (VIEW_METADATA - 505)) | (1L << (INSTEAD - 505)) | (1L << (APPEND - 505)) | (1L << (INCREMENT - 505)) | (1L << (CACHE - 505)) | (1L << (MINVALUE - 505)) | (1L << (MAXVALUE - 505)) | (1L << (RESTART - 505)) | (1L << (LOB_COMPACTION - 505)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 505)) | (1L << (REORGANIZE - 505)) | (1L << (RESUME - 505)) | (1L << (PAUSE - 505)) | (1L << (ABORT - 505)))) != 0) || ((((_la - 571)) & ~0x3f) == 0 && ((1L << (_la - 571)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 571)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 571)) | (1L << (IMMEDIATE - 571)) | (1L << (NO_WAIT - 571)) | (1L << (TARGET_RECOVERY_TIME - 571)) | (1L << (SECONDS - 571)) | (1L << (HONOR_BROKER_PRIORITY - 571)) | (1L << (ERROR_BROKER_CONVERSATIONS - 571)) | (1L << (NEW_BROKER - 571)) | (1L << (DISABLE_BROKER - 571)) | (1L << (ENABLE_BROKER - 571)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 571)) | (1L << (READ_COMMITTED_SNAPSHOT - 571)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 571)) | (1L << (RECURSIVE_TRIGGERS - 571)) | (1L << (QUOTED_IDENTIFIER - 571)) | (1L << (NUMERIC_ROUNDABORT - 571)) | (1L << (CONCAT_NULL_YIELDS_NULL - 571)) | (1L << (COMPATIBILITY_LEVEL - 571)) | (1L << (ARITHABORT - 571)) | (1L << (ANSI_WARNINGS - 571)) | (1L << (ANSI_PADDING - 571)) | (1L << (ANSI_NULLS - 571)) | (1L << (ANSI_NULL_DEFAULT - 571)) | (1L << (PAGE_VERIFY - 571)) | (1L << (CHECKSUM - 571)) | (1L << (TORN_PAGE_DETECTION - 571)) | (1L << (BULK_LOGGED - 571)) | (1L << (RECOVERY - 571)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 571)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 571)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 571)) | (1L << (EXECUTION_COUNT - 571)) | (1L << (QUERY_CAPTURE_POLICY - 571)) | (1L << (WAIT_STATS_CAPTURE_MODE - 571)) | (1L << (MAX_PLANS_PER_QUERY - 571)) | (1L << (QUERY_CAPTURE_MODE - 571)) | (1L << (SIZE_BASED_CLEANUP_MODE - 571)) | (1L << (INTERVAL_LENGTH_MINUTES - 571)) | (1L << (MAX_STORAGE_SIZE_MB - 571)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 571)) | (1L << (CLEANUP_POLICY - 571)) | (1L << (CUSTOM - 571)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 571)) | (1L << (OPERATION_MODE - 571)) | (1L << (QUERY_STORE - 571)) | (1L << (CURSOR_DEFAULT - 571)) | (1L << (GLOBAL - 571)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 571)) | (1L << (HOURS - 571)) | (1L << (CHANGE_RETENTION - 571)) | (1L << (AUTO_CLEANUP - 571)) | (1L << (CHANGE_TRACKING - 571)) | (1L << (AUTOMATIC_TUNING - 571)) | (1L << (FORCE_LAST_GOOD_PLAN - 571)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 571)) | (1L << (AUTO_UPDATE_STATISTICS - 571)) | (1L << (AUTO_SHRINK - 571)) | (1L << (AUTO_CREATE_STATISTICS - 571)) | (1L << (INCREMENTAL - 571)) | (1L << (AUTO_CLOSE - 571)) | (1L << (DATA_RETENTION - 571)) | (1L << (TEMPORAL_HISTORY_RETENTION - 571)) | (1L << (EDITION - 571)))) != 0) || ((((_la - 635)) & ~0x3f) == 0 && ((1L << (_la - 635)) & ((1L << (MIXED_PAGE_ALLOCATION - 635)) | (1L << (DISABLED - 635)) | (1L << (ALLOWED - 635)) | (1L << (HADR - 635)) | (1L << (MULTI_USER - 635)) | (1L << (RESTRICTED_USER - 635)) | (1L << (SINGLE_USER - 635)) | (1L << (OFFLINE - 635)) | (1L << (EMERGENCY - 635)) | (1L << (SUSPEND - 635)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 635)) | (1L << (ELASTIC_POOL - 635)) | (1L << (SERVICE_OBJECTIVE - 635)) | (1L << (DATABASE_NAME - 635)) | (1L << (ALLOW_CONNECTIONS - 635)) | (1L << (GEO - 635)) | (1L << (NAMED - 635)) | (1L << (DATEFIRST - 635)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 635)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 635)) | (1L << (SECONDARY - 635)) | (1L << (FAILOVER - 635)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 635)) | (1L << (DEFAULT_LANGUAGE - 635)) | (1L << (INLINE - 635)) | (1L << (NESTED_TRIGGERS - 635)) | (1L << (TRANSFORM_NOISE_WORDS - 635)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 635)) | (1L << (PERSISTENT_LOG_BUFFER - 635)) | (1L << (DIRECTORY_NAME - 635)) | (1L << (DATEFORMAT - 635)) | (1L << (DELAYED_DURABILITY - 635)) | (1L << (AUTHORIZATION - 635)) | (1L << (TRANSFER - 635)) | (1L << (PROVIDER - 635)) | (1L << (SID - 635)) | (1L << (SEARCH - 635)) | (1L << (MEMBER - 635)))) != 0) || ((((_la - 707)) & ~0x3f) == 0 && ((1L << (_la - 707)) & ((1L << (JSON - 707)) | (1L << (IDENTIFIER_ - 707)) | (1L << (DELIMITED_IDENTIFIER_ - 707)))) != 0)) {
4226 					{
4227 					setState(1251);
4228 					owner();
4229 					}
4230 				}
4231 
4232 				setState(1254);
4233 				match(DOT_);
4234 				}
4235 				}
4236 				break;
4237 			}
4238 			setState(1257);
4239 			name();
4240 			}
4241 		}
4242 		catch (RecognitionException re) {
4243 			_localctx.exception = re;
4244 			_errHandler.reportError(this, re);
4245 			_errHandler.recover(this, re);
4246 		}
4247 		finally {
4248 			exitRule();
4249 		}
4250 		return _localctx;
4251 	}
4252 
4253 	public static class QueueNameContext extends ParserRuleContext {
4254 		public NameContext name() {
4255 			return getRuleContext(NameContext.class,0);
4256 		}
4257 		public SchemaNameContext schemaName() {
4258 			return getRuleContext(SchemaNameContext.class,0);
4259 		}
4260 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
4261 		public QueueNameContext(ParserRuleContext parent, int invokingState) {
4262 			super(parent, invokingState);
4263 		}
4264 		@Override public int getRuleIndex() { return RULE_queueName; }
4265 		@Override
4266 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4267 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueueName(this);
4268 			else return visitor.visitChildren(this);
4269 		}
4270 	}
4271 
4272 	public final QueueNameContext queueName() throws RecognitionException {
4273 		QueueNameContext _localctx = new QueueNameContext(_ctx, getState());
4274 		enterRule(_localctx, 66, RULE_queueName);
4275 		try {
4276 			enterOuterAlt(_localctx, 1);
4277 			{
4278 			setState(1262);
4279 			_errHandler.sync(this);
4280 			switch ( getInterpreter().adaptivePredict(_input,29,_ctx) ) {
4281 			case 1:
4282 				{
4283 				setState(1259);
4284 				schemaName();
4285 				setState(1260);
4286 				match(DOT_);
4287 				}
4288 				break;
4289 			}
4290 			setState(1264);
4291 			name();
4292 			}
4293 		}
4294 		catch (RecognitionException re) {
4295 			_localctx.exception = re;
4296 			_errHandler.reportError(this, re);
4297 			_errHandler.recover(this, re);
4298 		}
4299 		finally {
4300 			exitRule();
4301 		}
4302 		return _localctx;
4303 	}
4304 
4305 	public static class ContractNameContext extends ParserRuleContext {
4306 		public NameContext name() {
4307 			return getRuleContext(NameContext.class,0);
4308 		}
4309 		public ContractNameContext(ParserRuleContext parent, int invokingState) {
4310 			super(parent, invokingState);
4311 		}
4312 		@Override public int getRuleIndex() { return RULE_contractName; }
4313 		@Override
4314 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4315 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitContractName(this);
4316 			else return visitor.visitChildren(this);
4317 		}
4318 	}
4319 
4320 	public final ContractNameContext contractName() throws RecognitionException {
4321 		ContractNameContext _localctx = new ContractNameContext(_ctx, getState());
4322 		enterRule(_localctx, 68, RULE_contractName);
4323 		try {
4324 			enterOuterAlt(_localctx, 1);
4325 			{
4326 			setState(1266);
4327 			name();
4328 			}
4329 		}
4330 		catch (RecognitionException re) {
4331 			_localctx.exception = re;
4332 			_errHandler.reportError(this, re);
4333 			_errHandler.recover(this, re);
4334 		}
4335 		finally {
4336 			exitRule();
4337 		}
4338 		return _localctx;
4339 	}
4340 
4341 	public static class ServiceNameContext extends ParserRuleContext {
4342 		public NameContext name() {
4343 			return getRuleContext(NameContext.class,0);
4344 		}
4345 		public ServiceNameContext(ParserRuleContext parent, int invokingState) {
4346 			super(parent, invokingState);
4347 		}
4348 		@Override public int getRuleIndex() { return RULE_serviceName; }
4349 		@Override
4350 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4351 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceName(this);
4352 			else return visitor.visitChildren(this);
4353 		}
4354 	}
4355 
4356 	public final ServiceNameContext serviceName() throws RecognitionException {
4357 		ServiceNameContext _localctx = new ServiceNameContext(_ctx, getState());
4358 		enterRule(_localctx, 70, RULE_serviceName);
4359 		try {
4360 			enterOuterAlt(_localctx, 1);
4361 			{
4362 			setState(1268);
4363 			name();
4364 			}
4365 		}
4366 		catch (RecognitionException re) {
4367 			_localctx.exception = re;
4368 			_errHandler.reportError(this, re);
4369 			_errHandler.recover(this, re);
4370 		}
4371 		finally {
4372 			exitRule();
4373 		}
4374 		return _localctx;
4375 	}
4376 
4377 	public static class ColumnNameContext extends ParserRuleContext {
4378 		public NameContext name() {
4379 			return getRuleContext(NameContext.class,0);
4380 		}
4381 		public ScriptVariableNameContext scriptVariableName() {
4382 			return getRuleContext(ScriptVariableNameContext.class,0);
4383 		}
4384 		public OwnerContext owner() {
4385 			return getRuleContext(OwnerContext.class,0);
4386 		}
4387 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
4388 		public TerminalNode DOT_(int i) {
4389 			return getToken(SQLServerStatementParser.DOT_, i);
4390 		}
4391 		public DatabaseNameContext databaseName() {
4392 			return getRuleContext(DatabaseNameContext.class,0);
4393 		}
4394 		public ColumnNameContext(ParserRuleContext parent, int invokingState) {
4395 			super(parent, invokingState);
4396 		}
4397 		@Override public int getRuleIndex() { return RULE_columnName; }
4398 		@Override
4399 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4400 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnName(this);
4401 			else return visitor.visitChildren(this);
4402 		}
4403 	}
4404 
4405 	public final ColumnNameContext columnName() throws RecognitionException {
4406 		ColumnNameContext _localctx = new ColumnNameContext(_ctx, getState());
4407 		enterRule(_localctx, 72, RULE_columnName);
4408 		try {
4409 			enterOuterAlt(_localctx, 1);
4410 			{
4411 			setState(1278);
4412 			_errHandler.sync(this);
4413 			switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) {
4414 			case 1:
4415 				{
4416 				setState(1273);
4417 				_errHandler.sync(this);
4418 				switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
4419 				case 1:
4420 					{
4421 					setState(1270);
4422 					databaseName();
4423 					setState(1271);
4424 					match(DOT_);
4425 					}
4426 					break;
4427 				}
4428 				{
4429 				setState(1275);
4430 				owner();
4431 				setState(1276);
4432 				match(DOT_);
4433 				}
4434 				}
4435 				break;
4436 			}
4437 			setState(1282);
4438 			_errHandler.sync(this);
4439 			switch (_input.LA(1)) {
4440 			case TRUNCATE:
4441 			case SCHEMA:
4442 			case COLUMNS:
4443 			case PRECISION:
4444 			case FUNCTION:
4445 			case TRIGGER:
4446 			case CAST:
4447 			case TRIM:
4448 			case SUBSTRING:
4449 			case RIGHT:
4450 			case OFF:
4451 			case GROUP:
4452 			case LIMIT:
4453 			case OFFSET:
4454 			case SAVEPOINT:
4455 			case BOOLEAN:
4456 			case ARRAY:
4457 			case DATE:
4458 			case TIMESTAMP:
4459 			case LOCALTIME:
4460 			case LOCALTIMESTAMP:
4461 			case YEAR:
4462 			case QUARTER:
4463 			case MONTH:
4464 			case WEEK:
4465 			case DAY:
4466 			case SECOND:
4467 			case MICROSECOND:
4468 			case MAX:
4469 			case MIN:
4470 			case SUM:
4471 			case COUNT:
4472 			case AVG:
4473 			case ENABLE:
4474 			case DISABLE:
4475 			case INSTANCE:
4476 			case DO:
4477 			case DEFINER:
4478 			case SQL:
4479 			case CASCADED:
4480 			case LOCAL:
4481 			case NEXT:
4482 			case NAME:
4483 			case INTEGER:
4484 			case TYPE:
4485 			case TEXT:
4486 			case VIEWS:
4487 			case READ_ONLY:
4488 			case DATABASE:
4489 			case RETURNS:
4490 			case DATEPART:
4491 			case PASSWORD:
4492 			case BINARY:
4493 			case HIDDEN_:
4494 			case MOD:
4495 			case PARTITION:
4496 			case PARTITIONS:
4497 			case TOP:
4498 			case ROW:
4499 			case ROWS:
4500 			case XOR:
4501 			case ALWAYS:
4502 			case USER:
4503 			case ROLE:
4504 			case START:
4505 			case ALGORITHM:
4506 			case AUTO:
4507 			case BLOCKERS:
4508 			case CLUSTERED:
4509 			case NONCLUSTERED:
4510 			case COLUMNSTORE:
4511 			case CONTENT:
4512 			case YEARS:
4513 			case MONTHS:
4514 			case WEEKS:
4515 			case DAYS:
4516 			case MINUTES:
4517 			case DENY:
4518 			case DETERMINISTIC:
4519 			case DISTRIBUTION:
4520 			case DOCUMENT:
4521 			case DURABILITY:
4522 			case ENCRYPTED:
4523 			case FILESTREAM:
4524 			case FILETABLE:
4525 			case FILLFACTOR:
4526 			case FOLLOWING:
4527 			case HASH:
4528 			case HEAP:
4529 			case INBOUND:
4530 			case OUTBOUND:
4531 			case UNBOUNDED:
4532 			case INFINITE:
4533 			case LOGIN:
4534 			case MASKED:
4535 			case MAXDOP:
4536 			case MOVE:
4537 			case NOCHECK:
4538 			case OBJECT:
4539 			case ONLINE:
4540 			case OVER:
4541 			case PAGE:
4542 			case PAUSED:
4543 			case PERIOD:
4544 			case PERSISTED:
4545 			case PRECEDING:
4546 			case RANDOMIZED:
4547 			case RANGE:
4548 			case REBUILD:
4549 			case REPLICATE:
4550 			case REPLICATION:
4551 			case RESUMABLE:
4552 			case ROWGUIDCOL:
4553 			case SAVE:
4554 			case SELF:
4555 			case SPARSE:
4556 			case SWITCH:
4557 			case TRAN:
4558 			case TRANCOUNT:
4559 			case CONTROL:
4560 			case CONCAT:
4561 			case TAKE:
4562 			case OWNERSHIP:
4563 			case DEFINITION:
4564 			case APPLICATION:
4565 			case ASSEMBLY:
4566 			case SYMMETRIC:
4567 			case ASYMMETRIC:
4568 			case SERVER:
4569 			case RECEIVE:
4570 			case CHANGE:
4571 			case TRACE:
4572 			case TRACKING:
4573 			case RESOURCES:
4574 			case SETTINGS:
4575 			case STATE:
4576 			case AVAILABILITY:
4577 			case CREDENTIAL:
4578 			case ENDPOINT:
4579 			case EVENT:
4580 			case NOTIFICATION:
4581 			case LINKED:
4582 			case AUDIT:
4583 			case DDL:
4584 			case XML:
4585 			case IMPERSONATE:
4586 			case SECURABLES:
4587 			case AUTHENTICATE:
4588 			case EXTERNAL:
4589 			case ACCESS:
4590 			case ADMINISTER:
4591 			case BULK:
4592 			case OPERATIONS:
4593 			case UNSAFE:
4594 			case SHUTDOWN:
4595 			case SCOPED:
4596 			case CONFIGURATION:
4597 			case DATASPACE:
4598 			case SERVICE:
4599 			case CERTIFICATE:
4600 			case CONTRACT:
4601 			case ENCRYPTION:
4602 			case MASTER:
4603 			case DATA:
4604 			case SOURCE:
4605 			case FILE:
4606 			case FORMAT:
4607 			case LIBRARY:
4608 			case FULLTEXT:
4609 			case MASK:
4610 			case UNMASK:
4611 			case MESSAGE:
4612 			case REMOTE:
4613 			case BINDING:
4614 			case ROUTE:
4615 			case SECURITY:
4616 			case POLICY:
4617 			case AGGREGATE:
4618 			case QUEUE:
4619 			case RULE:
4620 			case SYNONYM:
4621 			case COLLECTION:
4622 			case SCRIPT:
4623 			case KILL:
4624 			case BACKUP:
4625 			case LOG:
4626 			case SHOWPLAN:
4627 			case SUBSCRIBE:
4628 			case QUERY:
4629 			case NOTIFICATIONS:
4630 			case CHECKPOINT:
4631 			case SEQUENCE:
4632 			case ABORT_AFTER_WAIT:
4633 			case ALLOW_PAGE_LOCKS:
4634 			case ALLOW_ROW_LOCKS:
4635 			case ALL_SPARSE_COLUMNS:
4636 			case BUCKET_COUNT:
4637 			case COLUMNSTORE_ARCHIVE:
4638 			case COLUMN_ENCRYPTION_KEY:
4639 			case COLUMN_SET:
4640 			case COMPRESSION_DELAY:
4641 			case DATABASE_DEAULT:
4642 			case DATA_COMPRESSION:
4643 			case DATA_CONSISTENCY_CHECK:
4644 			case ENCRYPTION_TYPE:
4645 			case SYSTEM_TIME:
4646 			case SYSTEM_VERSIONING:
4647 			case TEXTIMAGE_ON:
4648 			case WAIT_AT_LOW_PRIORITY:
4649 			case STATISTICS_INCREMENTAL:
4650 			case STATISTICS_NORECOMPUTE:
4651 			case ROUND_ROBIN:
4652 			case SCHEMA_AND_DATA:
4653 			case SCHEMA_ONLY:
4654 			case SORT_IN_TEMPDB:
4655 			case IGNORE_DUP_KEY:
4656 			case IMPLICIT_TRANSACTIONS:
4657 			case MAX_DURATION:
4658 			case MEMORY_OPTIMIZED:
4659 			case MIGRATION_STATE:
4660 			case PAD_INDEX:
4661 			case REMOTE_DATA_ARCHIVE:
4662 			case FILESTREAM_ON:
4663 			case FILETABLE_COLLATE_FILENAME:
4664 			case FILETABLE_DIRECTORY:
4665 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
4666 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
4667 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
4668 			case FILTER_PREDICATE:
4669 			case HISTORY_RETENTION_PERIOD:
4670 			case HISTORY_TABLE:
4671 			case LOCK_ESCALATION:
4672 			case DROP_EXISTING:
4673 			case ROW_NUMBER:
4674 			case FIRST:
4675 			case DATETIME2:
4676 			case OUTPUT:
4677 			case INSERTED:
4678 			case DELETED:
4679 			case FILENAME:
4680 			case SIZE:
4681 			case MAXSIZE:
4682 			case FILEGROWTH:
4683 			case UNLIMITED:
4684 			case KB:
4685 			case MB:
4686 			case GB:
4687 			case TB:
4688 			case CONTAINS:
4689 			case MEMORY_OPTIMIZED_DATA:
4690 			case FILEGROUP:
4691 			case NON_TRANSACTED_ACCESS:
4692 			case DB_CHAINING:
4693 			case TRUSTWORTHY:
4694 			case FORWARD_ONLY:
4695 			case KEYSET:
4696 			case FAST_FORWARD:
4697 			case SCROLL_LOCKS:
4698 			case OPTIMISTIC:
4699 			case TYPE_WARNING:
4700 			case SCHEMABINDING:
4701 			case CALLER:
4702 			case INPUT:
4703 			case OWNER:
4704 			case SNAPSHOT:
4705 			case REPEATABLE:
4706 			case SERIALIZABLE:
4707 			case NATIVE_COMPILATION:
4708 			case VIEW_METADATA:
4709 			case INSTEAD:
4710 			case APPEND:
4711 			case INCREMENT:
4712 			case CACHE:
4713 			case MINVALUE:
4714 			case MAXVALUE:
4715 			case RESTART:
4716 			case LOB_COMPACTION:
4717 			case COMPRESS_ALL_ROW_GROUPS:
4718 			case REORGANIZE:
4719 			case RESUME:
4720 			case PAUSE:
4721 			case ABORT:
4722 			case ACCELERATED_DATABASE_RECOVERY:
4723 			case PERSISTENT_VERSION_STORE_FILEGROUP:
4724 			case IMMEDIATE:
4725 			case NO_WAIT:
4726 			case TARGET_RECOVERY_TIME:
4727 			case SECONDS:
4728 			case HONOR_BROKER_PRIORITY:
4729 			case ERROR_BROKER_CONVERSATIONS:
4730 			case NEW_BROKER:
4731 			case DISABLE_BROKER:
4732 			case ENABLE_BROKER:
4733 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
4734 			case READ_COMMITTED_SNAPSHOT:
4735 			case ALLOW_SNAPSHOT_ISOLATION:
4736 			case RECURSIVE_TRIGGERS:
4737 			case QUOTED_IDENTIFIER:
4738 			case NUMERIC_ROUNDABORT:
4739 			case CONCAT_NULL_YIELDS_NULL:
4740 			case COMPATIBILITY_LEVEL:
4741 			case ARITHABORT:
4742 			case ANSI_WARNINGS:
4743 			case ANSI_PADDING:
4744 			case ANSI_NULLS:
4745 			case ANSI_NULL_DEFAULT:
4746 			case PAGE_VERIFY:
4747 			case CHECKSUM:
4748 			case TORN_PAGE_DETECTION:
4749 			case BULK_LOGGED:
4750 			case RECOVERY:
4751 			case TOTAL_EXECUTION_CPU_TIME_MS:
4752 			case TOTAL_COMPILE_CPU_TIME_MS:
4753 			case STALE_CAPTURE_POLICY_THRESHOLD:
4754 			case EXECUTION_COUNT:
4755 			case QUERY_CAPTURE_POLICY:
4756 			case WAIT_STATS_CAPTURE_MODE:
4757 			case MAX_PLANS_PER_QUERY:
4758 			case QUERY_CAPTURE_MODE:
4759 			case SIZE_BASED_CLEANUP_MODE:
4760 			case INTERVAL_LENGTH_MINUTES:
4761 			case MAX_STORAGE_SIZE_MB:
4762 			case DATA_FLUSH_INTERVAL_SECONDS:
4763 			case CLEANUP_POLICY:
4764 			case CUSTOM:
4765 			case STALE_QUERY_THRESHOLD_DAYS:
4766 			case OPERATION_MODE:
4767 			case QUERY_STORE:
4768 			case CURSOR_DEFAULT:
4769 			case GLOBAL:
4770 			case CURSOR_CLOSE_ON_COMMIT:
4771 			case HOURS:
4772 			case CHANGE_RETENTION:
4773 			case AUTO_CLEANUP:
4774 			case CHANGE_TRACKING:
4775 			case AUTOMATIC_TUNING:
4776 			case FORCE_LAST_GOOD_PLAN:
4777 			case AUTO_UPDATE_STATISTICS_ASYNC:
4778 			case AUTO_UPDATE_STATISTICS:
4779 			case AUTO_SHRINK:
4780 			case AUTO_CREATE_STATISTICS:
4781 			case INCREMENTAL:
4782 			case AUTO_CLOSE:
4783 			case DATA_RETENTION:
4784 			case TEMPORAL_HISTORY_RETENTION:
4785 			case EDITION:
4786 			case MIXED_PAGE_ALLOCATION:
4787 			case DISABLED:
4788 			case ALLOWED:
4789 			case HADR:
4790 			case MULTI_USER:
4791 			case RESTRICTED_USER:
4792 			case SINGLE_USER:
4793 			case OFFLINE:
4794 			case EMERGENCY:
4795 			case SUSPEND:
4796 			case DATE_CORRELATION_OPTIMIZATION:
4797 			case ELASTIC_POOL:
4798 			case SERVICE_OBJECTIVE:
4799 			case DATABASE_NAME:
4800 			case ALLOW_CONNECTIONS:
4801 			case GEO:
4802 			case NAMED:
4803 			case DATEFIRST:
4804 			case BACKUP_STORAGE_REDUNDANCY:
4805 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
4806 			case SECONDARY:
4807 			case FAILOVER:
4808 			case DEFAULT_FULLTEXT_LANGUAGE:
4809 			case DEFAULT_LANGUAGE:
4810 			case INLINE:
4811 			case NESTED_TRIGGERS:
4812 			case TRANSFORM_NOISE_WORDS:
4813 			case TWO_DIGIT_YEAR_CUTOFF:
4814 			case PERSISTENT_LOG_BUFFER:
4815 			case DIRECTORY_NAME:
4816 			case DATEFORMAT:
4817 			case DELAYED_DURABILITY:
4818 			case AUTHORIZATION:
4819 			case TRANSFER:
4820 			case PROVIDER:
4821 			case SID:
4822 			case SEARCH:
4823 			case MEMBER:
4824 			case JSON:
4825 			case IDENTIFIER_:
4826 			case DELIMITED_IDENTIFIER_:
4827 				{
4828 				setState(1280);
4829 				name();
4830 				}
4831 				break;
4832 			case DOLLAR_:
4833 				{
4834 				setState(1281);
4835 				scriptVariableName();
4836 				}
4837 				break;
4838 			default:
4839 				throw new NoViableAltException(this);
4840 			}
4841 			}
4842 		}
4843 		catch (RecognitionException re) {
4844 			_localctx.exception = re;
4845 			_errHandler.reportError(this, re);
4846 			_errHandler.recover(this, re);
4847 		}
4848 		finally {
4849 			exitRule();
4850 		}
4851 		return _localctx;
4852 	}
4853 
4854 	public static class ScriptVariableNameContext extends ParserRuleContext {
4855 		public TerminalNode DOLLAR_() { return getToken(SQLServerStatementParser.DOLLAR_, 0); }
4856 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
4857 		public NameContext name() {
4858 			return getRuleContext(NameContext.class,0);
4859 		}
4860 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
4861 		public ScriptVariableNameContext(ParserRuleContext parent, int invokingState) {
4862 			super(parent, invokingState);
4863 		}
4864 		@Override public int getRuleIndex() { return RULE_scriptVariableName; }
4865 		@Override
4866 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4867 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitScriptVariableName(this);
4868 			else return visitor.visitChildren(this);
4869 		}
4870 	}
4871 
4872 	public final ScriptVariableNameContext scriptVariableName() throws RecognitionException {
4873 		ScriptVariableNameContext _localctx = new ScriptVariableNameContext(_ctx, getState());
4874 		enterRule(_localctx, 74, RULE_scriptVariableName);
4875 		try {
4876 			enterOuterAlt(_localctx, 1);
4877 			{
4878 			setState(1284);
4879 			match(DOLLAR_);
4880 			setState(1285);
4881 			match(LP_);
4882 			setState(1286);
4883 			name();
4884 			setState(1287);
4885 			match(RP_);
4886 			}
4887 		}
4888 		catch (RecognitionException re) {
4889 			_localctx.exception = re;
4890 			_errHandler.reportError(this, re);
4891 			_errHandler.recover(this, re);
4892 		}
4893 		finally {
4894 			exitRule();
4895 		}
4896 		return _localctx;
4897 	}
4898 
4899 	public static class OwnerContext extends ParserRuleContext {
4900 		public IdentifierContext identifier() {
4901 			return getRuleContext(IdentifierContext.class,0);
4902 		}
4903 		public OwnerContext(ParserRuleContext parent, int invokingState) {
4904 			super(parent, invokingState);
4905 		}
4906 		@Override public int getRuleIndex() { return RULE_owner; }
4907 		@Override
4908 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4909 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOwner(this);
4910 			else return visitor.visitChildren(this);
4911 		}
4912 	}
4913 
4914 	public final OwnerContext owner() throws RecognitionException {
4915 		OwnerContext _localctx = new OwnerContext(_ctx, getState());
4916 		enterRule(_localctx, 76, RULE_owner);
4917 		try {
4918 			enterOuterAlt(_localctx, 1);
4919 			{
4920 			setState(1289);
4921 			identifier();
4922 			}
4923 		}
4924 		catch (RecognitionException re) {
4925 			_localctx.exception = re;
4926 			_errHandler.reportError(this, re);
4927 			_errHandler.recover(this, re);
4928 		}
4929 		finally {
4930 			exitRule();
4931 		}
4932 		return _localctx;
4933 	}
4934 
4935 	public static class NameContext extends ParserRuleContext {
4936 		public IdentifierContext identifier() {
4937 			return getRuleContext(IdentifierContext.class,0);
4938 		}
4939 		public NameContext(ParserRuleContext parent, int invokingState) {
4940 			super(parent, invokingState);
4941 		}
4942 		@Override public int getRuleIndex() { return RULE_name; }
4943 		@Override
4944 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4945 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitName(this);
4946 			else return visitor.visitChildren(this);
4947 		}
4948 	}
4949 
4950 	public final NameContext name() throws RecognitionException {
4951 		NameContext _localctx = new NameContext(_ctx, getState());
4952 		enterRule(_localctx, 78, RULE_name);
4953 		try {
4954 			enterOuterAlt(_localctx, 1);
4955 			{
4956 			setState(1291);
4957 			identifier();
4958 			}
4959 		}
4960 		catch (RecognitionException re) {
4961 			_localctx.exception = re;
4962 			_errHandler.reportError(this, re);
4963 			_errHandler.recover(this, re);
4964 		}
4965 		finally {
4966 			exitRule();
4967 		}
4968 		return _localctx;
4969 	}
4970 
4971 	public static class ColumnNamesContext extends ParserRuleContext {
4972 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
4973 		public List<ColumnNameContext> columnName() {
4974 			return getRuleContexts(ColumnNameContext.class);
4975 		}
4976 		public ColumnNameContext columnName(int i) {
4977 			return getRuleContext(ColumnNameContext.class,i);
4978 		}
4979 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
4980 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
4981 		public TerminalNode COMMA_(int i) {
4982 			return getToken(SQLServerStatementParser.COMMA_, i);
4983 		}
4984 		public ColumnNamesContext(ParserRuleContext parent, int invokingState) {
4985 			super(parent, invokingState);
4986 		}
4987 		@Override public int getRuleIndex() { return RULE_columnNames; }
4988 		@Override
4989 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
4990 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnNames(this);
4991 			else return visitor.visitChildren(this);
4992 		}
4993 	}
4994 
4995 	public final ColumnNamesContext columnNames() throws RecognitionException {
4996 		ColumnNamesContext _localctx = new ColumnNamesContext(_ctx, getState());
4997 		enterRule(_localctx, 80, RULE_columnNames);
4998 		int _la;
4999 		try {
5000 			enterOuterAlt(_localctx, 1);
5001 			{
5002 			setState(1293);
5003 			match(LP_);
5004 			setState(1294);
5005 			columnName();
5006 			setState(1299);
5007 			_errHandler.sync(this);
5008 			_la = _input.LA(1);
5009 			while (_la==COMMA_) {
5010 				{
5011 				{
5012 				setState(1295);
5013 				match(COMMA_);
5014 				setState(1296);
5015 				columnName();
5016 				}
5017 				}
5018 				setState(1301);
5019 				_errHandler.sync(this);
5020 				_la = _input.LA(1);
5021 			}
5022 			setState(1302);
5023 			match(RP_);
5024 			}
5025 		}
5026 		catch (RecognitionException re) {
5027 			_localctx.exception = re;
5028 			_errHandler.reportError(this, re);
5029 			_errHandler.recover(this, re);
5030 		}
5031 		finally {
5032 			exitRule();
5033 		}
5034 		return _localctx;
5035 	}
5036 
5037 	public static class ColumnNamesWithSortContext extends ParserRuleContext {
5038 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
5039 		public List<ColumnNameWithSortContext> columnNameWithSort() {
5040 			return getRuleContexts(ColumnNameWithSortContext.class);
5041 		}
5042 		public ColumnNameWithSortContext columnNameWithSort(int i) {
5043 			return getRuleContext(ColumnNameWithSortContext.class,i);
5044 		}
5045 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
5046 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
5047 		public TerminalNode COMMA_(int i) {
5048 			return getToken(SQLServerStatementParser.COMMA_, i);
5049 		}
5050 		public ColumnNamesWithSortContext(ParserRuleContext parent, int invokingState) {
5051 			super(parent, invokingState);
5052 		}
5053 		@Override public int getRuleIndex() { return RULE_columnNamesWithSort; }
5054 		@Override
5055 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5056 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnNamesWithSort(this);
5057 			else return visitor.visitChildren(this);
5058 		}
5059 	}
5060 
5061 	public final ColumnNamesWithSortContext columnNamesWithSort() throws RecognitionException {
5062 		ColumnNamesWithSortContext _localctx = new ColumnNamesWithSortContext(_ctx, getState());
5063 		enterRule(_localctx, 82, RULE_columnNamesWithSort);
5064 		int _la;
5065 		try {
5066 			enterOuterAlt(_localctx, 1);
5067 			{
5068 			setState(1304);
5069 			match(LP_);
5070 			setState(1305);
5071 			columnNameWithSort();
5072 			setState(1310);
5073 			_errHandler.sync(this);
5074 			_la = _input.LA(1);
5075 			while (_la==COMMA_) {
5076 				{
5077 				{
5078 				setState(1306);
5079 				match(COMMA_);
5080 				setState(1307);
5081 				columnNameWithSort();
5082 				}
5083 				}
5084 				setState(1312);
5085 				_errHandler.sync(this);
5086 				_la = _input.LA(1);
5087 			}
5088 			setState(1313);
5089 			match(RP_);
5090 			}
5091 		}
5092 		catch (RecognitionException re) {
5093 			_localctx.exception = re;
5094 			_errHandler.reportError(this, re);
5095 			_errHandler.recover(this, re);
5096 		}
5097 		finally {
5098 			exitRule();
5099 		}
5100 		return _localctx;
5101 	}
5102 
5103 	public static class TableNamesContext extends ParserRuleContext {
5104 		public List<TableNameContext> tableName() {
5105 			return getRuleContexts(TableNameContext.class);
5106 		}
5107 		public TableNameContext tableName(int i) {
5108 			return getRuleContext(TableNameContext.class,i);
5109 		}
5110 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
5111 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
5112 		public TerminalNode COMMA_(int i) {
5113 			return getToken(SQLServerStatementParser.COMMA_, i);
5114 		}
5115 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
5116 		public TableNamesContext(ParserRuleContext parent, int invokingState) {
5117 			super(parent, invokingState);
5118 		}
5119 		@Override public int getRuleIndex() { return RULE_tableNames; }
5120 		@Override
5121 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5122 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableNames(this);
5123 			else return visitor.visitChildren(this);
5124 		}
5125 	}
5126 
5127 	public final TableNamesContext tableNames() throws RecognitionException {
5128 		TableNamesContext _localctx = new TableNamesContext(_ctx, getState());
5129 		enterRule(_localctx, 84, RULE_tableNames);
5130 		int _la;
5131 		try {
5132 			enterOuterAlt(_localctx, 1);
5133 			{
5134 			setState(1316);
5135 			_errHandler.sync(this);
5136 			_la = _input.LA(1);
5137 			if (_la==LP_) {
5138 				{
5139 				setState(1315);
5140 				match(LP_);
5141 				}
5142 			}
5143 
5144 			setState(1318);
5145 			tableName();
5146 			setState(1323);
5147 			_errHandler.sync(this);
5148 			_la = _input.LA(1);
5149 			while (_la==COMMA_) {
5150 				{
5151 				{
5152 				setState(1319);
5153 				match(COMMA_);
5154 				setState(1320);
5155 				tableName();
5156 				}
5157 				}
5158 				setState(1325);
5159 				_errHandler.sync(this);
5160 				_la = _input.LA(1);
5161 			}
5162 			setState(1327);
5163 			_errHandler.sync(this);
5164 			_la = _input.LA(1);
5165 			if (_la==RP_) {
5166 				{
5167 				setState(1326);
5168 				match(RP_);
5169 				}
5170 			}
5171 
5172 			}
5173 		}
5174 		catch (RecognitionException re) {
5175 			_localctx.exception = re;
5176 			_errHandler.reportError(this, re);
5177 			_errHandler.recover(this, re);
5178 		}
5179 		finally {
5180 			exitRule();
5181 		}
5182 		return _localctx;
5183 	}
5184 
5185 	public static class IndexNameContext extends ParserRuleContext {
5186 		public IdentifierContext identifier() {
5187 			return getRuleContext(IdentifierContext.class,0);
5188 		}
5189 		public IndexNameContext(ParserRuleContext parent, int invokingState) {
5190 			super(parent, invokingState);
5191 		}
5192 		@Override public int getRuleIndex() { return RULE_indexName; }
5193 		@Override
5194 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5195 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexName(this);
5196 			else return visitor.visitChildren(this);
5197 		}
5198 	}
5199 
5200 	public final IndexNameContext indexName() throws RecognitionException {
5201 		IndexNameContext _localctx = new IndexNameContext(_ctx, getState());
5202 		enterRule(_localctx, 86, RULE_indexName);
5203 		try {
5204 			enterOuterAlt(_localctx, 1);
5205 			{
5206 			setState(1329);
5207 			identifier();
5208 			}
5209 		}
5210 		catch (RecognitionException re) {
5211 			_localctx.exception = re;
5212 			_errHandler.reportError(this, re);
5213 			_errHandler.recover(this, re);
5214 		}
5215 		finally {
5216 			exitRule();
5217 		}
5218 		return _localctx;
5219 	}
5220 
5221 	public static class ConstraintNameContext extends ParserRuleContext {
5222 		public IdentifierContext identifier() {
5223 			return getRuleContext(IdentifierContext.class,0);
5224 		}
5225 		public ConstraintNameContext(ParserRuleContext parent, int invokingState) {
5226 			super(parent, invokingState);
5227 		}
5228 		@Override public int getRuleIndex() { return RULE_constraintName; }
5229 		@Override
5230 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5231 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConstraintName(this);
5232 			else return visitor.visitChildren(this);
5233 		}
5234 	}
5235 
5236 	public final ConstraintNameContext constraintName() throws RecognitionException {
5237 		ConstraintNameContext _localctx = new ConstraintNameContext(_ctx, getState());
5238 		enterRule(_localctx, 88, RULE_constraintName);
5239 		try {
5240 			enterOuterAlt(_localctx, 1);
5241 			{
5242 			setState(1331);
5243 			identifier();
5244 			}
5245 		}
5246 		catch (RecognitionException re) {
5247 			_localctx.exception = re;
5248 			_errHandler.reportError(this, re);
5249 			_errHandler.recover(this, re);
5250 		}
5251 		finally {
5252 			exitRule();
5253 		}
5254 		return _localctx;
5255 	}
5256 
5257 	public static class CollationNameContext extends ParserRuleContext {
5258 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
5259 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
5260 		public CollationNameContext(ParserRuleContext parent, int invokingState) {
5261 			super(parent, invokingState);
5262 		}
5263 		@Override public int getRuleIndex() { return RULE_collationName; }
5264 		@Override
5265 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5266 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCollationName(this);
5267 			else return visitor.visitChildren(this);
5268 		}
5269 	}
5270 
5271 	public final CollationNameContext collationName() throws RecognitionException {
5272 		CollationNameContext _localctx = new CollationNameContext(_ctx, getState());
5273 		enterRule(_localctx, 90, RULE_collationName);
5274 		int _la;
5275 		try {
5276 			enterOuterAlt(_localctx, 1);
5277 			{
5278 			setState(1333);
5279 			_la = _input.LA(1);
5280 			if ( !(_la==IDENTIFIER_ || _la==STRING_) ) {
5281 			_errHandler.recoverInline(this);
5282 			}
5283 			else {
5284 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
5285 				_errHandler.reportMatch(this);
5286 				consume();
5287 			}
5288 			}
5289 		}
5290 		catch (RecognitionException re) {
5291 			_localctx.exception = re;
5292 			_errHandler.reportError(this, re);
5293 			_errHandler.recover(this, re);
5294 		}
5295 		finally {
5296 			exitRule();
5297 		}
5298 		return _localctx;
5299 	}
5300 
5301 	public static class AliasContext extends ParserRuleContext {
5302 		public IdentifierContext identifier() {
5303 			return getRuleContext(IdentifierContext.class,0);
5304 		}
5305 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
5306 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
5307 		public AliasContext(ParserRuleContext parent, int invokingState) {
5308 			super(parent, invokingState);
5309 		}
5310 		@Override public int getRuleIndex() { return RULE_alias; }
5311 		@Override
5312 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5313 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlias(this);
5314 			else return visitor.visitChildren(this);
5315 		}
5316 	}
5317 
5318 	public final AliasContext alias() throws RecognitionException {
5319 		AliasContext _localctx = new AliasContext(_ctx, getState());
5320 		enterRule(_localctx, 92, RULE_alias);
5321 		try {
5322 			setState(1338);
5323 			_errHandler.sync(this);
5324 			switch (_input.LA(1)) {
5325 			case TRUNCATE:
5326 			case SCHEMA:
5327 			case COLUMNS:
5328 			case PRECISION:
5329 			case FUNCTION:
5330 			case TRIGGER:
5331 			case CAST:
5332 			case TRIM:
5333 			case SUBSTRING:
5334 			case RIGHT:
5335 			case OFF:
5336 			case GROUP:
5337 			case LIMIT:
5338 			case OFFSET:
5339 			case SAVEPOINT:
5340 			case BOOLEAN:
5341 			case ARRAY:
5342 			case DATE:
5343 			case TIMESTAMP:
5344 			case LOCALTIME:
5345 			case LOCALTIMESTAMP:
5346 			case YEAR:
5347 			case QUARTER:
5348 			case MONTH:
5349 			case WEEK:
5350 			case DAY:
5351 			case SECOND:
5352 			case MICROSECOND:
5353 			case MAX:
5354 			case MIN:
5355 			case SUM:
5356 			case COUNT:
5357 			case AVG:
5358 			case ENABLE:
5359 			case DISABLE:
5360 			case INSTANCE:
5361 			case DO:
5362 			case DEFINER:
5363 			case SQL:
5364 			case CASCADED:
5365 			case LOCAL:
5366 			case NEXT:
5367 			case NAME:
5368 			case INTEGER:
5369 			case TYPE:
5370 			case TEXT:
5371 			case VIEWS:
5372 			case READ_ONLY:
5373 			case DATABASE:
5374 			case RETURNS:
5375 			case DATEPART:
5376 			case PASSWORD:
5377 			case BINARY:
5378 			case HIDDEN_:
5379 			case MOD:
5380 			case PARTITION:
5381 			case PARTITIONS:
5382 			case TOP:
5383 			case ROW:
5384 			case ROWS:
5385 			case XOR:
5386 			case ALWAYS:
5387 			case USER:
5388 			case ROLE:
5389 			case START:
5390 			case ALGORITHM:
5391 			case AUTO:
5392 			case BLOCKERS:
5393 			case CLUSTERED:
5394 			case NONCLUSTERED:
5395 			case COLUMNSTORE:
5396 			case CONTENT:
5397 			case YEARS:
5398 			case MONTHS:
5399 			case WEEKS:
5400 			case DAYS:
5401 			case MINUTES:
5402 			case DENY:
5403 			case DETERMINISTIC:
5404 			case DISTRIBUTION:
5405 			case DOCUMENT:
5406 			case DURABILITY:
5407 			case ENCRYPTED:
5408 			case FILESTREAM:
5409 			case FILETABLE:
5410 			case FILLFACTOR:
5411 			case FOLLOWING:
5412 			case HASH:
5413 			case HEAP:
5414 			case INBOUND:
5415 			case OUTBOUND:
5416 			case UNBOUNDED:
5417 			case INFINITE:
5418 			case LOGIN:
5419 			case MASKED:
5420 			case MAXDOP:
5421 			case MOVE:
5422 			case NOCHECK:
5423 			case OBJECT:
5424 			case ONLINE:
5425 			case OVER:
5426 			case PAGE:
5427 			case PAUSED:
5428 			case PERIOD:
5429 			case PERSISTED:
5430 			case PRECEDING:
5431 			case RANDOMIZED:
5432 			case RANGE:
5433 			case REBUILD:
5434 			case REPLICATE:
5435 			case REPLICATION:
5436 			case RESUMABLE:
5437 			case ROWGUIDCOL:
5438 			case SAVE:
5439 			case SELF:
5440 			case SPARSE:
5441 			case SWITCH:
5442 			case TRAN:
5443 			case TRANCOUNT:
5444 			case CONTROL:
5445 			case CONCAT:
5446 			case TAKE:
5447 			case OWNERSHIP:
5448 			case DEFINITION:
5449 			case APPLICATION:
5450 			case ASSEMBLY:
5451 			case SYMMETRIC:
5452 			case ASYMMETRIC:
5453 			case SERVER:
5454 			case RECEIVE:
5455 			case CHANGE:
5456 			case TRACE:
5457 			case TRACKING:
5458 			case RESOURCES:
5459 			case SETTINGS:
5460 			case STATE:
5461 			case AVAILABILITY:
5462 			case CREDENTIAL:
5463 			case ENDPOINT:
5464 			case EVENT:
5465 			case NOTIFICATION:
5466 			case LINKED:
5467 			case AUDIT:
5468 			case DDL:
5469 			case XML:
5470 			case IMPERSONATE:
5471 			case SECURABLES:
5472 			case AUTHENTICATE:
5473 			case EXTERNAL:
5474 			case ACCESS:
5475 			case ADMINISTER:
5476 			case BULK:
5477 			case OPERATIONS:
5478 			case UNSAFE:
5479 			case SHUTDOWN:
5480 			case SCOPED:
5481 			case CONFIGURATION:
5482 			case DATASPACE:
5483 			case SERVICE:
5484 			case CERTIFICATE:
5485 			case CONTRACT:
5486 			case ENCRYPTION:
5487 			case MASTER:
5488 			case DATA:
5489 			case SOURCE:
5490 			case FILE:
5491 			case FORMAT:
5492 			case LIBRARY:
5493 			case FULLTEXT:
5494 			case MASK:
5495 			case UNMASK:
5496 			case MESSAGE:
5497 			case REMOTE:
5498 			case BINDING:
5499 			case ROUTE:
5500 			case SECURITY:
5501 			case POLICY:
5502 			case AGGREGATE:
5503 			case QUEUE:
5504 			case RULE:
5505 			case SYNONYM:
5506 			case COLLECTION:
5507 			case SCRIPT:
5508 			case KILL:
5509 			case BACKUP:
5510 			case LOG:
5511 			case SHOWPLAN:
5512 			case SUBSCRIBE:
5513 			case QUERY:
5514 			case NOTIFICATIONS:
5515 			case CHECKPOINT:
5516 			case SEQUENCE:
5517 			case ABORT_AFTER_WAIT:
5518 			case ALLOW_PAGE_LOCKS:
5519 			case ALLOW_ROW_LOCKS:
5520 			case ALL_SPARSE_COLUMNS:
5521 			case BUCKET_COUNT:
5522 			case COLUMNSTORE_ARCHIVE:
5523 			case COLUMN_ENCRYPTION_KEY:
5524 			case COLUMN_SET:
5525 			case COMPRESSION_DELAY:
5526 			case DATABASE_DEAULT:
5527 			case DATA_COMPRESSION:
5528 			case DATA_CONSISTENCY_CHECK:
5529 			case ENCRYPTION_TYPE:
5530 			case SYSTEM_TIME:
5531 			case SYSTEM_VERSIONING:
5532 			case TEXTIMAGE_ON:
5533 			case WAIT_AT_LOW_PRIORITY:
5534 			case STATISTICS_INCREMENTAL:
5535 			case STATISTICS_NORECOMPUTE:
5536 			case ROUND_ROBIN:
5537 			case SCHEMA_AND_DATA:
5538 			case SCHEMA_ONLY:
5539 			case SORT_IN_TEMPDB:
5540 			case IGNORE_DUP_KEY:
5541 			case IMPLICIT_TRANSACTIONS:
5542 			case MAX_DURATION:
5543 			case MEMORY_OPTIMIZED:
5544 			case MIGRATION_STATE:
5545 			case PAD_INDEX:
5546 			case REMOTE_DATA_ARCHIVE:
5547 			case FILESTREAM_ON:
5548 			case FILETABLE_COLLATE_FILENAME:
5549 			case FILETABLE_DIRECTORY:
5550 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
5551 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
5552 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
5553 			case FILTER_PREDICATE:
5554 			case HISTORY_RETENTION_PERIOD:
5555 			case HISTORY_TABLE:
5556 			case LOCK_ESCALATION:
5557 			case DROP_EXISTING:
5558 			case ROW_NUMBER:
5559 			case FIRST:
5560 			case DATETIME2:
5561 			case OUTPUT:
5562 			case INSERTED:
5563 			case DELETED:
5564 			case FILENAME:
5565 			case SIZE:
5566 			case MAXSIZE:
5567 			case FILEGROWTH:
5568 			case UNLIMITED:
5569 			case KB:
5570 			case MB:
5571 			case GB:
5572 			case TB:
5573 			case CONTAINS:
5574 			case MEMORY_OPTIMIZED_DATA:
5575 			case FILEGROUP:
5576 			case NON_TRANSACTED_ACCESS:
5577 			case DB_CHAINING:
5578 			case TRUSTWORTHY:
5579 			case FORWARD_ONLY:
5580 			case KEYSET:
5581 			case FAST_FORWARD:
5582 			case SCROLL_LOCKS:
5583 			case OPTIMISTIC:
5584 			case TYPE_WARNING:
5585 			case SCHEMABINDING:
5586 			case CALLER:
5587 			case INPUT:
5588 			case OWNER:
5589 			case SNAPSHOT:
5590 			case REPEATABLE:
5591 			case SERIALIZABLE:
5592 			case NATIVE_COMPILATION:
5593 			case VIEW_METADATA:
5594 			case INSTEAD:
5595 			case APPEND:
5596 			case INCREMENT:
5597 			case CACHE:
5598 			case MINVALUE:
5599 			case MAXVALUE:
5600 			case RESTART:
5601 			case LOB_COMPACTION:
5602 			case COMPRESS_ALL_ROW_GROUPS:
5603 			case REORGANIZE:
5604 			case RESUME:
5605 			case PAUSE:
5606 			case ABORT:
5607 			case ACCELERATED_DATABASE_RECOVERY:
5608 			case PERSISTENT_VERSION_STORE_FILEGROUP:
5609 			case IMMEDIATE:
5610 			case NO_WAIT:
5611 			case TARGET_RECOVERY_TIME:
5612 			case SECONDS:
5613 			case HONOR_BROKER_PRIORITY:
5614 			case ERROR_BROKER_CONVERSATIONS:
5615 			case NEW_BROKER:
5616 			case DISABLE_BROKER:
5617 			case ENABLE_BROKER:
5618 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
5619 			case READ_COMMITTED_SNAPSHOT:
5620 			case ALLOW_SNAPSHOT_ISOLATION:
5621 			case RECURSIVE_TRIGGERS:
5622 			case QUOTED_IDENTIFIER:
5623 			case NUMERIC_ROUNDABORT:
5624 			case CONCAT_NULL_YIELDS_NULL:
5625 			case COMPATIBILITY_LEVEL:
5626 			case ARITHABORT:
5627 			case ANSI_WARNINGS:
5628 			case ANSI_PADDING:
5629 			case ANSI_NULLS:
5630 			case ANSI_NULL_DEFAULT:
5631 			case PAGE_VERIFY:
5632 			case CHECKSUM:
5633 			case TORN_PAGE_DETECTION:
5634 			case BULK_LOGGED:
5635 			case RECOVERY:
5636 			case TOTAL_EXECUTION_CPU_TIME_MS:
5637 			case TOTAL_COMPILE_CPU_TIME_MS:
5638 			case STALE_CAPTURE_POLICY_THRESHOLD:
5639 			case EXECUTION_COUNT:
5640 			case QUERY_CAPTURE_POLICY:
5641 			case WAIT_STATS_CAPTURE_MODE:
5642 			case MAX_PLANS_PER_QUERY:
5643 			case QUERY_CAPTURE_MODE:
5644 			case SIZE_BASED_CLEANUP_MODE:
5645 			case INTERVAL_LENGTH_MINUTES:
5646 			case MAX_STORAGE_SIZE_MB:
5647 			case DATA_FLUSH_INTERVAL_SECONDS:
5648 			case CLEANUP_POLICY:
5649 			case CUSTOM:
5650 			case STALE_QUERY_THRESHOLD_DAYS:
5651 			case OPERATION_MODE:
5652 			case QUERY_STORE:
5653 			case CURSOR_DEFAULT:
5654 			case GLOBAL:
5655 			case CURSOR_CLOSE_ON_COMMIT:
5656 			case HOURS:
5657 			case CHANGE_RETENTION:
5658 			case AUTO_CLEANUP:
5659 			case CHANGE_TRACKING:
5660 			case AUTOMATIC_TUNING:
5661 			case FORCE_LAST_GOOD_PLAN:
5662 			case AUTO_UPDATE_STATISTICS_ASYNC:
5663 			case AUTO_UPDATE_STATISTICS:
5664 			case AUTO_SHRINK:
5665 			case AUTO_CREATE_STATISTICS:
5666 			case INCREMENTAL:
5667 			case AUTO_CLOSE:
5668 			case DATA_RETENTION:
5669 			case TEMPORAL_HISTORY_RETENTION:
5670 			case EDITION:
5671 			case MIXED_PAGE_ALLOCATION:
5672 			case DISABLED:
5673 			case ALLOWED:
5674 			case HADR:
5675 			case MULTI_USER:
5676 			case RESTRICTED_USER:
5677 			case SINGLE_USER:
5678 			case OFFLINE:
5679 			case EMERGENCY:
5680 			case SUSPEND:
5681 			case DATE_CORRELATION_OPTIMIZATION:
5682 			case ELASTIC_POOL:
5683 			case SERVICE_OBJECTIVE:
5684 			case DATABASE_NAME:
5685 			case ALLOW_CONNECTIONS:
5686 			case GEO:
5687 			case NAMED:
5688 			case DATEFIRST:
5689 			case BACKUP_STORAGE_REDUNDANCY:
5690 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
5691 			case SECONDARY:
5692 			case FAILOVER:
5693 			case DEFAULT_FULLTEXT_LANGUAGE:
5694 			case DEFAULT_LANGUAGE:
5695 			case INLINE:
5696 			case NESTED_TRIGGERS:
5697 			case TRANSFORM_NOISE_WORDS:
5698 			case TWO_DIGIT_YEAR_CUTOFF:
5699 			case PERSISTENT_LOG_BUFFER:
5700 			case DIRECTORY_NAME:
5701 			case DATEFORMAT:
5702 			case DELAYED_DURABILITY:
5703 			case AUTHORIZATION:
5704 			case TRANSFER:
5705 			case PROVIDER:
5706 			case SID:
5707 			case SEARCH:
5708 			case MEMBER:
5709 			case JSON:
5710 			case IDENTIFIER_:
5711 			case DELIMITED_IDENTIFIER_:
5712 				enterOuterAlt(_localctx, 1);
5713 				{
5714 				setState(1335);
5715 				identifier();
5716 				}
5717 				break;
5718 			case STRING_:
5719 				enterOuterAlt(_localctx, 2);
5720 				{
5721 				setState(1336);
5722 				match(STRING_);
5723 				}
5724 				break;
5725 			case NCHAR_TEXT:
5726 				enterOuterAlt(_localctx, 3);
5727 				{
5728 				setState(1337);
5729 				match(NCHAR_TEXT);
5730 				}
5731 				break;
5732 			default:
5733 				throw new NoViableAltException(this);
5734 			}
5735 		}
5736 		catch (RecognitionException re) {
5737 			_localctx.exception = re;
5738 			_errHandler.reportError(this, re);
5739 			_errHandler.recover(this, re);
5740 		}
5741 		finally {
5742 			exitRule();
5743 		}
5744 		return _localctx;
5745 	}
5746 
5747 	public static class DataTypeLengthContext extends ParserRuleContext {
5748 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
5749 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
5750 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
5751 		public TerminalNode NUMBER_(int i) {
5752 			return getToken(SQLServerStatementParser.NUMBER_, i);
5753 		}
5754 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
5755 		public DataTypeLengthContext(ParserRuleContext parent, int invokingState) {
5756 			super(parent, invokingState);
5757 		}
5758 		@Override public int getRuleIndex() { return RULE_dataTypeLength; }
5759 		@Override
5760 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5761 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataTypeLength(this);
5762 			else return visitor.visitChildren(this);
5763 		}
5764 	}
5765 
5766 	public final DataTypeLengthContext dataTypeLength() throws RecognitionException {
5767 		DataTypeLengthContext _localctx = new DataTypeLengthContext(_ctx, getState());
5768 		enterRule(_localctx, 94, RULE_dataTypeLength);
5769 		int _la;
5770 		try {
5771 			enterOuterAlt(_localctx, 1);
5772 			{
5773 			setState(1340);
5774 			match(LP_);
5775 			setState(1346);
5776 			_errHandler.sync(this);
5777 			_la = _input.LA(1);
5778 			if (_la==NUMBER_) {
5779 				{
5780 				setState(1341);
5781 				match(NUMBER_);
5782 				setState(1344);
5783 				_errHandler.sync(this);
5784 				_la = _input.LA(1);
5785 				if (_la==COMMA_) {
5786 					{
5787 					setState(1342);
5788 					match(COMMA_);
5789 					setState(1343);
5790 					match(NUMBER_);
5791 					}
5792 				}
5793 
5794 				}
5795 			}
5796 
5797 			setState(1348);
5798 			match(RP_);
5799 			}
5800 		}
5801 		catch (RecognitionException re) {
5802 			_localctx.exception = re;
5803 			_errHandler.reportError(this, re);
5804 			_errHandler.recover(this, re);
5805 		}
5806 		finally {
5807 			exitRule();
5808 		}
5809 		return _localctx;
5810 	}
5811 
5812 	public static class PrimaryKeyContext extends ParserRuleContext {
5813 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
5814 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
5815 		public PrimaryKeyContext(ParserRuleContext parent, int invokingState) {
5816 			super(parent, invokingState);
5817 		}
5818 		@Override public int getRuleIndex() { return RULE_primaryKey; }
5819 		@Override
5820 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5821 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKey(this);
5822 			else return visitor.visitChildren(this);
5823 		}
5824 	}
5825 
5826 	public final PrimaryKeyContext primaryKey() throws RecognitionException {
5827 		PrimaryKeyContext _localctx = new PrimaryKeyContext(_ctx, getState());
5828 		enterRule(_localctx, 96, RULE_primaryKey);
5829 		int _la;
5830 		try {
5831 			enterOuterAlt(_localctx, 1);
5832 			{
5833 			setState(1351);
5834 			_errHandler.sync(this);
5835 			_la = _input.LA(1);
5836 			if (_la==PRIMARY) {
5837 				{
5838 				setState(1350);
5839 				match(PRIMARY);
5840 				}
5841 			}
5842 
5843 			setState(1353);
5844 			match(KEY);
5845 			}
5846 		}
5847 		catch (RecognitionException re) {
5848 			_localctx.exception = re;
5849 			_errHandler.reportError(this, re);
5850 			_errHandler.recover(this, re);
5851 		}
5852 		finally {
5853 			exitRule();
5854 		}
5855 		return _localctx;
5856 	}
5857 
5858 	public static class ExprContext extends ParserRuleContext {
5859 		public BooleanPrimaryContext booleanPrimary() {
5860 			return getRuleContext(BooleanPrimaryContext.class,0);
5861 		}
5862 		public NotOperatorContext notOperator() {
5863 			return getRuleContext(NotOperatorContext.class,0);
5864 		}
5865 		public List<ExprContext> expr() {
5866 			return getRuleContexts(ExprContext.class);
5867 		}
5868 		public ExprContext expr(int i) {
5869 			return getRuleContext(ExprContext.class,i);
5870 		}
5871 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
5872 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
5873 		public AndOperatorContext andOperator() {
5874 			return getRuleContext(AndOperatorContext.class,0);
5875 		}
5876 		public OrOperatorContext orOperator() {
5877 			return getRuleContext(OrOperatorContext.class,0);
5878 		}
5879 		public DistinctFromContext distinctFrom() {
5880 			return getRuleContext(DistinctFromContext.class,0);
5881 		}
5882 		public ExprContext(ParserRuleContext parent, int invokingState) {
5883 			super(parent, invokingState);
5884 		}
5885 		@Override public int getRuleIndex() { return RULE_expr; }
5886 		@Override
5887 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
5888 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExpr(this);
5889 			else return visitor.visitChildren(this);
5890 		}
5891 	}
5892 
5893 	public final ExprContext expr() throws RecognitionException {
5894 		return expr(0);
5895 	}
5896 
5897 	private ExprContext expr(int _p) throws RecognitionException {
5898 		ParserRuleContext _parentctx = _ctx;
5899 		int _parentState = getState();
5900 		ExprContext _localctx = new ExprContext(_ctx, _parentState);
5901 		ExprContext _prevctx = _localctx;
5902 		int _startState = 98;
5903 		enterRecursionRule(_localctx, 98, RULE_expr, _p);
5904 		try {
5905 			int _alt;
5906 			enterOuterAlt(_localctx, 1);
5907 			{
5908 			setState(1364);
5909 			_errHandler.sync(this);
5910 			switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) {
5911 			case 1:
5912 				{
5913 				setState(1356);
5914 				booleanPrimary(0);
5915 				}
5916 				break;
5917 			case 2:
5918 				{
5919 				setState(1357);
5920 				notOperator();
5921 				setState(1358);
5922 				expr(2);
5923 				}
5924 				break;
5925 			case 3:
5926 				{
5927 				setState(1360);
5928 				match(LP_);
5929 				setState(1361);
5930 				expr(0);
5931 				setState(1362);
5932 				match(RP_);
5933 				}
5934 				break;
5935 			}
5936 			_ctx.stop = _input.LT(-1);
5937 			setState(1380);
5938 			_errHandler.sync(this);
5939 			_alt = getInterpreter().adaptivePredict(_input,44,_ctx);
5940 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
5941 				if ( _alt==1 ) {
5942 					if ( _parseListeners!=null ) triggerExitRuleEvent();
5943 					_prevctx = _localctx;
5944 					{
5945 					setState(1378);
5946 					_errHandler.sync(this);
5947 					switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) {
5948 					case 1:
5949 						{
5950 						_localctx = new ExprContext(_parentctx, _parentState);
5951 						pushNewRecursionContext(_localctx, _startState, RULE_expr);
5952 						setState(1366);
5953 						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
5954 						setState(1367);
5955 						andOperator();
5956 						setState(1368);
5957 						expr(6);
5958 						}
5959 						break;
5960 					case 2:
5961 						{
5962 						_localctx = new ExprContext(_parentctx, _parentState);
5963 						pushNewRecursionContext(_localctx, _startState, RULE_expr);
5964 						setState(1370);
5965 						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
5966 						setState(1371);
5967 						orOperator();
5968 						setState(1372);
5969 						expr(5);
5970 						}
5971 						break;
5972 					case 3:
5973 						{
5974 						_localctx = new ExprContext(_parentctx, _parentState);
5975 						pushNewRecursionContext(_localctx, _startState, RULE_expr);
5976 						setState(1374);
5977 						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
5978 						setState(1375);
5979 						distinctFrom();
5980 						setState(1376);
5981 						expr(4);
5982 						}
5983 						break;
5984 					}
5985 					} 
5986 				}
5987 				setState(1382);
5988 				_errHandler.sync(this);
5989 				_alt = getInterpreter().adaptivePredict(_input,44,_ctx);
5990 			}
5991 			}
5992 		}
5993 		catch (RecognitionException re) {
5994 			_localctx.exception = re;
5995 			_errHandler.reportError(this, re);
5996 			_errHandler.recover(this, re);
5997 		}
5998 		finally {
5999 			unrollRecursionContexts(_parentctx);
6000 		}
6001 		return _localctx;
6002 	}
6003 
6004 	public static class AndOperatorContext extends ParserRuleContext {
6005 		public TerminalNode AND() { return getToken(SQLServerStatementParser.AND, 0); }
6006 		public TerminalNode AND_() { return getToken(SQLServerStatementParser.AND_, 0); }
6007 		public AndOperatorContext(ParserRuleContext parent, int invokingState) {
6008 			super(parent, invokingState);
6009 		}
6010 		@Override public int getRuleIndex() { return RULE_andOperator; }
6011 		@Override
6012 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6013 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAndOperator(this);
6014 			else return visitor.visitChildren(this);
6015 		}
6016 	}
6017 
6018 	public final AndOperatorContext andOperator() throws RecognitionException {
6019 		AndOperatorContext _localctx = new AndOperatorContext(_ctx, getState());
6020 		enterRule(_localctx, 100, RULE_andOperator);
6021 		int _la;
6022 		try {
6023 			enterOuterAlt(_localctx, 1);
6024 			{
6025 			setState(1383);
6026 			_la = _input.LA(1);
6027 			if ( !(_la==AND_ || _la==AND) ) {
6028 			_errHandler.recoverInline(this);
6029 			}
6030 			else {
6031 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6032 				_errHandler.reportMatch(this);
6033 				consume();
6034 			}
6035 			}
6036 		}
6037 		catch (RecognitionException re) {
6038 			_localctx.exception = re;
6039 			_errHandler.reportError(this, re);
6040 			_errHandler.recover(this, re);
6041 		}
6042 		finally {
6043 			exitRule();
6044 		}
6045 		return _localctx;
6046 	}
6047 
6048 	public static class OrOperatorContext extends ParserRuleContext {
6049 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
6050 		public TerminalNode OR_() { return getToken(SQLServerStatementParser.OR_, 0); }
6051 		public OrOperatorContext(ParserRuleContext parent, int invokingState) {
6052 			super(parent, invokingState);
6053 		}
6054 		@Override public int getRuleIndex() { return RULE_orOperator; }
6055 		@Override
6056 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6057 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOrOperator(this);
6058 			else return visitor.visitChildren(this);
6059 		}
6060 	}
6061 
6062 	public final OrOperatorContext orOperator() throws RecognitionException {
6063 		OrOperatorContext _localctx = new OrOperatorContext(_ctx, getState());
6064 		enterRule(_localctx, 102, RULE_orOperator);
6065 		int _la;
6066 		try {
6067 			enterOuterAlt(_localctx, 1);
6068 			{
6069 			setState(1385);
6070 			_la = _input.LA(1);
6071 			if ( !(_la==OR_ || _la==OR) ) {
6072 			_errHandler.recoverInline(this);
6073 			}
6074 			else {
6075 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6076 				_errHandler.reportMatch(this);
6077 				consume();
6078 			}
6079 			}
6080 		}
6081 		catch (RecognitionException re) {
6082 			_localctx.exception = re;
6083 			_errHandler.reportError(this, re);
6084 			_errHandler.recover(this, re);
6085 		}
6086 		finally {
6087 			exitRule();
6088 		}
6089 		return _localctx;
6090 	}
6091 
6092 	public static class DistinctFromContext extends ParserRuleContext {
6093 		public TerminalNode IS() { return getToken(SQLServerStatementParser.IS, 0); }
6094 		public TerminalNode DISTINCT() { return getToken(SQLServerStatementParser.DISTINCT, 0); }
6095 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
6096 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
6097 		public DistinctFromContext(ParserRuleContext parent, int invokingState) {
6098 			super(parent, invokingState);
6099 		}
6100 		@Override public int getRuleIndex() { return RULE_distinctFrom; }
6101 		@Override
6102 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6103 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDistinctFrom(this);
6104 			else return visitor.visitChildren(this);
6105 		}
6106 	}
6107 
6108 	public final DistinctFromContext distinctFrom() throws RecognitionException {
6109 		DistinctFromContext _localctx = new DistinctFromContext(_ctx, getState());
6110 		enterRule(_localctx, 104, RULE_distinctFrom);
6111 		int _la;
6112 		try {
6113 			enterOuterAlt(_localctx, 1);
6114 			{
6115 			setState(1387);
6116 			match(IS);
6117 			setState(1389);
6118 			_errHandler.sync(this);
6119 			_la = _input.LA(1);
6120 			if (_la==NOT) {
6121 				{
6122 				setState(1388);
6123 				match(NOT);
6124 				}
6125 			}
6126 
6127 			setState(1391);
6128 			match(DISTINCT);
6129 			setState(1392);
6130 			match(FROM);
6131 			}
6132 		}
6133 		catch (RecognitionException re) {
6134 			_localctx.exception = re;
6135 			_errHandler.reportError(this, re);
6136 			_errHandler.recover(this, re);
6137 		}
6138 		finally {
6139 			exitRule();
6140 		}
6141 		return _localctx;
6142 	}
6143 
6144 	public static class NotOperatorContext extends ParserRuleContext {
6145 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
6146 		public TerminalNode NOT_() { return getToken(SQLServerStatementParser.NOT_, 0); }
6147 		public NotOperatorContext(ParserRuleContext parent, int invokingState) {
6148 			super(parent, invokingState);
6149 		}
6150 		@Override public int getRuleIndex() { return RULE_notOperator; }
6151 		@Override
6152 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6153 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNotOperator(this);
6154 			else return visitor.visitChildren(this);
6155 		}
6156 	}
6157 
6158 	public final NotOperatorContext notOperator() throws RecognitionException {
6159 		NotOperatorContext _localctx = new NotOperatorContext(_ctx, getState());
6160 		enterRule(_localctx, 106, RULE_notOperator);
6161 		int _la;
6162 		try {
6163 			enterOuterAlt(_localctx, 1);
6164 			{
6165 			setState(1394);
6166 			_la = _input.LA(1);
6167 			if ( !(_la==NOT_ || _la==NOT) ) {
6168 			_errHandler.recoverInline(this);
6169 			}
6170 			else {
6171 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6172 				_errHandler.reportMatch(this);
6173 				consume();
6174 			}
6175 			}
6176 		}
6177 		catch (RecognitionException re) {
6178 			_localctx.exception = re;
6179 			_errHandler.reportError(this, re);
6180 			_errHandler.recover(this, re);
6181 		}
6182 		finally {
6183 			exitRule();
6184 		}
6185 		return _localctx;
6186 	}
6187 
6188 	public static class BooleanPrimaryContext extends ParserRuleContext {
6189 		public PredicateContext predicate() {
6190 			return getRuleContext(PredicateContext.class,0);
6191 		}
6192 		public BooleanPrimaryContext booleanPrimary() {
6193 			return getRuleContext(BooleanPrimaryContext.class,0);
6194 		}
6195 		public TerminalNode IS() { return getToken(SQLServerStatementParser.IS, 0); }
6196 		public TerminalNode TRUE() { return getToken(SQLServerStatementParser.TRUE, 0); }
6197 		public TerminalNode FALSE() { return getToken(SQLServerStatementParser.FALSE, 0); }
6198 		public TerminalNode UNKNOWN() { return getToken(SQLServerStatementParser.UNKNOWN, 0); }
6199 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
6200 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
6201 		public TerminalNode SAFE_EQ_() { return getToken(SQLServerStatementParser.SAFE_EQ_, 0); }
6202 		public ComparisonOperatorContext comparisonOperator() {
6203 			return getRuleContext(ComparisonOperatorContext.class,0);
6204 		}
6205 		public SubqueryContext subquery() {
6206 			return getRuleContext(SubqueryContext.class,0);
6207 		}
6208 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
6209 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
6210 		public BooleanPrimaryContext(ParserRuleContext parent, int invokingState) {
6211 			super(parent, invokingState);
6212 		}
6213 		@Override public int getRuleIndex() { return RULE_booleanPrimary; }
6214 		@Override
6215 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6216 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBooleanPrimary(this);
6217 			else return visitor.visitChildren(this);
6218 		}
6219 	}
6220 
6221 	public final BooleanPrimaryContext booleanPrimary() throws RecognitionException {
6222 		return booleanPrimary(0);
6223 	}
6224 
6225 	private BooleanPrimaryContext booleanPrimary(int _p) throws RecognitionException {
6226 		ParserRuleContext _parentctx = _ctx;
6227 		int _parentState = getState();
6228 		BooleanPrimaryContext _localctx = new BooleanPrimaryContext(_ctx, _parentState);
6229 		BooleanPrimaryContext _prevctx = _localctx;
6230 		int _startState = 108;
6231 		enterRecursionRule(_localctx, 108, RULE_booleanPrimary, _p);
6232 		int _la;
6233 		try {
6234 			int _alt;
6235 			enterOuterAlt(_localctx, 1);
6236 			{
6237 			{
6238 			setState(1397);
6239 			predicate();
6240 			}
6241 			_ctx.stop = _input.LT(-1);
6242 			setState(1419);
6243 			_errHandler.sync(this);
6244 			_alt = getInterpreter().adaptivePredict(_input,48,_ctx);
6245 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
6246 				if ( _alt==1 ) {
6247 					if ( _parseListeners!=null ) triggerExitRuleEvent();
6248 					_prevctx = _localctx;
6249 					{
6250 					setState(1417);
6251 					_errHandler.sync(this);
6252 					switch ( getInterpreter().adaptivePredict(_input,47,_ctx) ) {
6253 					case 1:
6254 						{
6255 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6256 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6257 						setState(1399);
6258 						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
6259 						setState(1400);
6260 						match(IS);
6261 						setState(1402);
6262 						_errHandler.sync(this);
6263 						_la = _input.LA(1);
6264 						if (_la==NOT) {
6265 							{
6266 							setState(1401);
6267 							match(NOT);
6268 							}
6269 						}
6270 
6271 						setState(1404);
6272 						_la = _input.LA(1);
6273 						if ( !(((((_la - 108)) & ~0x3f) == 0 && ((1L << (_la - 108)) & ((1L << (NULL - 108)) | (1L << (TRUE - 108)) | (1L << (FALSE - 108)))) != 0) || _la==UNKNOWN) ) {
6274 						_errHandler.recoverInline(this);
6275 						}
6276 						else {
6277 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6278 							_errHandler.reportMatch(this);
6279 							consume();
6280 						}
6281 						}
6282 						break;
6283 					case 2:
6284 						{
6285 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6286 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6287 						setState(1405);
6288 						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
6289 						setState(1406);
6290 						match(SAFE_EQ_);
6291 						setState(1407);
6292 						predicate();
6293 						}
6294 						break;
6295 					case 3:
6296 						{
6297 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6298 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6299 						setState(1408);
6300 						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
6301 						setState(1409);
6302 						comparisonOperator();
6303 						setState(1410);
6304 						predicate();
6305 						}
6306 						break;
6307 					case 4:
6308 						{
6309 						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
6310 						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
6311 						setState(1412);
6312 						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
6313 						setState(1413);
6314 						comparisonOperator();
6315 						setState(1414);
6316 						_la = _input.LA(1);
6317 						if ( !(_la==ALL || _la==ANY) ) {
6318 						_errHandler.recoverInline(this);
6319 						}
6320 						else {
6321 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6322 							_errHandler.reportMatch(this);
6323 							consume();
6324 						}
6325 						setState(1415);
6326 						subquery();
6327 						}
6328 						break;
6329 					}
6330 					} 
6331 				}
6332 				setState(1421);
6333 				_errHandler.sync(this);
6334 				_alt = getInterpreter().adaptivePredict(_input,48,_ctx);
6335 			}
6336 			}
6337 		}
6338 		catch (RecognitionException re) {
6339 			_localctx.exception = re;
6340 			_errHandler.reportError(this, re);
6341 			_errHandler.recover(this, re);
6342 		}
6343 		finally {
6344 			unrollRecursionContexts(_parentctx);
6345 		}
6346 		return _localctx;
6347 	}
6348 
6349 	public static class ComparisonOperatorContext extends ParserRuleContext {
6350 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
6351 		public TerminalNode GTE_() { return getToken(SQLServerStatementParser.GTE_, 0); }
6352 		public TerminalNode GT_() { return getToken(SQLServerStatementParser.GT_, 0); }
6353 		public TerminalNode LTE_() { return getToken(SQLServerStatementParser.LTE_, 0); }
6354 		public TerminalNode LT_() { return getToken(SQLServerStatementParser.LT_, 0); }
6355 		public TerminalNode NEQ_() { return getToken(SQLServerStatementParser.NEQ_, 0); }
6356 		public ComparisonOperatorContext(ParserRuleContext parent, int invokingState) {
6357 			super(parent, invokingState);
6358 		}
6359 		@Override public int getRuleIndex() { return RULE_comparisonOperator; }
6360 		@Override
6361 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6362 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComparisonOperator(this);
6363 			else return visitor.visitChildren(this);
6364 		}
6365 	}
6366 
6367 	public final ComparisonOperatorContext comparisonOperator() throws RecognitionException {
6368 		ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState());
6369 		enterRule(_localctx, 110, RULE_comparisonOperator);
6370 		int _la;
6371 		try {
6372 			enterOuterAlt(_localctx, 1);
6373 			{
6374 			setState(1422);
6375 			_la = _input.LA(1);
6376 			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EQ_) | (1L << NEQ_) | (1L << GT_) | (1L << GTE_) | (1L << LT_) | (1L << LTE_))) != 0)) ) {
6377 			_errHandler.recoverInline(this);
6378 			}
6379 			else {
6380 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6381 				_errHandler.reportMatch(this);
6382 				consume();
6383 			}
6384 			}
6385 		}
6386 		catch (RecognitionException re) {
6387 			_localctx.exception = re;
6388 			_errHandler.reportError(this, re);
6389 			_errHandler.recover(this, re);
6390 		}
6391 		finally {
6392 			exitRule();
6393 		}
6394 		return _localctx;
6395 	}
6396 
6397 	public static class PredicateContext extends ParserRuleContext {
6398 		public List<BitExprContext> bitExpr() {
6399 			return getRuleContexts(BitExprContext.class);
6400 		}
6401 		public BitExprContext bitExpr(int i) {
6402 			return getRuleContext(BitExprContext.class,i);
6403 		}
6404 		public TerminalNode IN() { return getToken(SQLServerStatementParser.IN, 0); }
6405 		public SubqueryContext subquery() {
6406 			return getRuleContext(SubqueryContext.class,0);
6407 		}
6408 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
6409 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
6410 		public List<ExprContext> expr() {
6411 			return getRuleContexts(ExprContext.class);
6412 		}
6413 		public ExprContext expr(int i) {
6414 			return getRuleContext(ExprContext.class,i);
6415 		}
6416 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
6417 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
6418 		public TerminalNode COMMA_(int i) {
6419 			return getToken(SQLServerStatementParser.COMMA_, i);
6420 		}
6421 		public TerminalNode BETWEEN() { return getToken(SQLServerStatementParser.BETWEEN, 0); }
6422 		public TerminalNode AND() { return getToken(SQLServerStatementParser.AND, 0); }
6423 		public PredicateContext predicate() {
6424 			return getRuleContext(PredicateContext.class,0);
6425 		}
6426 		public TerminalNode LIKE() { return getToken(SQLServerStatementParser.LIKE, 0); }
6427 		public List<SimpleExprContext> simpleExpr() {
6428 			return getRuleContexts(SimpleExprContext.class);
6429 		}
6430 		public SimpleExprContext simpleExpr(int i) {
6431 			return getRuleContext(SimpleExprContext.class,i);
6432 		}
6433 		public TerminalNode ESCAPE() { return getToken(SQLServerStatementParser.ESCAPE, 0); }
6434 		public PredicateContext(ParserRuleContext parent, int invokingState) {
6435 			super(parent, invokingState);
6436 		}
6437 		@Override public int getRuleIndex() { return RULE_predicate; }
6438 		@Override
6439 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6440 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPredicate(this);
6441 			else return visitor.visitChildren(this);
6442 		}
6443 	}
6444 
6445 	public final PredicateContext predicate() throws RecognitionException {
6446 		PredicateContext _localctx = new PredicateContext(_ctx, getState());
6447 		enterRule(_localctx, 112, RULE_predicate);
6448 		int _la;
6449 		try {
6450 			setState(1467);
6451 			_errHandler.sync(this);
6452 			switch ( getInterpreter().adaptivePredict(_input,55,_ctx) ) {
6453 			case 1:
6454 				enterOuterAlt(_localctx, 1);
6455 				{
6456 				setState(1424);
6457 				bitExpr(0);
6458 				setState(1426);
6459 				_errHandler.sync(this);
6460 				_la = _input.LA(1);
6461 				if (_la==NOT) {
6462 					{
6463 					setState(1425);
6464 					match(NOT);
6465 					}
6466 				}
6467 
6468 				setState(1428);
6469 				match(IN);
6470 				setState(1429);
6471 				subquery();
6472 				}
6473 				break;
6474 			case 2:
6475 				enterOuterAlt(_localctx, 2);
6476 				{
6477 				setState(1431);
6478 				bitExpr(0);
6479 				setState(1433);
6480 				_errHandler.sync(this);
6481 				_la = _input.LA(1);
6482 				if (_la==NOT) {
6483 					{
6484 					setState(1432);
6485 					match(NOT);
6486 					}
6487 				}
6488 
6489 				setState(1435);
6490 				match(IN);
6491 				setState(1436);
6492 				match(LP_);
6493 				setState(1437);
6494 				expr(0);
6495 				setState(1442);
6496 				_errHandler.sync(this);
6497 				_la = _input.LA(1);
6498 				while (_la==COMMA_) {
6499 					{
6500 					{
6501 					setState(1438);
6502 					match(COMMA_);
6503 					setState(1439);
6504 					expr(0);
6505 					}
6506 					}
6507 					setState(1444);
6508 					_errHandler.sync(this);
6509 					_la = _input.LA(1);
6510 				}
6511 				setState(1445);
6512 				match(RP_);
6513 				}
6514 				break;
6515 			case 3:
6516 				enterOuterAlt(_localctx, 3);
6517 				{
6518 				setState(1447);
6519 				bitExpr(0);
6520 				setState(1449);
6521 				_errHandler.sync(this);
6522 				_la = _input.LA(1);
6523 				if (_la==NOT) {
6524 					{
6525 					setState(1448);
6526 					match(NOT);
6527 					}
6528 				}
6529 
6530 				setState(1451);
6531 				match(BETWEEN);
6532 				setState(1452);
6533 				bitExpr(0);
6534 				setState(1453);
6535 				match(AND);
6536 				setState(1454);
6537 				predicate();
6538 				}
6539 				break;
6540 			case 4:
6541 				enterOuterAlt(_localctx, 4);
6542 				{
6543 				setState(1456);
6544 				bitExpr(0);
6545 				setState(1458);
6546 				_errHandler.sync(this);
6547 				_la = _input.LA(1);
6548 				if (_la==NOT) {
6549 					{
6550 					setState(1457);
6551 					match(NOT);
6552 					}
6553 				}
6554 
6555 				setState(1460);
6556 				match(LIKE);
6557 				setState(1461);
6558 				simpleExpr(0);
6559 				setState(1464);
6560 				_errHandler.sync(this);
6561 				switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) {
6562 				case 1:
6563 					{
6564 					setState(1462);
6565 					match(ESCAPE);
6566 					setState(1463);
6567 					simpleExpr(0);
6568 					}
6569 					break;
6570 				}
6571 				}
6572 				break;
6573 			case 5:
6574 				enterOuterAlt(_localctx, 5);
6575 				{
6576 				setState(1466);
6577 				bitExpr(0);
6578 				}
6579 				break;
6580 			}
6581 		}
6582 		catch (RecognitionException re) {
6583 			_localctx.exception = re;
6584 			_errHandler.reportError(this, re);
6585 			_errHandler.recover(this, re);
6586 		}
6587 		finally {
6588 			exitRule();
6589 		}
6590 		return _localctx;
6591 	}
6592 
6593 	public static class BitExprContext extends ParserRuleContext {
6594 		public SimpleExprContext simpleExpr() {
6595 			return getRuleContext(SimpleExprContext.class,0);
6596 		}
6597 		public List<BitExprContext> bitExpr() {
6598 			return getRuleContexts(BitExprContext.class);
6599 		}
6600 		public BitExprContext bitExpr(int i) {
6601 			return getRuleContext(BitExprContext.class,i);
6602 		}
6603 		public TerminalNode VERTICAL_BAR_() { return getToken(SQLServerStatementParser.VERTICAL_BAR_, 0); }
6604 		public TerminalNode AMPERSAND_() { return getToken(SQLServerStatementParser.AMPERSAND_, 0); }
6605 		public TerminalNode SIGNED_LEFT_SHIFT_() { return getToken(SQLServerStatementParser.SIGNED_LEFT_SHIFT_, 0); }
6606 		public TerminalNode SIGNED_RIGHT_SHIFT_() { return getToken(SQLServerStatementParser.SIGNED_RIGHT_SHIFT_, 0); }
6607 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
6608 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
6609 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
6610 		public TerminalNode SLASH_() { return getToken(SQLServerStatementParser.SLASH_, 0); }
6611 		public TerminalNode MOD_() { return getToken(SQLServerStatementParser.MOD_, 0); }
6612 		public TerminalNode CARET_() { return getToken(SQLServerStatementParser.CARET_, 0); }
6613 		public BitExprContext(ParserRuleContext parent, int invokingState) {
6614 			super(parent, invokingState);
6615 		}
6616 		@Override public int getRuleIndex() { return RULE_bitExpr; }
6617 		@Override
6618 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6619 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitBitExpr(this);
6620 			else return visitor.visitChildren(this);
6621 		}
6622 	}
6623 
6624 	public final BitExprContext bitExpr() throws RecognitionException {
6625 		return bitExpr(0);
6626 	}
6627 
6628 	private BitExprContext bitExpr(int _p) throws RecognitionException {
6629 		ParserRuleContext _parentctx = _ctx;
6630 		int _parentState = getState();
6631 		BitExprContext _localctx = new BitExprContext(_ctx, _parentState);
6632 		BitExprContext _prevctx = _localctx;
6633 		int _startState = 114;
6634 		enterRecursionRule(_localctx, 114, RULE_bitExpr, _p);
6635 		try {
6636 			int _alt;
6637 			enterOuterAlt(_localctx, 1);
6638 			{
6639 			{
6640 			setState(1470);
6641 			simpleExpr(0);
6642 			}
6643 			_ctx.stop = _input.LT(-1);
6644 			setState(1504);
6645 			_errHandler.sync(this);
6646 			_alt = getInterpreter().adaptivePredict(_input,57,_ctx);
6647 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
6648 				if ( _alt==1 ) {
6649 					if ( _parseListeners!=null ) triggerExitRuleEvent();
6650 					_prevctx = _localctx;
6651 					{
6652 					setState(1502);
6653 					_errHandler.sync(this);
6654 					switch ( getInterpreter().adaptivePredict(_input,56,_ctx) ) {
6655 					case 1:
6656 						{
6657 						_localctx = new BitExprContext(_parentctx, _parentState);
6658 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6659 						setState(1472);
6660 						if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
6661 						setState(1473);
6662 						match(VERTICAL_BAR_);
6663 						setState(1474);
6664 						bitExpr(12);
6665 						}
6666 						break;
6667 					case 2:
6668 						{
6669 						_localctx = new BitExprContext(_parentctx, _parentState);
6670 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6671 						setState(1475);
6672 						if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
6673 						setState(1476);
6674 						match(AMPERSAND_);
6675 						setState(1477);
6676 						bitExpr(11);
6677 						}
6678 						break;
6679 					case 3:
6680 						{
6681 						_localctx = new BitExprContext(_parentctx, _parentState);
6682 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6683 						setState(1478);
6684 						if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
6685 						setState(1479);
6686 						match(SIGNED_LEFT_SHIFT_);
6687 						setState(1480);
6688 						bitExpr(10);
6689 						}
6690 						break;
6691 					case 4:
6692 						{
6693 						_localctx = new BitExprContext(_parentctx, _parentState);
6694 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6695 						setState(1481);
6696 						if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
6697 						setState(1482);
6698 						match(SIGNED_RIGHT_SHIFT_);
6699 						setState(1483);
6700 						bitExpr(9);
6701 						}
6702 						break;
6703 					case 5:
6704 						{
6705 						_localctx = new BitExprContext(_parentctx, _parentState);
6706 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6707 						setState(1484);
6708 						if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
6709 						setState(1485);
6710 						match(PLUS_);
6711 						setState(1486);
6712 						bitExpr(8);
6713 						}
6714 						break;
6715 					case 6:
6716 						{
6717 						_localctx = new BitExprContext(_parentctx, _parentState);
6718 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6719 						setState(1487);
6720 						if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
6721 						setState(1488);
6722 						match(MINUS_);
6723 						setState(1489);
6724 						bitExpr(7);
6725 						}
6726 						break;
6727 					case 7:
6728 						{
6729 						_localctx = new BitExprContext(_parentctx, _parentState);
6730 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6731 						setState(1490);
6732 						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
6733 						setState(1491);
6734 						match(ASTERISK_);
6735 						setState(1492);
6736 						bitExpr(6);
6737 						}
6738 						break;
6739 					case 8:
6740 						{
6741 						_localctx = new BitExprContext(_parentctx, _parentState);
6742 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6743 						setState(1493);
6744 						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
6745 						setState(1494);
6746 						match(SLASH_);
6747 						setState(1495);
6748 						bitExpr(5);
6749 						}
6750 						break;
6751 					case 9:
6752 						{
6753 						_localctx = new BitExprContext(_parentctx, _parentState);
6754 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6755 						setState(1496);
6756 						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
6757 						setState(1497);
6758 						match(MOD_);
6759 						setState(1498);
6760 						bitExpr(4);
6761 						}
6762 						break;
6763 					case 10:
6764 						{
6765 						_localctx = new BitExprContext(_parentctx, _parentState);
6766 						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
6767 						setState(1499);
6768 						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
6769 						setState(1500);
6770 						match(CARET_);
6771 						setState(1501);
6772 						bitExpr(3);
6773 						}
6774 						break;
6775 					}
6776 					} 
6777 				}
6778 				setState(1506);
6779 				_errHandler.sync(this);
6780 				_alt = getInterpreter().adaptivePredict(_input,57,_ctx);
6781 			}
6782 			}
6783 		}
6784 		catch (RecognitionException re) {
6785 			_localctx.exception = re;
6786 			_errHandler.reportError(this, re);
6787 			_errHandler.recover(this, re);
6788 		}
6789 		finally {
6790 			unrollRecursionContexts(_parentctx);
6791 		}
6792 		return _localctx;
6793 	}
6794 
6795 	public static class SimpleExprContext extends ParserRuleContext {
6796 		public FunctionCallContext functionCall() {
6797 			return getRuleContext(FunctionCallContext.class,0);
6798 		}
6799 		public ParameterMarkerContext parameterMarker() {
6800 			return getRuleContext(ParameterMarkerContext.class,0);
6801 		}
6802 		public LiteralsContext literals() {
6803 			return getRuleContext(LiteralsContext.class,0);
6804 		}
6805 		public ColumnNameContext columnName() {
6806 			return getRuleContext(ColumnNameContext.class,0);
6807 		}
6808 		public VariableNameContext variableName() {
6809 			return getRuleContext(VariableNameContext.class,0);
6810 		}
6811 		public List<SimpleExprContext> simpleExpr() {
6812 			return getRuleContexts(SimpleExprContext.class);
6813 		}
6814 		public SimpleExprContext simpleExpr(int i) {
6815 			return getRuleContext(SimpleExprContext.class,i);
6816 		}
6817 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
6818 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
6819 		public TerminalNode TILDE_() { return getToken(SQLServerStatementParser.TILDE_, 0); }
6820 		public TerminalNode NOT_() { return getToken(SQLServerStatementParser.NOT_, 0); }
6821 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
6822 		public TerminalNode DOLLAR_() { return getToken(SQLServerStatementParser.DOLLAR_, 0); }
6823 		public TerminalNode CURRENT() { return getToken(SQLServerStatementParser.CURRENT, 0); }
6824 		public TerminalNode OF() { return getToken(SQLServerStatementParser.OF, 0); }
6825 		public List<ExprContext> expr() {
6826 			return getRuleContexts(ExprContext.class);
6827 		}
6828 		public ExprContext expr(int i) {
6829 			return getRuleContext(ExprContext.class,i);
6830 		}
6831 		public TerminalNode GLOBAL() { return getToken(SQLServerStatementParser.GLOBAL, 0); }
6832 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
6833 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
6834 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
6835 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
6836 		public TerminalNode COMMA_(int i) {
6837 			return getToken(SQLServerStatementParser.COMMA_, i);
6838 		}
6839 		public SubqueryContext subquery() {
6840 			return getRuleContext(SubqueryContext.class,0);
6841 		}
6842 		public TerminalNode EXISTS() { return getToken(SQLServerStatementParser.EXISTS, 0); }
6843 		public TerminalNode LBT_() { return getToken(SQLServerStatementParser.LBT_, 0); }
6844 		public TerminalNode RBT_() { return getToken(SQLServerStatementParser.RBT_, 0); }
6845 		public TerminalNode LBE_() { return getToken(SQLServerStatementParser.LBE_, 0); }
6846 		public TerminalNode RBE_() { return getToken(SQLServerStatementParser.RBE_, 0); }
6847 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
6848 		public TerminalNode DOT_(int i) {
6849 			return getToken(SQLServerStatementParser.DOT_, i);
6850 		}
6851 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
6852 		public TerminalNode COLUMNS() { return getToken(SQLServerStatementParser.COLUMNS, 0); }
6853 		public TerminalNode ROWS() { return getToken(SQLServerStatementParser.ROWS, 0); }
6854 		public CaseExpressionContext caseExpression() {
6855 			return getRuleContext(CaseExpressionContext.class,0);
6856 		}
6857 		public PrivateExprOfDbContext privateExprOfDb() {
6858 			return getRuleContext(PrivateExprOfDbContext.class,0);
6859 		}
6860 		public TerminalNode OR_() { return getToken(SQLServerStatementParser.OR_, 0); }
6861 		public SimpleExprContext(ParserRuleContext parent, int invokingState) {
6862 			super(parent, invokingState);
6863 		}
6864 		@Override public int getRuleIndex() { return RULE_simpleExpr; }
6865 		@Override
6866 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
6867 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSimpleExpr(this);
6868 			else return visitor.visitChildren(this);
6869 		}
6870 	}
6871 
6872 	public final SimpleExprContext simpleExpr() throws RecognitionException {
6873 		return simpleExpr(0);
6874 	}
6875 
6876 	private SimpleExprContext simpleExpr(int _p) throws RecognitionException {
6877 		ParserRuleContext _parentctx = _ctx;
6878 		int _parentState = getState();
6879 		SimpleExprContext _localctx = new SimpleExprContext(_ctx, _parentState);
6880 		SimpleExprContext _prevctx = _localctx;
6881 		int _startState = 116;
6882 		enterRecursionRule(_localctx, 116, RULE_simpleExpr, _p);
6883 		int _la;
6884 		try {
6885 			int _alt;
6886 			enterOuterAlt(_localctx, 1);
6887 			{
6888 			setState(1566);
6889 			_errHandler.sync(this);
6890 			switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) {
6891 			case 1:
6892 				{
6893 				setState(1508);
6894 				functionCall();
6895 				}
6896 				break;
6897 			case 2:
6898 				{
6899 				setState(1509);
6900 				parameterMarker();
6901 				}
6902 				break;
6903 			case 3:
6904 				{
6905 				setState(1510);
6906 				literals();
6907 				}
6908 				break;
6909 			case 4:
6910 				{
6911 				setState(1511);
6912 				columnName();
6913 				}
6914 				break;
6915 			case 5:
6916 				{
6917 				setState(1512);
6918 				variableName();
6919 				}
6920 				break;
6921 			case 6:
6922 				{
6923 				setState(1513);
6924 				_la = _input.LA(1);
6925 				if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << DOLLAR_))) != 0) || _la==BINARY) ) {
6926 				_errHandler.recoverInline(this);
6927 				}
6928 				else {
6929 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
6930 					_errHandler.reportMatch(this);
6931 					consume();
6932 				}
6933 				setState(1514);
6934 				simpleExpr(8);
6935 				}
6936 				break;
6937 			case 7:
6938 				{
6939 				setState(1515);
6940 				match(CURRENT);
6941 				setState(1516);
6942 				match(OF);
6943 				setState(1518);
6944 				_errHandler.sync(this);
6945 				switch ( getInterpreter().adaptivePredict(_input,58,_ctx) ) {
6946 				case 1:
6947 					{
6948 					setState(1517);
6949 					match(GLOBAL);
6950 					}
6951 					break;
6952 				}
6953 				setState(1520);
6954 				expr(0);
6955 				}
6956 				break;
6957 			case 8:
6958 				{
6959 				setState(1522);
6960 				_errHandler.sync(this);
6961 				_la = _input.LA(1);
6962 				if (_la==ROW) {
6963 					{
6964 					setState(1521);
6965 					match(ROW);
6966 					}
6967 				}
6968 
6969 				setState(1524);
6970 				match(LP_);
6971 				setState(1525);
6972 				expr(0);
6973 				setState(1530);
6974 				_errHandler.sync(this);
6975 				_la = _input.LA(1);
6976 				while (_la==COMMA_) {
6977 					{
6978 					{
6979 					setState(1526);
6980 					match(COMMA_);
6981 					setState(1527);
6982 					expr(0);
6983 					}
6984 					}
6985 					setState(1532);
6986 					_errHandler.sync(this);
6987 					_la = _input.LA(1);
6988 				}
6989 				setState(1533);
6990 				match(RP_);
6991 				}
6992 				break;
6993 			case 9:
6994 				{
6995 				setState(1536);
6996 				_errHandler.sync(this);
6997 				_la = _input.LA(1);
6998 				if (_la==EXISTS) {
6999 					{
7000 					setState(1535);
7001 					match(EXISTS);
7002 					}
7003 				}
7004 
7005 				setState(1538);
7006 				subquery();
7007 				}
7008 				break;
7009 			case 10:
7010 				{
7011 				setState(1539);
7012 				match(LBT_);
7013 				setState(1540);
7014 				expr(0);
7015 				setState(1541);
7016 				match(RBT_);
7017 				}
7018 				break;
7019 			case 11:
7020 				{
7021 				setState(1543);
7022 				match(LBE_);
7023 				setState(1544);
7024 				expr(0);
7025 				setState(1549);
7026 				_errHandler.sync(this);
7027 				_la = _input.LA(1);
7028 				while (_la==DOT_) {
7029 					{
7030 					{
7031 					setState(1545);
7032 					match(DOT_);
7033 					setState(1546);
7034 					expr(0);
7035 					}
7036 					}
7037 					setState(1551);
7038 					_errHandler.sync(this);
7039 					_la = _input.LA(1);
7040 				}
7041 				setState(1556);
7042 				_errHandler.sync(this);
7043 				_la = _input.LA(1);
7044 				while (_la==COMMA_) {
7045 					{
7046 					{
7047 					setState(1552);
7048 					match(COMMA_);
7049 					setState(1553);
7050 					expr(0);
7051 					}
7052 					}
7053 					setState(1558);
7054 					_errHandler.sync(this);
7055 					_la = _input.LA(1);
7056 				}
7057 				setState(1559);
7058 				match(RBE_);
7059 				setState(1562);
7060 				_errHandler.sync(this);
7061 				switch ( getInterpreter().adaptivePredict(_input,64,_ctx) ) {
7062 				case 1:
7063 					{
7064 					setState(1560);
7065 					match(ON);
7066 					setState(1561);
7067 					_la = _input.LA(1);
7068 					if ( !(_la==COLUMNS || _la==ROWS) ) {
7069 					_errHandler.recoverInline(this);
7070 					}
7071 					else {
7072 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
7073 						_errHandler.reportMatch(this);
7074 						consume();
7075 					}
7076 					}
7077 					break;
7078 				}
7079 				}
7080 				break;
7081 			case 12:
7082 				{
7083 				setState(1564);
7084 				caseExpression();
7085 				}
7086 				break;
7087 			case 13:
7088 				{
7089 				setState(1565);
7090 				privateExprOfDb();
7091 				}
7092 				break;
7093 			}
7094 			_ctx.stop = _input.LT(-1);
7095 			setState(1573);
7096 			_errHandler.sync(this);
7097 			_alt = getInterpreter().adaptivePredict(_input,66,_ctx);
7098 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
7099 				if ( _alt==1 ) {
7100 					if ( _parseListeners!=null ) triggerExitRuleEvent();
7101 					_prevctx = _localctx;
7102 					{
7103 					{
7104 					_localctx = new SimpleExprContext(_parentctx, _parentState);
7105 					pushNewRecursionContext(_localctx, _startState, RULE_simpleExpr);
7106 					setState(1568);
7107 					if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
7108 					setState(1569);
7109 					match(OR_);
7110 					setState(1570);
7111 					simpleExpr(10);
7112 					}
7113 					} 
7114 				}
7115 				setState(1575);
7116 				_errHandler.sync(this);
7117 				_alt = getInterpreter().adaptivePredict(_input,66,_ctx);
7118 			}
7119 			}
7120 		}
7121 		catch (RecognitionException re) {
7122 			_localctx.exception = re;
7123 			_errHandler.reportError(this, re);
7124 			_errHandler.recover(this, re);
7125 		}
7126 		finally {
7127 			unrollRecursionContexts(_parentctx);
7128 		}
7129 		return _localctx;
7130 	}
7131 
7132 	public static class FunctionCallContext extends ParserRuleContext {
7133 		public AggregationFunctionContext aggregationFunction() {
7134 			return getRuleContext(AggregationFunctionContext.class,0);
7135 		}
7136 		public SpecialFunctionContext specialFunction() {
7137 			return getRuleContext(SpecialFunctionContext.class,0);
7138 		}
7139 		public RegularFunctionContext regularFunction() {
7140 			return getRuleContext(RegularFunctionContext.class,0);
7141 		}
7142 		public FunctionCallContext(ParserRuleContext parent, int invokingState) {
7143 			super(parent, invokingState);
7144 		}
7145 		@Override public int getRuleIndex() { return RULE_functionCall; }
7146 		@Override
7147 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7148 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFunctionCall(this);
7149 			else return visitor.visitChildren(this);
7150 		}
7151 	}
7152 
7153 	public final FunctionCallContext functionCall() throws RecognitionException {
7154 		FunctionCallContext _localctx = new FunctionCallContext(_ctx, getState());
7155 		enterRule(_localctx, 118, RULE_functionCall);
7156 		try {
7157 			setState(1579);
7158 			_errHandler.sync(this);
7159 			switch ( getInterpreter().adaptivePredict(_input,67,_ctx) ) {
7160 			case 1:
7161 				enterOuterAlt(_localctx, 1);
7162 				{
7163 				setState(1576);
7164 				aggregationFunction();
7165 				}
7166 				break;
7167 			case 2:
7168 				enterOuterAlt(_localctx, 2);
7169 				{
7170 				setState(1577);
7171 				specialFunction();
7172 				}
7173 				break;
7174 			case 3:
7175 				enterOuterAlt(_localctx, 3);
7176 				{
7177 				setState(1578);
7178 				regularFunction();
7179 				}
7180 				break;
7181 			}
7182 		}
7183 		catch (RecognitionException re) {
7184 			_localctx.exception = re;
7185 			_errHandler.reportError(this, re);
7186 			_errHandler.recover(this, re);
7187 		}
7188 		finally {
7189 			exitRule();
7190 		}
7191 		return _localctx;
7192 	}
7193 
7194 	public static class AggregationFunctionContext extends ParserRuleContext {
7195 		public AggregationFunctionNameContext aggregationFunctionName() {
7196 			return getRuleContext(AggregationFunctionNameContext.class,0);
7197 		}
7198 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7199 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7200 		public DistinctContext distinct() {
7201 			return getRuleContext(DistinctContext.class,0);
7202 		}
7203 		public List<ExprContext> expr() {
7204 			return getRuleContexts(ExprContext.class);
7205 		}
7206 		public ExprContext expr(int i) {
7207 			return getRuleContext(ExprContext.class,i);
7208 		}
7209 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
7210 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
7211 		public TerminalNode COMMA_(int i) {
7212 			return getToken(SQLServerStatementParser.COMMA_, i);
7213 		}
7214 		public AggregationFunctionContext(ParserRuleContext parent, int invokingState) {
7215 			super(parent, invokingState);
7216 		}
7217 		@Override public int getRuleIndex() { return RULE_aggregationFunction; }
7218 		@Override
7219 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7220 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAggregationFunction(this);
7221 			else return visitor.visitChildren(this);
7222 		}
7223 	}
7224 
7225 	public final AggregationFunctionContext aggregationFunction() throws RecognitionException {
7226 		AggregationFunctionContext _localctx = new AggregationFunctionContext(_ctx, getState());
7227 		enterRule(_localctx, 120, RULE_aggregationFunction);
7228 		int _la;
7229 		try {
7230 			enterOuterAlt(_localctx, 1);
7231 			{
7232 			setState(1581);
7233 			aggregationFunctionName();
7234 			setState(1582);
7235 			match(LP_);
7236 			setState(1584);
7237 			_errHandler.sync(this);
7238 			_la = _input.LA(1);
7239 			if (_la==DISTINCT) {
7240 				{
7241 				setState(1583);
7242 				distinct();
7243 				}
7244 			}
7245 
7246 			setState(1595);
7247 			_errHandler.sync(this);
7248 			switch (_input.LA(1)) {
7249 			case NOT_:
7250 			case TILDE_:
7251 			case PLUS_:
7252 			case MINUS_:
7253 			case LP_:
7254 			case LBE_:
7255 			case LBT_:
7256 			case QUESTION_:
7257 			case DOLLAR_:
7258 			case TRUNCATE:
7259 			case SCHEMA:
7260 			case COLUMNS:
7261 			case PRECISION:
7262 			case FUNCTION:
7263 			case TRIGGER:
7264 			case CASE:
7265 			case CAST:
7266 			case TRIM:
7267 			case SUBSTRING:
7268 			case RIGHT:
7269 			case OFF:
7270 			case IF:
7271 			case NOT:
7272 			case NULL:
7273 			case TRUE:
7274 			case FALSE:
7275 			case EXISTS:
7276 			case GROUP:
7277 			case LIMIT:
7278 			case OFFSET:
7279 			case SAVEPOINT:
7280 			case BOOLEAN:
7281 			case CHAR:
7282 			case ARRAY:
7283 			case INTERVAL:
7284 			case DATE:
7285 			case TIME:
7286 			case TIMESTAMP:
7287 			case LOCALTIME:
7288 			case LOCALTIMESTAMP:
7289 			case YEAR:
7290 			case QUARTER:
7291 			case MONTH:
7292 			case WEEK:
7293 			case DAY:
7294 			case SECOND:
7295 			case MICROSECOND:
7296 			case MAX:
7297 			case MIN:
7298 			case SUM:
7299 			case COUNT:
7300 			case AVG:
7301 			case CURRENT:
7302 			case ENABLE:
7303 			case DISABLE:
7304 			case INSTANCE:
7305 			case DO:
7306 			case DEFINER:
7307 			case SQL:
7308 			case CASCADED:
7309 			case LOCAL:
7310 			case NEXT:
7311 			case NAME:
7312 			case INTEGER:
7313 			case TYPE:
7314 			case TEXT:
7315 			case VIEWS:
7316 			case READ_ONLY:
7317 			case DATABASE:
7318 			case RETURNS:
7319 			case DATEPART:
7320 			case PASSWORD:
7321 			case JSON_OBJECT:
7322 			case JSON_ARRAY:
7323 			case FIRST_VALUE:
7324 			case LAST_VALUE:
7325 			case APPROX_PERCENTILE_CONT:
7326 			case APPROX_PERCENTILE_DISC:
7327 			case OPENDATASOURCE:
7328 			case BINARY:
7329 			case HIDDEN_:
7330 			case MOD:
7331 			case PARTITION:
7332 			case PARTITIONS:
7333 			case TOP:
7334 			case ROW:
7335 			case ROWS:
7336 			case XOR:
7337 			case ALWAYS:
7338 			case USER:
7339 			case ROLE:
7340 			case START:
7341 			case ALGORITHM:
7342 			case AUTO:
7343 			case BLOCKERS:
7344 			case CLUSTERED:
7345 			case NONCLUSTERED:
7346 			case COLUMNSTORE:
7347 			case CONTENT:
7348 			case CONVERT:
7349 			case YEARS:
7350 			case MONTHS:
7351 			case WEEKS:
7352 			case DAYS:
7353 			case MINUTES:
7354 			case DENY:
7355 			case DETERMINISTIC:
7356 			case DISTRIBUTION:
7357 			case DOCUMENT:
7358 			case DURABILITY:
7359 			case ENCRYPTED:
7360 			case FILESTREAM:
7361 			case FILETABLE:
7362 			case FILLFACTOR:
7363 			case FOLLOWING:
7364 			case HASH:
7365 			case HEAP:
7366 			case INBOUND:
7367 			case OUTBOUND:
7368 			case UNBOUNDED:
7369 			case INFINITE:
7370 			case LOGIN:
7371 			case MASKED:
7372 			case MAXDOP:
7373 			case MOVE:
7374 			case NOCHECK:
7375 			case OBJECT:
7376 			case ONLINE:
7377 			case OVER:
7378 			case PAGE:
7379 			case PAUSED:
7380 			case PERIOD:
7381 			case PERSISTED:
7382 			case PRECEDING:
7383 			case RANDOMIZED:
7384 			case RANGE:
7385 			case REBUILD:
7386 			case REPLICATE:
7387 			case REPLICATION:
7388 			case RESUMABLE:
7389 			case ROWGUIDCOL:
7390 			case SAVE:
7391 			case SELF:
7392 			case SPARSE:
7393 			case SWITCH:
7394 			case TRAN:
7395 			case TRANCOUNT:
7396 			case CONTROL:
7397 			case CONCAT:
7398 			case TAKE:
7399 			case OWNERSHIP:
7400 			case DEFINITION:
7401 			case APPLICATION:
7402 			case ASSEMBLY:
7403 			case SYMMETRIC:
7404 			case ASYMMETRIC:
7405 			case SERVER:
7406 			case RECEIVE:
7407 			case CHANGE:
7408 			case TRACE:
7409 			case TRACKING:
7410 			case RESOURCES:
7411 			case SETTINGS:
7412 			case STATE:
7413 			case AVAILABILITY:
7414 			case CREDENTIAL:
7415 			case ENDPOINT:
7416 			case EVENT:
7417 			case NOTIFICATION:
7418 			case LINKED:
7419 			case AUDIT:
7420 			case DDL:
7421 			case XML:
7422 			case IMPERSONATE:
7423 			case SECURABLES:
7424 			case AUTHENTICATE:
7425 			case EXTERNAL:
7426 			case ACCESS:
7427 			case ADMINISTER:
7428 			case BULK:
7429 			case OPERATIONS:
7430 			case UNSAFE:
7431 			case SHUTDOWN:
7432 			case SCOPED:
7433 			case CONFIGURATION:
7434 			case DATASPACE:
7435 			case SERVICE:
7436 			case CERTIFICATE:
7437 			case CONTRACT:
7438 			case ENCRYPTION:
7439 			case MASTER:
7440 			case DATA:
7441 			case SOURCE:
7442 			case FILE:
7443 			case FORMAT:
7444 			case LIBRARY:
7445 			case FULLTEXT:
7446 			case MASK:
7447 			case UNMASK:
7448 			case MESSAGE:
7449 			case REMOTE:
7450 			case BINDING:
7451 			case ROUTE:
7452 			case SECURITY:
7453 			case POLICY:
7454 			case AGGREGATE:
7455 			case QUEUE:
7456 			case RULE:
7457 			case SYNONYM:
7458 			case COLLECTION:
7459 			case SCRIPT:
7460 			case KILL:
7461 			case BACKUP:
7462 			case LOG:
7463 			case SHOWPLAN:
7464 			case SUBSCRIBE:
7465 			case QUERY:
7466 			case NOTIFICATIONS:
7467 			case CHECKPOINT:
7468 			case SEQUENCE:
7469 			case ABORT_AFTER_WAIT:
7470 			case ALLOW_PAGE_LOCKS:
7471 			case ALLOW_ROW_LOCKS:
7472 			case ALL_SPARSE_COLUMNS:
7473 			case BUCKET_COUNT:
7474 			case COLUMNSTORE_ARCHIVE:
7475 			case COLUMN_ENCRYPTION_KEY:
7476 			case COLUMN_SET:
7477 			case COMPRESSION_DELAY:
7478 			case DATABASE_DEAULT:
7479 			case DATA_COMPRESSION:
7480 			case DATA_CONSISTENCY_CHECK:
7481 			case ENCRYPTION_TYPE:
7482 			case SYSTEM_TIME:
7483 			case SYSTEM_VERSIONING:
7484 			case TEXTIMAGE_ON:
7485 			case WAIT_AT_LOW_PRIORITY:
7486 			case STATISTICS_INCREMENTAL:
7487 			case STATISTICS_NORECOMPUTE:
7488 			case ROUND_ROBIN:
7489 			case SCHEMA_AND_DATA:
7490 			case SCHEMA_ONLY:
7491 			case SORT_IN_TEMPDB:
7492 			case IGNORE_DUP_KEY:
7493 			case IMPLICIT_TRANSACTIONS:
7494 			case MAX_DURATION:
7495 			case MEMORY_OPTIMIZED:
7496 			case MIGRATION_STATE:
7497 			case PAD_INDEX:
7498 			case REMOTE_DATA_ARCHIVE:
7499 			case FILESTREAM_ON:
7500 			case FILETABLE_COLLATE_FILENAME:
7501 			case FILETABLE_DIRECTORY:
7502 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
7503 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
7504 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
7505 			case FILTER_PREDICATE:
7506 			case HISTORY_RETENTION_PERIOD:
7507 			case HISTORY_TABLE:
7508 			case LOCK_ESCALATION:
7509 			case DROP_EXISTING:
7510 			case ROW_NUMBER:
7511 			case FIRST:
7512 			case DATETIME2:
7513 			case OUTPUT:
7514 			case INSERTED:
7515 			case DELETED:
7516 			case FILENAME:
7517 			case SIZE:
7518 			case MAXSIZE:
7519 			case FILEGROWTH:
7520 			case UNLIMITED:
7521 			case KB:
7522 			case MB:
7523 			case GB:
7524 			case TB:
7525 			case CONTAINS:
7526 			case MEMORY_OPTIMIZED_DATA:
7527 			case FILEGROUP:
7528 			case NON_TRANSACTED_ACCESS:
7529 			case DB_CHAINING:
7530 			case TRUSTWORTHY:
7531 			case FORWARD_ONLY:
7532 			case KEYSET:
7533 			case FAST_FORWARD:
7534 			case SCROLL_LOCKS:
7535 			case OPTIMISTIC:
7536 			case TYPE_WARNING:
7537 			case SCHEMABINDING:
7538 			case CALLER:
7539 			case INPUT:
7540 			case OWNER:
7541 			case SNAPSHOT:
7542 			case REPEATABLE:
7543 			case SERIALIZABLE:
7544 			case NATIVE_COMPILATION:
7545 			case VIEW_METADATA:
7546 			case INSTEAD:
7547 			case APPEND:
7548 			case INCREMENT:
7549 			case CACHE:
7550 			case MINVALUE:
7551 			case MAXVALUE:
7552 			case RESTART:
7553 			case LOB_COMPACTION:
7554 			case COMPRESS_ALL_ROW_GROUPS:
7555 			case REORGANIZE:
7556 			case RESUME:
7557 			case PAUSE:
7558 			case ABORT:
7559 			case ACCELERATED_DATABASE_RECOVERY:
7560 			case PERSISTENT_VERSION_STORE_FILEGROUP:
7561 			case IMMEDIATE:
7562 			case NO_WAIT:
7563 			case TARGET_RECOVERY_TIME:
7564 			case SECONDS:
7565 			case HONOR_BROKER_PRIORITY:
7566 			case ERROR_BROKER_CONVERSATIONS:
7567 			case NEW_BROKER:
7568 			case DISABLE_BROKER:
7569 			case ENABLE_BROKER:
7570 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
7571 			case READ_COMMITTED_SNAPSHOT:
7572 			case ALLOW_SNAPSHOT_ISOLATION:
7573 			case RECURSIVE_TRIGGERS:
7574 			case QUOTED_IDENTIFIER:
7575 			case NUMERIC_ROUNDABORT:
7576 			case CONCAT_NULL_YIELDS_NULL:
7577 			case COMPATIBILITY_LEVEL:
7578 			case ARITHABORT:
7579 			case ANSI_WARNINGS:
7580 			case ANSI_PADDING:
7581 			case ANSI_NULLS:
7582 			case ANSI_NULL_DEFAULT:
7583 			case PAGE_VERIFY:
7584 			case CHECKSUM:
7585 			case TORN_PAGE_DETECTION:
7586 			case BULK_LOGGED:
7587 			case RECOVERY:
7588 			case TOTAL_EXECUTION_CPU_TIME_MS:
7589 			case TOTAL_COMPILE_CPU_TIME_MS:
7590 			case STALE_CAPTURE_POLICY_THRESHOLD:
7591 			case EXECUTION_COUNT:
7592 			case QUERY_CAPTURE_POLICY:
7593 			case WAIT_STATS_CAPTURE_MODE:
7594 			case MAX_PLANS_PER_QUERY:
7595 			case QUERY_CAPTURE_MODE:
7596 			case SIZE_BASED_CLEANUP_MODE:
7597 			case INTERVAL_LENGTH_MINUTES:
7598 			case MAX_STORAGE_SIZE_MB:
7599 			case DATA_FLUSH_INTERVAL_SECONDS:
7600 			case CLEANUP_POLICY:
7601 			case CUSTOM:
7602 			case STALE_QUERY_THRESHOLD_DAYS:
7603 			case OPERATION_MODE:
7604 			case QUERY_STORE:
7605 			case CURSOR_DEFAULT:
7606 			case GLOBAL:
7607 			case CURSOR_CLOSE_ON_COMMIT:
7608 			case HOURS:
7609 			case CHANGE_RETENTION:
7610 			case AUTO_CLEANUP:
7611 			case CHANGE_TRACKING:
7612 			case AUTOMATIC_TUNING:
7613 			case FORCE_LAST_GOOD_PLAN:
7614 			case AUTO_UPDATE_STATISTICS_ASYNC:
7615 			case AUTO_UPDATE_STATISTICS:
7616 			case AUTO_SHRINK:
7617 			case AUTO_CREATE_STATISTICS:
7618 			case INCREMENTAL:
7619 			case AUTO_CLOSE:
7620 			case DATA_RETENTION:
7621 			case TEMPORAL_HISTORY_RETENTION:
7622 			case EDITION:
7623 			case MIXED_PAGE_ALLOCATION:
7624 			case DISABLED:
7625 			case ALLOWED:
7626 			case HADR:
7627 			case MULTI_USER:
7628 			case RESTRICTED_USER:
7629 			case SINGLE_USER:
7630 			case OFFLINE:
7631 			case EMERGENCY:
7632 			case SUSPEND:
7633 			case DATE_CORRELATION_OPTIMIZATION:
7634 			case ELASTIC_POOL:
7635 			case SERVICE_OBJECTIVE:
7636 			case DATABASE_NAME:
7637 			case ALLOW_CONNECTIONS:
7638 			case GEO:
7639 			case NAMED:
7640 			case DATEFIRST:
7641 			case BACKUP_STORAGE_REDUNDANCY:
7642 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
7643 			case SECONDARY:
7644 			case FAILOVER:
7645 			case DEFAULT_FULLTEXT_LANGUAGE:
7646 			case DEFAULT_LANGUAGE:
7647 			case INLINE:
7648 			case NESTED_TRIGGERS:
7649 			case TRANSFORM_NOISE_WORDS:
7650 			case TWO_DIGIT_YEAR_CUTOFF:
7651 			case PERSISTENT_LOG_BUFFER:
7652 			case DIRECTORY_NAME:
7653 			case DATEFORMAT:
7654 			case DELAYED_DURABILITY:
7655 			case AUTHORIZATION:
7656 			case TRANSFER:
7657 			case PROVIDER:
7658 			case SID:
7659 			case SEARCH:
7660 			case MEMBER:
7661 			case JSON:
7662 			case OPENJSON:
7663 			case OPENROWSET:
7664 			case TRY_CAST:
7665 			case TRY_CONVERT:
7666 			case IDENTIFIER_:
7667 			case DELIMITED_IDENTIFIER_:
7668 			case STRING_:
7669 			case NUMBER_:
7670 			case HEX_DIGIT_:
7671 			case BIT_NUM_:
7672 			case NCHAR_TEXT:
7673 				{
7674 				setState(1586);
7675 				expr(0);
7676 				setState(1591);
7677 				_errHandler.sync(this);
7678 				_la = _input.LA(1);
7679 				while (_la==COMMA_) {
7680 					{
7681 					{
7682 					setState(1587);
7683 					match(COMMA_);
7684 					setState(1588);
7685 					expr(0);
7686 					}
7687 					}
7688 					setState(1593);
7689 					_errHandler.sync(this);
7690 					_la = _input.LA(1);
7691 				}
7692 				}
7693 				break;
7694 			case ASTERISK_:
7695 				{
7696 				setState(1594);
7697 				match(ASTERISK_);
7698 				}
7699 				break;
7700 			case RP_:
7701 				break;
7702 			default:
7703 				break;
7704 			}
7705 			setState(1597);
7706 			match(RP_);
7707 			}
7708 		}
7709 		catch (RecognitionException re) {
7710 			_localctx.exception = re;
7711 			_errHandler.reportError(this, re);
7712 			_errHandler.recover(this, re);
7713 		}
7714 		finally {
7715 			exitRule();
7716 		}
7717 		return _localctx;
7718 	}
7719 
7720 	public static class AggregationFunctionNameContext extends ParserRuleContext {
7721 		public TerminalNode MAX() { return getToken(SQLServerStatementParser.MAX, 0); }
7722 		public TerminalNode MIN() { return getToken(SQLServerStatementParser.MIN, 0); }
7723 		public TerminalNode SUM() { return getToken(SQLServerStatementParser.SUM, 0); }
7724 		public TerminalNode COUNT() { return getToken(SQLServerStatementParser.COUNT, 0); }
7725 		public TerminalNode AVG() { return getToken(SQLServerStatementParser.AVG, 0); }
7726 		public AggregationFunctionNameContext(ParserRuleContext parent, int invokingState) {
7727 			super(parent, invokingState);
7728 		}
7729 		@Override public int getRuleIndex() { return RULE_aggregationFunctionName; }
7730 		@Override
7731 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7732 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAggregationFunctionName(this);
7733 			else return visitor.visitChildren(this);
7734 		}
7735 	}
7736 
7737 	public final AggregationFunctionNameContext aggregationFunctionName() throws RecognitionException {
7738 		AggregationFunctionNameContext _localctx = new AggregationFunctionNameContext(_ctx, getState());
7739 		enterRule(_localctx, 122, RULE_aggregationFunctionName);
7740 		int _la;
7741 		try {
7742 			enterOuterAlt(_localctx, 1);
7743 			{
7744 			setState(1599);
7745 			_la = _input.LA(1);
7746 			if ( !(((((_la - 149)) & ~0x3f) == 0 && ((1L << (_la - 149)) & ((1L << (MAX - 149)) | (1L << (MIN - 149)) | (1L << (SUM - 149)) | (1L << (COUNT - 149)) | (1L << (AVG - 149)))) != 0)) ) {
7747 			_errHandler.recoverInline(this);
7748 			}
7749 			else {
7750 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
7751 				_errHandler.reportMatch(this);
7752 				consume();
7753 			}
7754 			}
7755 		}
7756 		catch (RecognitionException re) {
7757 			_localctx.exception = re;
7758 			_errHandler.reportError(this, re);
7759 			_errHandler.recover(this, re);
7760 		}
7761 		finally {
7762 			exitRule();
7763 		}
7764 		return _localctx;
7765 	}
7766 
7767 	public static class DistinctContext extends ParserRuleContext {
7768 		public TerminalNode DISTINCT() { return getToken(SQLServerStatementParser.DISTINCT, 0); }
7769 		public DistinctContext(ParserRuleContext parent, int invokingState) {
7770 			super(parent, invokingState);
7771 		}
7772 		@Override public int getRuleIndex() { return RULE_distinct; }
7773 		@Override
7774 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7775 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDistinct(this);
7776 			else return visitor.visitChildren(this);
7777 		}
7778 	}
7779 
7780 	public final DistinctContext distinct() throws RecognitionException {
7781 		DistinctContext _localctx = new DistinctContext(_ctx, getState());
7782 		enterRule(_localctx, 124, RULE_distinct);
7783 		try {
7784 			enterOuterAlt(_localctx, 1);
7785 			{
7786 			setState(1601);
7787 			match(DISTINCT);
7788 			}
7789 		}
7790 		catch (RecognitionException re) {
7791 			_localctx.exception = re;
7792 			_errHandler.reportError(this, re);
7793 			_errHandler.recover(this, re);
7794 		}
7795 		finally {
7796 			exitRule();
7797 		}
7798 		return _localctx;
7799 	}
7800 
7801 	public static class SpecialFunctionContext extends ParserRuleContext {
7802 		public ConversionFunctionContext conversionFunction() {
7803 			return getRuleContext(ConversionFunctionContext.class,0);
7804 		}
7805 		public CharFunctionContext charFunction() {
7806 			return getRuleContext(CharFunctionContext.class,0);
7807 		}
7808 		public OpenJsonFunctionContext openJsonFunction() {
7809 			return getRuleContext(OpenJsonFunctionContext.class,0);
7810 		}
7811 		public JsonFunctionContext jsonFunction() {
7812 			return getRuleContext(JsonFunctionContext.class,0);
7813 		}
7814 		public OpenRowSetFunctionContext openRowSetFunction() {
7815 			return getRuleContext(OpenRowSetFunctionContext.class,0);
7816 		}
7817 		public WindowFunctionContext windowFunction() {
7818 			return getRuleContext(WindowFunctionContext.class,0);
7819 		}
7820 		public ApproxFunctionContext approxFunction() {
7821 			return getRuleContext(ApproxFunctionContext.class,0);
7822 		}
7823 		public OpenDatasourceFunctionContext openDatasourceFunction() {
7824 			return getRuleContext(OpenDatasourceFunctionContext.class,0);
7825 		}
7826 		public SpecialFunctionContext(ParserRuleContext parent, int invokingState) {
7827 			super(parent, invokingState);
7828 		}
7829 		@Override public int getRuleIndex() { return RULE_specialFunction; }
7830 		@Override
7831 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7832 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSpecialFunction(this);
7833 			else return visitor.visitChildren(this);
7834 		}
7835 	}
7836 
7837 	public final SpecialFunctionContext specialFunction() throws RecognitionException {
7838 		SpecialFunctionContext _localctx = new SpecialFunctionContext(_ctx, getState());
7839 		enterRule(_localctx, 126, RULE_specialFunction);
7840 		try {
7841 			setState(1611);
7842 			_errHandler.sync(this);
7843 			switch (_input.LA(1)) {
7844 			case CAST:
7845 			case CONVERT:
7846 			case TRY_CAST:
7847 			case TRY_CONVERT:
7848 				enterOuterAlt(_localctx, 1);
7849 				{
7850 				setState(1603);
7851 				conversionFunction();
7852 				}
7853 				break;
7854 			case CHAR:
7855 				enterOuterAlt(_localctx, 2);
7856 				{
7857 				setState(1604);
7858 				charFunction();
7859 				}
7860 				break;
7861 			case OPENJSON:
7862 				enterOuterAlt(_localctx, 3);
7863 				{
7864 				setState(1605);
7865 				openJsonFunction();
7866 				}
7867 				break;
7868 			case JSON_OBJECT:
7869 			case JSON_ARRAY:
7870 				enterOuterAlt(_localctx, 4);
7871 				{
7872 				setState(1606);
7873 				jsonFunction();
7874 				}
7875 				break;
7876 			case OPENROWSET:
7877 				enterOuterAlt(_localctx, 5);
7878 				{
7879 				setState(1607);
7880 				openRowSetFunction();
7881 				}
7882 				break;
7883 			case FIRST_VALUE:
7884 			case LAST_VALUE:
7885 				enterOuterAlt(_localctx, 6);
7886 				{
7887 				setState(1608);
7888 				windowFunction();
7889 				}
7890 				break;
7891 			case APPROX_PERCENTILE_CONT:
7892 			case APPROX_PERCENTILE_DISC:
7893 				enterOuterAlt(_localctx, 7);
7894 				{
7895 				setState(1609);
7896 				approxFunction();
7897 				}
7898 				break;
7899 			case OPENDATASOURCE:
7900 				enterOuterAlt(_localctx, 8);
7901 				{
7902 				setState(1610);
7903 				openDatasourceFunction();
7904 				}
7905 				break;
7906 			default:
7907 				throw new NoViableAltException(this);
7908 			}
7909 		}
7910 		catch (RecognitionException re) {
7911 			_localctx.exception = re;
7912 			_errHandler.reportError(this, re);
7913 			_errHandler.recover(this, re);
7914 		}
7915 		finally {
7916 			exitRule();
7917 		}
7918 		return _localctx;
7919 	}
7920 
7921 	public static class OpenDatasourceFunctionContext extends ParserRuleContext {
7922 		public TerminalNode OPENDATASOURCE() { return getToken(SQLServerStatementParser.OPENDATASOURCE, 0); }
7923 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
7924 		public List<ExprContext> expr() {
7925 			return getRuleContexts(ExprContext.class);
7926 		}
7927 		public ExprContext expr(int i) {
7928 			return getRuleContext(ExprContext.class,i);
7929 		}
7930 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
7931 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
7932 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
7933 		public TableNameContext tableName() {
7934 			return getRuleContext(TableNameContext.class,0);
7935 		}
7936 		public OpenDatasourceFunctionContext(ParserRuleContext parent, int invokingState) {
7937 			super(parent, invokingState);
7938 		}
7939 		@Override public int getRuleIndex() { return RULE_openDatasourceFunction; }
7940 		@Override
7941 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
7942 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOpenDatasourceFunction(this);
7943 			else return visitor.visitChildren(this);
7944 		}
7945 	}
7946 
7947 	public final OpenDatasourceFunctionContext openDatasourceFunction() throws RecognitionException {
7948 		OpenDatasourceFunctionContext _localctx = new OpenDatasourceFunctionContext(_ctx, getState());
7949 		enterRule(_localctx, 128, RULE_openDatasourceFunction);
7950 		try {
7951 			enterOuterAlt(_localctx, 1);
7952 			{
7953 			{
7954 			setState(1613);
7955 			match(OPENDATASOURCE);
7956 			setState(1614);
7957 			match(LP_);
7958 			setState(1615);
7959 			expr(0);
7960 			setState(1616);
7961 			match(COMMA_);
7962 			setState(1617);
7963 			expr(0);
7964 			setState(1618);
7965 			match(RP_);
7966 			}
7967 			setState(1622);
7968 			_errHandler.sync(this);
7969 			switch ( getInterpreter().adaptivePredict(_input,72,_ctx) ) {
7970 			case 1:
7971 				{
7972 				setState(1620);
7973 				match(DOT_);
7974 				setState(1621);
7975 				tableName();
7976 				}
7977 				break;
7978 			}
7979 			}
7980 		}
7981 		catch (RecognitionException re) {
7982 			_localctx.exception = re;
7983 			_errHandler.reportError(this, re);
7984 			_errHandler.recover(this, re);
7985 		}
7986 		finally {
7987 			exitRule();
7988 		}
7989 		return _localctx;
7990 	}
7991 
7992 	public static class ApproxFunctionContext extends ParserRuleContext {
7993 		public Token funcName;
7994 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
7995 		public TerminalNode LP_(int i) {
7996 			return getToken(SQLServerStatementParser.LP_, i);
7997 		}
7998 		public List<ExprContext> expr() {
7999 			return getRuleContexts(ExprContext.class);
8000 		}
8001 		public ExprContext expr(int i) {
8002 			return getRuleContext(ExprContext.class,i);
8003 		}
8004 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
8005 		public TerminalNode RP_(int i) {
8006 			return getToken(SQLServerStatementParser.RP_, i);
8007 		}
8008 		public TerminalNode WITHIN() { return getToken(SQLServerStatementParser.WITHIN, 0); }
8009 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
8010 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
8011 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
8012 		public TerminalNode APPROX_PERCENTILE_CONT() { return getToken(SQLServerStatementParser.APPROX_PERCENTILE_CONT, 0); }
8013 		public TerminalNode APPROX_PERCENTILE_DISC() { return getToken(SQLServerStatementParser.APPROX_PERCENTILE_DISC, 0); }
8014 		public TerminalNode ASC() { return getToken(SQLServerStatementParser.ASC, 0); }
8015 		public TerminalNode DESC() { return getToken(SQLServerStatementParser.DESC, 0); }
8016 		public ApproxFunctionContext(ParserRuleContext parent, int invokingState) {
8017 			super(parent, invokingState);
8018 		}
8019 		@Override public int getRuleIndex() { return RULE_approxFunction; }
8020 		@Override
8021 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8022 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitApproxFunction(this);
8023 			else return visitor.visitChildren(this);
8024 		}
8025 	}
8026 
8027 	public final ApproxFunctionContext approxFunction() throws RecognitionException {
8028 		ApproxFunctionContext _localctx = new ApproxFunctionContext(_ctx, getState());
8029 		enterRule(_localctx, 130, RULE_approxFunction);
8030 		int _la;
8031 		try {
8032 			enterOuterAlt(_localctx, 1);
8033 			{
8034 			setState(1624);
8035 			((ApproxFunctionContext)_localctx).funcName = _input.LT(1);
8036 			_la = _input.LA(1);
8037 			if ( !(_la==APPROX_PERCENTILE_CONT || _la==APPROX_PERCENTILE_DISC) ) {
8038 				((ApproxFunctionContext)_localctx).funcName = (Token)_errHandler.recoverInline(this);
8039 			}
8040 			else {
8041 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
8042 				_errHandler.reportMatch(this);
8043 				consume();
8044 			}
8045 			setState(1625);
8046 			match(LP_);
8047 			setState(1626);
8048 			expr(0);
8049 			setState(1627);
8050 			match(RP_);
8051 			setState(1628);
8052 			match(WITHIN);
8053 			setState(1629);
8054 			match(GROUP);
8055 			setState(1630);
8056 			match(LP_);
8057 			setState(1631);
8058 			match(ORDER);
8059 			setState(1632);
8060 			match(BY);
8061 			setState(1633);
8062 			expr(0);
8063 			setState(1635);
8064 			_errHandler.sync(this);
8065 			_la = _input.LA(1);
8066 			if (_la==ASC || _la==DESC) {
8067 				{
8068 				setState(1634);
8069 				_la = _input.LA(1);
8070 				if ( !(_la==ASC || _la==DESC) ) {
8071 				_errHandler.recoverInline(this);
8072 				}
8073 				else {
8074 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
8075 					_errHandler.reportMatch(this);
8076 					consume();
8077 				}
8078 				}
8079 			}
8080 
8081 			setState(1637);
8082 			match(RP_);
8083 			}
8084 		}
8085 		catch (RecognitionException re) {
8086 			_localctx.exception = re;
8087 			_errHandler.reportError(this, re);
8088 			_errHandler.recover(this, re);
8089 		}
8090 		finally {
8091 			exitRule();
8092 		}
8093 		return _localctx;
8094 	}
8095 
8096 	public static class ConversionFunctionContext extends ParserRuleContext {
8097 		public CastFunctionContext castFunction() {
8098 			return getRuleContext(CastFunctionContext.class,0);
8099 		}
8100 		public ConvertFunctionContext convertFunction() {
8101 			return getRuleContext(ConvertFunctionContext.class,0);
8102 		}
8103 		public ConversionFunctionContext(ParserRuleContext parent, int invokingState) {
8104 			super(parent, invokingState);
8105 		}
8106 		@Override public int getRuleIndex() { return RULE_conversionFunction; }
8107 		@Override
8108 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8109 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConversionFunction(this);
8110 			else return visitor.visitChildren(this);
8111 		}
8112 	}
8113 
8114 	public final ConversionFunctionContext conversionFunction() throws RecognitionException {
8115 		ConversionFunctionContext _localctx = new ConversionFunctionContext(_ctx, getState());
8116 		enterRule(_localctx, 132, RULE_conversionFunction);
8117 		try {
8118 			setState(1641);
8119 			_errHandler.sync(this);
8120 			switch (_input.LA(1)) {
8121 			case CAST:
8122 			case TRY_CAST:
8123 				enterOuterAlt(_localctx, 1);
8124 				{
8125 				setState(1639);
8126 				castFunction();
8127 				}
8128 				break;
8129 			case CONVERT:
8130 			case TRY_CONVERT:
8131 				enterOuterAlt(_localctx, 2);
8132 				{
8133 				setState(1640);
8134 				convertFunction();
8135 				}
8136 				break;
8137 			default:
8138 				throw new NoViableAltException(this);
8139 			}
8140 		}
8141 		catch (RecognitionException re) {
8142 			_localctx.exception = re;
8143 			_errHandler.reportError(this, re);
8144 			_errHandler.recover(this, re);
8145 		}
8146 		finally {
8147 			exitRule();
8148 		}
8149 		return _localctx;
8150 	}
8151 
8152 	public static class CastFunctionContext extends ParserRuleContext {
8153 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8154 		public ExprContext expr() {
8155 			return getRuleContext(ExprContext.class,0);
8156 		}
8157 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
8158 		public DataTypeContext dataType() {
8159 			return getRuleContext(DataTypeContext.class,0);
8160 		}
8161 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8162 		public TerminalNode CAST() { return getToken(SQLServerStatementParser.CAST, 0); }
8163 		public TerminalNode TRY_CAST() { return getToken(SQLServerStatementParser.TRY_CAST, 0); }
8164 		public CastFunctionContext(ParserRuleContext parent, int invokingState) {
8165 			super(parent, invokingState);
8166 		}
8167 		@Override public int getRuleIndex() { return RULE_castFunction; }
8168 		@Override
8169 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8170 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCastFunction(this);
8171 			else return visitor.visitChildren(this);
8172 		}
8173 	}
8174 
8175 	public final CastFunctionContext castFunction() throws RecognitionException {
8176 		CastFunctionContext _localctx = new CastFunctionContext(_ctx, getState());
8177 		enterRule(_localctx, 134, RULE_castFunction);
8178 		int _la;
8179 		try {
8180 			enterOuterAlt(_localctx, 1);
8181 			{
8182 			setState(1643);
8183 			_la = _input.LA(1);
8184 			if ( !(_la==CAST || _la==TRY_CAST) ) {
8185 			_errHandler.recoverInline(this);
8186 			}
8187 			else {
8188 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
8189 				_errHandler.reportMatch(this);
8190 				consume();
8191 			}
8192 			setState(1644);
8193 			match(LP_);
8194 			setState(1645);
8195 			expr(0);
8196 			setState(1646);
8197 			match(AS);
8198 			setState(1647);
8199 			dataType();
8200 			setState(1648);
8201 			match(RP_);
8202 			}
8203 		}
8204 		catch (RecognitionException re) {
8205 			_localctx.exception = re;
8206 			_errHandler.reportError(this, re);
8207 			_errHandler.recover(this, re);
8208 		}
8209 		finally {
8210 			exitRule();
8211 		}
8212 		return _localctx;
8213 	}
8214 
8215 	public static class ConvertFunctionContext extends ParserRuleContext {
8216 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8217 		public DataTypeContext dataType() {
8218 			return getRuleContext(DataTypeContext.class,0);
8219 		}
8220 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8221 		public TerminalNode COMMA_(int i) {
8222 			return getToken(SQLServerStatementParser.COMMA_, i);
8223 		}
8224 		public ExprContext expr() {
8225 			return getRuleContext(ExprContext.class,0);
8226 		}
8227 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8228 		public TerminalNode CONVERT() { return getToken(SQLServerStatementParser.CONVERT, 0); }
8229 		public TerminalNode TRY_CONVERT() { return getToken(SQLServerStatementParser.TRY_CONVERT, 0); }
8230 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
8231 		public ConvertFunctionContext(ParserRuleContext parent, int invokingState) {
8232 			super(parent, invokingState);
8233 		}
8234 		@Override public int getRuleIndex() { return RULE_convertFunction; }
8235 		@Override
8236 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8237 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConvertFunction(this);
8238 			else return visitor.visitChildren(this);
8239 		}
8240 	}
8241 
8242 	public final ConvertFunctionContext convertFunction() throws RecognitionException {
8243 		ConvertFunctionContext _localctx = new ConvertFunctionContext(_ctx, getState());
8244 		enterRule(_localctx, 136, RULE_convertFunction);
8245 		int _la;
8246 		try {
8247 			enterOuterAlt(_localctx, 1);
8248 			{
8249 			setState(1650);
8250 			_la = _input.LA(1);
8251 			if ( !(_la==CONVERT || _la==TRY_CONVERT) ) {
8252 			_errHandler.recoverInline(this);
8253 			}
8254 			else {
8255 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
8256 				_errHandler.reportMatch(this);
8257 				consume();
8258 			}
8259 			setState(1651);
8260 			match(LP_);
8261 			setState(1652);
8262 			dataType();
8263 			setState(1653);
8264 			match(COMMA_);
8265 			setState(1654);
8266 			expr(0);
8267 			setState(1657);
8268 			_errHandler.sync(this);
8269 			_la = _input.LA(1);
8270 			if (_la==COMMA_) {
8271 				{
8272 				setState(1655);
8273 				match(COMMA_);
8274 				setState(1656);
8275 				match(NUMBER_);
8276 				}
8277 			}
8278 
8279 			setState(1659);
8280 			match(RP_);
8281 			}
8282 		}
8283 		catch (RecognitionException re) {
8284 			_localctx.exception = re;
8285 			_errHandler.reportError(this, re);
8286 			_errHandler.recover(this, re);
8287 		}
8288 		finally {
8289 			exitRule();
8290 		}
8291 		return _localctx;
8292 	}
8293 
8294 	public static class JsonFunctionContext extends ParserRuleContext {
8295 		public JsonObjectFunctionContext jsonObjectFunction() {
8296 			return getRuleContext(JsonObjectFunctionContext.class,0);
8297 		}
8298 		public JsonArrayFunctionContext jsonArrayFunction() {
8299 			return getRuleContext(JsonArrayFunctionContext.class,0);
8300 		}
8301 		public JsonFunctionContext(ParserRuleContext parent, int invokingState) {
8302 			super(parent, invokingState);
8303 		}
8304 		@Override public int getRuleIndex() { return RULE_jsonFunction; }
8305 		@Override
8306 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8307 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJsonFunction(this);
8308 			else return visitor.visitChildren(this);
8309 		}
8310 	}
8311 
8312 	public final JsonFunctionContext jsonFunction() throws RecognitionException {
8313 		JsonFunctionContext _localctx = new JsonFunctionContext(_ctx, getState());
8314 		enterRule(_localctx, 138, RULE_jsonFunction);
8315 		try {
8316 			setState(1663);
8317 			_errHandler.sync(this);
8318 			switch (_input.LA(1)) {
8319 			case JSON_OBJECT:
8320 				enterOuterAlt(_localctx, 1);
8321 				{
8322 				setState(1661);
8323 				jsonObjectFunction();
8324 				}
8325 				break;
8326 			case JSON_ARRAY:
8327 				enterOuterAlt(_localctx, 2);
8328 				{
8329 				setState(1662);
8330 				jsonArrayFunction();
8331 				}
8332 				break;
8333 			default:
8334 				throw new NoViableAltException(this);
8335 			}
8336 		}
8337 		catch (RecognitionException re) {
8338 			_localctx.exception = re;
8339 			_errHandler.reportError(this, re);
8340 			_errHandler.recover(this, re);
8341 		}
8342 		finally {
8343 			exitRule();
8344 		}
8345 		return _localctx;
8346 	}
8347 
8348 	public static class JsonObjectFunctionContext extends ParserRuleContext {
8349 		public TerminalNode JSON_OBJECT() { return getToken(SQLServerStatementParser.JSON_OBJECT, 0); }
8350 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8351 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8352 		public List<JsonKeyValueContext> jsonKeyValue() {
8353 			return getRuleContexts(JsonKeyValueContext.class);
8354 		}
8355 		public JsonKeyValueContext jsonKeyValue(int i) {
8356 			return getRuleContext(JsonKeyValueContext.class,i);
8357 		}
8358 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8359 		public TerminalNode COMMA_(int i) {
8360 			return getToken(SQLServerStatementParser.COMMA_, i);
8361 		}
8362 		public JsonNullClauseContext jsonNullClause() {
8363 			return getRuleContext(JsonNullClauseContext.class,0);
8364 		}
8365 		public JsonObjectFunctionContext(ParserRuleContext parent, int invokingState) {
8366 			super(parent, invokingState);
8367 		}
8368 		@Override public int getRuleIndex() { return RULE_jsonObjectFunction; }
8369 		@Override
8370 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8371 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJsonObjectFunction(this);
8372 			else return visitor.visitChildren(this);
8373 		}
8374 	}
8375 
8376 	public final JsonObjectFunctionContext jsonObjectFunction() throws RecognitionException {
8377 		JsonObjectFunctionContext _localctx = new JsonObjectFunctionContext(_ctx, getState());
8378 		enterRule(_localctx, 140, RULE_jsonObjectFunction);
8379 		int _la;
8380 		try {
8381 			enterOuterAlt(_localctx, 1);
8382 			{
8383 			setState(1665);
8384 			match(JSON_OBJECT);
8385 			setState(1666);
8386 			match(LP_);
8387 			setState(1678);
8388 			_errHandler.sync(this);
8389 			_la = _input.LA(1);
8390 			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << LP_) | (1L << LBE_) | (1L << LBT_) | (1L << QUESTION_) | (1L << DOLLAR_) | (1L << TRUNCATE) | (1L << SCHEMA) | (1L << COLUMNS))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (PRECISION - 69)) | (1L << (FUNCTION - 69)) | (1L << (TRIGGER - 69)) | (1L << (CASE - 69)) | (1L << (CAST - 69)) | (1L << (TRIM - 69)) | (1L << (SUBSTRING - 69)) | (1L << (RIGHT - 69)) | (1L << (OFF - 69)) | (1L << (IF - 69)) | (1L << (NOT - 69)) | (1L << (NULL - 69)) | (1L << (TRUE - 69)) | (1L << (FALSE - 69)) | (1L << (EXISTS - 69)) | (1L << (GROUP - 69)) | (1L << (LIMIT - 69)) | (1L << (OFFSET - 69)) | (1L << (SAVEPOINT - 69)) | (1L << (BOOLEAN - 69)) | (1L << (CHAR - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (ARRAY - 133)) | (1L << (INTERVAL - 133)) | (1L << (DATE - 133)) | (1L << (TIME - 133)) | (1L << (TIMESTAMP - 133)) | (1L << (LOCALTIME - 133)) | (1L << (LOCALTIMESTAMP - 133)) | (1L << (YEAR - 133)) | (1L << (QUARTER - 133)) | (1L << (MONTH - 133)) | (1L << (WEEK - 133)) | (1L << (DAY - 133)) | (1L << (SECOND - 133)) | (1L << (MICROSECOND - 133)) | (1L << (MAX - 133)) | (1L << (MIN - 133)) | (1L << (SUM - 133)) | (1L << (COUNT - 133)) | (1L << (AVG - 133)) | (1L << (CURRENT - 133)) | (1L << (ENABLE - 133)) | (1L << (DISABLE - 133)) | (1L << (INSTANCE - 133)) | (1L << (DO - 133)) | (1L << (DEFINER - 133)) | (1L << (SQL - 133)) | (1L << (CASCADED - 133)) | (1L << (LOCAL - 133)) | (1L << (NEXT - 133)) | (1L << (NAME - 133)) | (1L << (INTEGER - 133)) | (1L << (TYPE - 133)) | (1L << (TEXT - 133)) | (1L << (VIEWS - 133)))) != 0) || ((((_la - 203)) & ~0x3f) == 0 && ((1L << (_la - 203)) & ((1L << (READ_ONLY - 203)) | (1L << (DATABASE - 203)) | (1L << (RETURNS - 203)) | (1L << (DATEPART - 203)) | (1L << (PASSWORD - 203)) | (1L << (JSON_OBJECT - 203)) | (1L << (JSON_ARRAY - 203)) | (1L << (FIRST_VALUE - 203)) | (1L << (LAST_VALUE - 203)) | (1L << (APPROX_PERCENTILE_CONT - 203)) | (1L << (APPROX_PERCENTILE_DISC - 203)) | (1L << (OPENDATASOURCE - 203)) | (1L << (BINARY - 203)) | (1L << (HIDDEN_ - 203)) | (1L << (MOD - 203)) | (1L << (PARTITION - 203)) | (1L << (PARTITIONS - 203)) | (1L << (TOP - 203)) | (1L << (ROW - 203)) | (1L << (ROWS - 203)) | (1L << (XOR - 203)) | (1L << (ALWAYS - 203)) | (1L << (USER - 203)) | (1L << (ROLE - 203)) | (1L << (START - 203)) | (1L << (ALGORITHM - 203)))) != 0) || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & ((1L << (AUTO - 267)) | (1L << (BLOCKERS - 267)) | (1L << (CLUSTERED - 267)) | (1L << (NONCLUSTERED - 267)) | (1L << (COLUMNSTORE - 267)) | (1L << (CONTENT - 267)) | (1L << (CONVERT - 267)) | (1L << (YEARS - 267)) | (1L << (MONTHS - 267)) | (1L << (WEEKS - 267)) | (1L << (DAYS - 267)) | (1L << (MINUTES - 267)) | (1L << (DENY - 267)) | (1L << (DETERMINISTIC - 267)) | (1L << (DISTRIBUTION - 267)) | (1L << (DOCUMENT - 267)) | (1L << (DURABILITY - 267)) | (1L << (ENCRYPTED - 267)) | (1L << (FILESTREAM - 267)) | (1L << (FILETABLE - 267)) | (1L << (FILLFACTOR - 267)) | (1L << (FOLLOWING - 267)) | (1L << (HASH - 267)) | (1L << (HEAP - 267)) | (1L << (INBOUND - 267)) | (1L << (OUTBOUND - 267)) | (1L << (UNBOUNDED - 267)) | (1L << (INFINITE - 267)) | (1L << (LOGIN - 267)) | (1L << (MASKED - 267)) | (1L << (MAXDOP - 267)) | (1L << (MOVE - 267)) | (1L << (NOCHECK - 267)) | (1L << (OBJECT - 267)) | (1L << (ONLINE - 267)) | (1L << (OVER - 267)) | (1L << (PAGE - 267)) | (1L << (PAUSED - 267)) | (1L << (PERIOD - 267)) | (1L << (PERSISTED - 267)) | (1L << (PRECEDING - 267)) | (1L << (RANDOMIZED - 267)) | (1L << (RANGE - 267)) | (1L << (REBUILD - 267)) | (1L << (REPLICATE - 267)) | (1L << (REPLICATION - 267)) | (1L << (RESUMABLE - 267)) | (1L << (ROWGUIDCOL - 267)) | (1L << (SAVE - 267)) | (1L << (SELF - 267)) | (1L << (SPARSE - 267)) | (1L << (SWITCH - 267)) | (1L << (TRAN - 267)) | (1L << (TRANCOUNT - 267)))) != 0) || ((((_la - 332)) & ~0x3f) == 0 && ((1L << (_la - 332)) & ((1L << (CONTROL - 332)) | (1L << (CONCAT - 332)) | (1L << (TAKE - 332)) | (1L << (OWNERSHIP - 332)) | (1L << (DEFINITION - 332)) | (1L << (APPLICATION - 332)) | (1L << (ASSEMBLY - 332)) | (1L << (SYMMETRIC - 332)) | (1L << (ASYMMETRIC - 332)) | (1L << (SERVER - 332)) | (1L << (RECEIVE - 332)) | (1L << (CHANGE - 332)) | (1L << (TRACE - 332)) | (1L << (TRACKING - 332)) | (1L << (RESOURCES - 332)) | (1L << (SETTINGS - 332)) | (1L << (STATE - 332)) | (1L << (AVAILABILITY - 332)) | (1L << (CREDENTIAL - 332)) | (1L << (ENDPOINT - 332)) | (1L << (EVENT - 332)) | (1L << (NOTIFICATION - 332)) | (1L << (LINKED - 332)) | (1L << (AUDIT - 332)) | (1L << (DDL - 332)) | (1L << (XML - 332)) | (1L << (IMPERSONATE - 332)) | (1L << (SECURABLES - 332)) | (1L << (AUTHENTICATE - 332)) | (1L << (EXTERNAL - 332)) | (1L << (ACCESS - 332)) | (1L << (ADMINISTER - 332)) | (1L << (BULK - 332)) | (1L << (OPERATIONS - 332)) | (1L << (UNSAFE - 332)) | (1L << (SHUTDOWN - 332)) | (1L << (SCOPED - 332)) | (1L << (CONFIGURATION - 332)) | (1L << (DATASPACE - 332)) | (1L << (SERVICE - 332)) | (1L << (CERTIFICATE - 332)) | (1L << (CONTRACT - 332)) | (1L << (ENCRYPTION - 332)) | (1L << (MASTER - 332)) | (1L << (DATA - 332)) | (1L << (SOURCE - 332)) | (1L << (FILE - 332)) | (1L << (FORMAT - 332)) | (1L << (LIBRARY - 332)) | (1L << (FULLTEXT - 332)) | (1L << (MASK - 332)) | (1L << (UNMASK - 332)) | (1L << (MESSAGE - 332)) | (1L << (REMOTE - 332)) | (1L << (BINDING - 332)) | (1L << (ROUTE - 332)) | (1L << (SECURITY - 332)) | (1L << (POLICY - 332)) | (1L << (AGGREGATE - 332)) | (1L << (QUEUE - 332)) | (1L << (RULE - 332)) | (1L << (SYNONYM - 332)) | (1L << (COLLECTION - 332)) | (1L << (SCRIPT - 332)))) != 0) || ((((_la - 396)) & ~0x3f) == 0 && ((1L << (_la - 396)) & ((1L << (KILL - 396)) | (1L << (BACKUP - 396)) | (1L << (LOG - 396)) | (1L << (SHOWPLAN - 396)) | (1L << (SUBSCRIBE - 396)) | (1L << (QUERY - 396)) | (1L << (NOTIFICATIONS - 396)) | (1L << (CHECKPOINT - 396)) | (1L << (SEQUENCE - 396)) | (1L << (ABORT_AFTER_WAIT - 396)) | (1L << (ALLOW_PAGE_LOCKS - 396)) | (1L << (ALLOW_ROW_LOCKS - 396)) | (1L << (ALL_SPARSE_COLUMNS - 396)) | (1L << (BUCKET_COUNT - 396)) | (1L << (COLUMNSTORE_ARCHIVE - 396)) | (1L << (COLUMN_ENCRYPTION_KEY - 396)) | (1L << (COLUMN_SET - 396)) | (1L << (COMPRESSION_DELAY - 396)) | (1L << (DATABASE_DEAULT - 396)) | (1L << (DATA_COMPRESSION - 396)) | (1L << (DATA_CONSISTENCY_CHECK - 396)) | (1L << (ENCRYPTION_TYPE - 396)) | (1L << (SYSTEM_TIME - 396)) | (1L << (SYSTEM_VERSIONING - 396)) | (1L << (TEXTIMAGE_ON - 396)) | (1L << (WAIT_AT_LOW_PRIORITY - 396)) | (1L << (STATISTICS_INCREMENTAL - 396)) | (1L << (STATISTICS_NORECOMPUTE - 396)) | (1L << (ROUND_ROBIN - 396)) | (1L << (SCHEMA_AND_DATA - 396)) | (1L << (SCHEMA_ONLY - 396)) | (1L << (SORT_IN_TEMPDB - 396)) | (1L << (IGNORE_DUP_KEY - 396)) | (1L << (IMPLICIT_TRANSACTIONS - 396)) | (1L << (MAX_DURATION - 396)) | (1L << (MEMORY_OPTIMIZED - 396)) | (1L << (MIGRATION_STATE - 396)) | (1L << (PAD_INDEX - 396)) | (1L << (REMOTE_DATA_ARCHIVE - 396)) | (1L << (FILESTREAM_ON - 396)) | (1L << (FILETABLE_COLLATE_FILENAME - 396)) | (1L << (FILETABLE_DIRECTORY - 396)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 396)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 396)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 396)) | (1L << (FILTER_PREDICATE - 396)) | (1L << (HISTORY_RETENTION_PERIOD - 396)) | (1L << (HISTORY_TABLE - 396)) | (1L << (LOCK_ESCALATION - 396)) | (1L << (DROP_EXISTING - 396)) | (1L << (ROW_NUMBER - 396)) | (1L << (FIRST - 396)) | (1L << (DATETIME2 - 396)))) != 0) || ((((_la - 466)) & ~0x3f) == 0 && ((1L << (_la - 466)) & ((1L << (OUTPUT - 466)) | (1L << (INSERTED - 466)) | (1L << (DELETED - 466)) | (1L << (FILENAME - 466)) | (1L << (SIZE - 466)) | (1L << (MAXSIZE - 466)) | (1L << (FILEGROWTH - 466)) | (1L << (UNLIMITED - 466)) | (1L << (KB - 466)) | (1L << (MB - 466)) | (1L << (GB - 466)) | (1L << (TB - 466)) | (1L << (CONTAINS - 466)) | (1L << (MEMORY_OPTIMIZED_DATA - 466)) | (1L << (FILEGROUP - 466)) | (1L << (NON_TRANSACTED_ACCESS - 466)) | (1L << (DB_CHAINING - 466)) | (1L << (TRUSTWORTHY - 466)) | (1L << (FORWARD_ONLY - 466)) | (1L << (KEYSET - 466)) | (1L << (FAST_FORWARD - 466)) | (1L << (SCROLL_LOCKS - 466)) | (1L << (OPTIMISTIC - 466)) | (1L << (TYPE_WARNING - 466)) | (1L << (SCHEMABINDING - 466)))) != 0) || ((((_la - 530)) & ~0x3f) == 0 && ((1L << (_la - 530)) & ((1L << (CALLER - 530)) | (1L << (INPUT - 530)) | (1L << (OWNER - 530)) | (1L << (SNAPSHOT - 530)) | (1L << (REPEATABLE - 530)) | (1L << (SERIALIZABLE - 530)) | (1L << (NATIVE_COMPILATION - 530)) | (1L << (VIEW_METADATA - 530)) | (1L << (INSTEAD - 530)) | (1L << (APPEND - 530)) | (1L << (INCREMENT - 530)) | (1L << (CACHE - 530)) | (1L << (MINVALUE - 530)) | (1L << (MAXVALUE - 530)) | (1L << (RESTART - 530)) | (1L << (LOB_COMPACTION - 530)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 530)) | (1L << (REORGANIZE - 530)) | (1L << (RESUME - 530)) | (1L << (PAUSE - 530)) | (1L << (ABORT - 530)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 530)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 530)) | (1L << (IMMEDIATE - 530)) | (1L << (NO_WAIT - 530)) | (1L << (TARGET_RECOVERY_TIME - 530)) | (1L << (SECONDS - 530)) | (1L << (HONOR_BROKER_PRIORITY - 530)) | (1L << (ERROR_BROKER_CONVERSATIONS - 530)) | (1L << (NEW_BROKER - 530)) | (1L << (DISABLE_BROKER - 530)) | (1L << (ENABLE_BROKER - 530)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 530)) | (1L << (READ_COMMITTED_SNAPSHOT - 530)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 530)) | (1L << (RECURSIVE_TRIGGERS - 530)) | (1L << (QUOTED_IDENTIFIER - 530)) | (1L << (NUMERIC_ROUNDABORT - 530)) | (1L << (CONCAT_NULL_YIELDS_NULL - 530)) | (1L << (COMPATIBILITY_LEVEL - 530)) | (1L << (ARITHABORT - 530)) | (1L << (ANSI_WARNINGS - 530)) | (1L << (ANSI_PADDING - 530)) | (1L << (ANSI_NULLS - 530)))) != 0) || ((((_la - 594)) & ~0x3f) == 0 && ((1L << (_la - 594)) & ((1L << (ANSI_NULL_DEFAULT - 594)) | (1L << (PAGE_VERIFY - 594)) | (1L << (CHECKSUM - 594)) | (1L << (TORN_PAGE_DETECTION - 594)) | (1L << (BULK_LOGGED - 594)) | (1L << (RECOVERY - 594)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 594)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 594)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 594)) | (1L << (EXECUTION_COUNT - 594)) | (1L << (QUERY_CAPTURE_POLICY - 594)) | (1L << (WAIT_STATS_CAPTURE_MODE - 594)) | (1L << (MAX_PLANS_PER_QUERY - 594)) | (1L << (QUERY_CAPTURE_MODE - 594)) | (1L << (SIZE_BASED_CLEANUP_MODE - 594)) | (1L << (INTERVAL_LENGTH_MINUTES - 594)) | (1L << (MAX_STORAGE_SIZE_MB - 594)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 594)) | (1L << (CLEANUP_POLICY - 594)) | (1L << (CUSTOM - 594)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 594)) | (1L << (OPERATION_MODE - 594)) | (1L << (QUERY_STORE - 594)) | (1L << (CURSOR_DEFAULT - 594)) | (1L << (GLOBAL - 594)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 594)) | (1L << (HOURS - 594)) | (1L << (CHANGE_RETENTION - 594)) | (1L << (AUTO_CLEANUP - 594)) | (1L << (CHANGE_TRACKING - 594)) | (1L << (AUTOMATIC_TUNING - 594)) | (1L << (FORCE_LAST_GOOD_PLAN - 594)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 594)) | (1L << (AUTO_UPDATE_STATISTICS - 594)) | (1L << (AUTO_SHRINK - 594)) | (1L << (AUTO_CREATE_STATISTICS - 594)) | (1L << (INCREMENTAL - 594)) | (1L << (AUTO_CLOSE - 594)) | (1L << (DATA_RETENTION - 594)) | (1L << (TEMPORAL_HISTORY_RETENTION - 594)) | (1L << (EDITION - 594)) | (1L << (MIXED_PAGE_ALLOCATION - 594)) | (1L << (DISABLED - 594)) | (1L << (ALLOWED - 594)) | (1L << (HADR - 594)) | (1L << (MULTI_USER - 594)) | (1L << (RESTRICTED_USER - 594)) | (1L << (SINGLE_USER - 594)) | (1L << (OFFLINE - 594)) | (1L << (EMERGENCY - 594)) | (1L << (SUSPEND - 594)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 594)) | (1L << (ELASTIC_POOL - 594)) | (1L << (SERVICE_OBJECTIVE - 594)) | (1L << (DATABASE_NAME - 594)) | (1L << (ALLOW_CONNECTIONS - 594)) | (1L << (GEO - 594)) | (1L << (NAMED - 594)) | (1L << (DATEFIRST - 594)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 594)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 594)) | (1L << (SECONDARY - 594)) | (1L << (FAILOVER - 594)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 594)))) != 0) || ((((_la - 658)) & ~0x3f) == 0 && ((1L << (_la - 658)) & ((1L << (DEFAULT_LANGUAGE - 658)) | (1L << (INLINE - 658)) | (1L << (NESTED_TRIGGERS - 658)) | (1L << (TRANSFORM_NOISE_WORDS - 658)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 658)) | (1L << (PERSISTENT_LOG_BUFFER - 658)) | (1L << (DIRECTORY_NAME - 658)) | (1L << (DATEFORMAT - 658)) | (1L << (DELAYED_DURABILITY - 658)) | (1L << (AUTHORIZATION - 658)) | (1L << (TRANSFER - 658)) | (1L << (PROVIDER - 658)) | (1L << (SID - 658)) | (1L << (SEARCH - 658)) | (1L << (MEMBER - 658)) | (1L << (JSON - 658)) | (1L << (OPENJSON - 658)) | (1L << (OPENROWSET - 658)) | (1L << (TRY_CAST - 658)) | (1L << (TRY_CONVERT - 658)))) != 0) || ((((_la - 722)) & ~0x3f) == 0 && ((1L << (_la - 722)) & ((1L << (IDENTIFIER_ - 722)) | (1L << (DELIMITED_IDENTIFIER_ - 722)) | (1L << (STRING_ - 722)) | (1L << (NUMBER_ - 722)) | (1L << (HEX_DIGIT_ - 722)) | (1L << (BIT_NUM_ - 722)) | (1L << (NCHAR_TEXT - 722)))) != 0)) {
8391 				{
8392 				setState(1667);
8393 				jsonKeyValue();
8394 				setState(1672);
8395 				_errHandler.sync(this);
8396 				_la = _input.LA(1);
8397 				while (_la==COMMA_) {
8398 					{
8399 					{
8400 					setState(1668);
8401 					match(COMMA_);
8402 					setState(1669);
8403 					jsonKeyValue();
8404 					}
8405 					}
8406 					setState(1674);
8407 					_errHandler.sync(this);
8408 					_la = _input.LA(1);
8409 				}
8410 				setState(1676);
8411 				_errHandler.sync(this);
8412 				_la = _input.LA(1);
8413 				if (_la==NULL || _la==ABSENT) {
8414 					{
8415 					setState(1675);
8416 					jsonNullClause();
8417 					}
8418 				}
8419 
8420 				}
8421 			}
8422 
8423 			setState(1680);
8424 			match(RP_);
8425 			}
8426 		}
8427 		catch (RecognitionException re) {
8428 			_localctx.exception = re;
8429 			_errHandler.reportError(this, re);
8430 			_errHandler.recover(this, re);
8431 		}
8432 		finally {
8433 			exitRule();
8434 		}
8435 		return _localctx;
8436 	}
8437 
8438 	public static class JsonArrayFunctionContext extends ParserRuleContext {
8439 		public TerminalNode JSON_ARRAY() { return getToken(SQLServerStatementParser.JSON_ARRAY, 0); }
8440 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8441 		public List<ExprContext> expr() {
8442 			return getRuleContexts(ExprContext.class);
8443 		}
8444 		public ExprContext expr(int i) {
8445 			return getRuleContext(ExprContext.class,i);
8446 		}
8447 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8448 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8449 		public TerminalNode COMMA_(int i) {
8450 			return getToken(SQLServerStatementParser.COMMA_, i);
8451 		}
8452 		public JsonNullClauseContext jsonNullClause() {
8453 			return getRuleContext(JsonNullClauseContext.class,0);
8454 		}
8455 		public JsonArrayFunctionContext(ParserRuleContext parent, int invokingState) {
8456 			super(parent, invokingState);
8457 		}
8458 		@Override public int getRuleIndex() { return RULE_jsonArrayFunction; }
8459 		@Override
8460 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8461 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJsonArrayFunction(this);
8462 			else return visitor.visitChildren(this);
8463 		}
8464 	}
8465 
8466 	public final JsonArrayFunctionContext jsonArrayFunction() throws RecognitionException {
8467 		JsonArrayFunctionContext _localctx = new JsonArrayFunctionContext(_ctx, getState());
8468 		enterRule(_localctx, 142, RULE_jsonArrayFunction);
8469 		int _la;
8470 		try {
8471 			enterOuterAlt(_localctx, 1);
8472 			{
8473 			setState(1682);
8474 			match(JSON_ARRAY);
8475 			setState(1683);
8476 			match(LP_);
8477 			setState(1684);
8478 			expr(0);
8479 			setState(1689);
8480 			_errHandler.sync(this);
8481 			_la = _input.LA(1);
8482 			while (_la==COMMA_) {
8483 				{
8484 				{
8485 				setState(1685);
8486 				match(COMMA_);
8487 				setState(1686);
8488 				expr(0);
8489 				}
8490 				}
8491 				setState(1691);
8492 				_errHandler.sync(this);
8493 				_la = _input.LA(1);
8494 			}
8495 			setState(1693);
8496 			_errHandler.sync(this);
8497 			_la = _input.LA(1);
8498 			if (_la==NULL || _la==ABSENT) {
8499 				{
8500 				setState(1692);
8501 				jsonNullClause();
8502 				}
8503 			}
8504 
8505 			setState(1695);
8506 			match(RP_);
8507 			}
8508 		}
8509 		catch (RecognitionException re) {
8510 			_localctx.exception = re;
8511 			_errHandler.reportError(this, re);
8512 			_errHandler.recover(this, re);
8513 		}
8514 		finally {
8515 			exitRule();
8516 		}
8517 		return _localctx;
8518 	}
8519 
8520 	public static class JsonKeyValueContext extends ParserRuleContext {
8521 		public List<ExprContext> expr() {
8522 			return getRuleContexts(ExprContext.class);
8523 		}
8524 		public ExprContext expr(int i) {
8525 			return getRuleContext(ExprContext.class,i);
8526 		}
8527 		public TerminalNode COLON_() { return getToken(SQLServerStatementParser.COLON_, 0); }
8528 		public JsonKeyValueContext(ParserRuleContext parent, int invokingState) {
8529 			super(parent, invokingState);
8530 		}
8531 		@Override public int getRuleIndex() { return RULE_jsonKeyValue; }
8532 		@Override
8533 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8534 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJsonKeyValue(this);
8535 			else return visitor.visitChildren(this);
8536 		}
8537 	}
8538 
8539 	public final JsonKeyValueContext jsonKeyValue() throws RecognitionException {
8540 		JsonKeyValueContext _localctx = new JsonKeyValueContext(_ctx, getState());
8541 		enterRule(_localctx, 144, RULE_jsonKeyValue);
8542 		try {
8543 			enterOuterAlt(_localctx, 1);
8544 			{
8545 			setState(1697);
8546 			expr(0);
8547 			setState(1698);
8548 			match(COLON_);
8549 			setState(1699);
8550 			expr(0);
8551 			}
8552 		}
8553 		catch (RecognitionException re) {
8554 			_localctx.exception = re;
8555 			_errHandler.reportError(this, re);
8556 			_errHandler.recover(this, re);
8557 		}
8558 		finally {
8559 			exitRule();
8560 		}
8561 		return _localctx;
8562 	}
8563 
8564 	public static class JsonNullClauseContext extends ParserRuleContext {
8565 		public List<TerminalNode> NULL() { return getTokens(SQLServerStatementParser.NULL); }
8566 		public TerminalNode NULL(int i) {
8567 			return getToken(SQLServerStatementParser.NULL, i);
8568 		}
8569 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
8570 		public TerminalNode ABSENT() { return getToken(SQLServerStatementParser.ABSENT, 0); }
8571 		public JsonNullClauseContext(ParserRuleContext parent, int invokingState) {
8572 			super(parent, invokingState);
8573 		}
8574 		@Override public int getRuleIndex() { return RULE_jsonNullClause; }
8575 		@Override
8576 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8577 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJsonNullClause(this);
8578 			else return visitor.visitChildren(this);
8579 		}
8580 	}
8581 
8582 	public final JsonNullClauseContext jsonNullClause() throws RecognitionException {
8583 		JsonNullClauseContext _localctx = new JsonNullClauseContext(_ctx, getState());
8584 		enterRule(_localctx, 146, RULE_jsonNullClause);
8585 		try {
8586 			setState(1707);
8587 			_errHandler.sync(this);
8588 			switch (_input.LA(1)) {
8589 			case NULL:
8590 				enterOuterAlt(_localctx, 1);
8591 				{
8592 				setState(1701);
8593 				match(NULL);
8594 				setState(1702);
8595 				match(ON);
8596 				setState(1703);
8597 				match(NULL);
8598 				}
8599 				break;
8600 			case ABSENT:
8601 				enterOuterAlt(_localctx, 2);
8602 				{
8603 				setState(1704);
8604 				match(ABSENT);
8605 				setState(1705);
8606 				match(ON);
8607 				setState(1706);
8608 				match(NULL);
8609 				}
8610 				break;
8611 			default:
8612 				throw new NoViableAltException(this);
8613 			}
8614 		}
8615 		catch (RecognitionException re) {
8616 			_localctx.exception = re;
8617 			_errHandler.reportError(this, re);
8618 			_errHandler.recover(this, re);
8619 		}
8620 		finally {
8621 			exitRule();
8622 		}
8623 		return _localctx;
8624 	}
8625 
8626 	public static class CharFunctionContext extends ParserRuleContext {
8627 		public TerminalNode CHAR() { return getToken(SQLServerStatementParser.CHAR, 0); }
8628 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8629 		public List<ExprContext> expr() {
8630 			return getRuleContexts(ExprContext.class);
8631 		}
8632 		public ExprContext expr(int i) {
8633 			return getRuleContext(ExprContext.class,i);
8634 		}
8635 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8636 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8637 		public TerminalNode COMMA_(int i) {
8638 			return getToken(SQLServerStatementParser.COMMA_, i);
8639 		}
8640 		public TerminalNode USING() { return getToken(SQLServerStatementParser.USING, 0); }
8641 		public IgnoredIdentifierContext ignoredIdentifier() {
8642 			return getRuleContext(IgnoredIdentifierContext.class,0);
8643 		}
8644 		public CharFunctionContext(ParserRuleContext parent, int invokingState) {
8645 			super(parent, invokingState);
8646 		}
8647 		@Override public int getRuleIndex() { return RULE_charFunction; }
8648 		@Override
8649 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8650 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCharFunction(this);
8651 			else return visitor.visitChildren(this);
8652 		}
8653 	}
8654 
8655 	public final CharFunctionContext charFunction() throws RecognitionException {
8656 		CharFunctionContext _localctx = new CharFunctionContext(_ctx, getState());
8657 		enterRule(_localctx, 148, RULE_charFunction);
8658 		int _la;
8659 		try {
8660 			enterOuterAlt(_localctx, 1);
8661 			{
8662 			setState(1709);
8663 			match(CHAR);
8664 			setState(1710);
8665 			match(LP_);
8666 			setState(1711);
8667 			expr(0);
8668 			setState(1716);
8669 			_errHandler.sync(this);
8670 			_la = _input.LA(1);
8671 			while (_la==COMMA_) {
8672 				{
8673 				{
8674 				setState(1712);
8675 				match(COMMA_);
8676 				setState(1713);
8677 				expr(0);
8678 				}
8679 				}
8680 				setState(1718);
8681 				_errHandler.sync(this);
8682 				_la = _input.LA(1);
8683 			}
8684 			setState(1721);
8685 			_errHandler.sync(this);
8686 			_la = _input.LA(1);
8687 			if (_la==USING) {
8688 				{
8689 				setState(1719);
8690 				match(USING);
8691 				setState(1720);
8692 				ignoredIdentifier();
8693 				}
8694 			}
8695 
8696 			setState(1723);
8697 			match(RP_);
8698 			}
8699 		}
8700 		catch (RecognitionException re) {
8701 			_localctx.exception = re;
8702 			_errHandler.reportError(this, re);
8703 			_errHandler.recover(this, re);
8704 		}
8705 		finally {
8706 			exitRule();
8707 		}
8708 		return _localctx;
8709 	}
8710 
8711 	public static class OpenJsonFunctionContext extends ParserRuleContext {
8712 		public TerminalNode OPENJSON() { return getToken(SQLServerStatementParser.OPENJSON, 0); }
8713 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8714 		public List<ExprContext> expr() {
8715 			return getRuleContexts(ExprContext.class);
8716 		}
8717 		public ExprContext expr(int i) {
8718 			return getRuleContext(ExprContext.class,i);
8719 		}
8720 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8721 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
8722 		public OpenJsonWithclauseContext openJsonWithclause() {
8723 			return getRuleContext(OpenJsonWithclauseContext.class,0);
8724 		}
8725 		public OpenJsonFunctionContext(ParserRuleContext parent, int invokingState) {
8726 			super(parent, invokingState);
8727 		}
8728 		@Override public int getRuleIndex() { return RULE_openJsonFunction; }
8729 		@Override
8730 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8731 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOpenJsonFunction(this);
8732 			else return visitor.visitChildren(this);
8733 		}
8734 	}
8735 
8736 	public final OpenJsonFunctionContext openJsonFunction() throws RecognitionException {
8737 		OpenJsonFunctionContext _localctx = new OpenJsonFunctionContext(_ctx, getState());
8738 		enterRule(_localctx, 150, RULE_openJsonFunction);
8739 		int _la;
8740 		try {
8741 			enterOuterAlt(_localctx, 1);
8742 			{
8743 			setState(1725);
8744 			match(OPENJSON);
8745 			setState(1726);
8746 			match(LP_);
8747 			setState(1727);
8748 			expr(0);
8749 			setState(1730);
8750 			_errHandler.sync(this);
8751 			_la = _input.LA(1);
8752 			if (_la==COMMA_) {
8753 				{
8754 				setState(1728);
8755 				match(COMMA_);
8756 				setState(1729);
8757 				expr(0);
8758 				}
8759 			}
8760 
8761 			setState(1732);
8762 			match(RP_);
8763 			setState(1734);
8764 			_errHandler.sync(this);
8765 			switch ( getInterpreter().adaptivePredict(_input,86,_ctx) ) {
8766 			case 1:
8767 				{
8768 				setState(1733);
8769 				openJsonWithclause();
8770 				}
8771 				break;
8772 			}
8773 			}
8774 		}
8775 		catch (RecognitionException re) {
8776 			_localctx.exception = re;
8777 			_errHandler.reportError(this, re);
8778 			_errHandler.recover(this, re);
8779 		}
8780 		finally {
8781 			exitRule();
8782 		}
8783 		return _localctx;
8784 	}
8785 
8786 	public static class OpenJsonWithclauseContext extends ParserRuleContext {
8787 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
8788 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8789 		public List<JsonColumnDefinitionContext> jsonColumnDefinition() {
8790 			return getRuleContexts(JsonColumnDefinitionContext.class);
8791 		}
8792 		public JsonColumnDefinitionContext jsonColumnDefinition(int i) {
8793 			return getRuleContext(JsonColumnDefinitionContext.class,i);
8794 		}
8795 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8796 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8797 		public TerminalNode COMMA_(int i) {
8798 			return getToken(SQLServerStatementParser.COMMA_, i);
8799 		}
8800 		public OpenJsonWithclauseContext(ParserRuleContext parent, int invokingState) {
8801 			super(parent, invokingState);
8802 		}
8803 		@Override public int getRuleIndex() { return RULE_openJsonWithclause; }
8804 		@Override
8805 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8806 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOpenJsonWithclause(this);
8807 			else return visitor.visitChildren(this);
8808 		}
8809 	}
8810 
8811 	public final OpenJsonWithclauseContext openJsonWithclause() throws RecognitionException {
8812 		OpenJsonWithclauseContext _localctx = new OpenJsonWithclauseContext(_ctx, getState());
8813 		enterRule(_localctx, 152, RULE_openJsonWithclause);
8814 		int _la;
8815 		try {
8816 			enterOuterAlt(_localctx, 1);
8817 			{
8818 			setState(1736);
8819 			match(WITH);
8820 			setState(1737);
8821 			match(LP_);
8822 			setState(1738);
8823 			jsonColumnDefinition();
8824 			setState(1743);
8825 			_errHandler.sync(this);
8826 			_la = _input.LA(1);
8827 			while (_la==COMMA_) {
8828 				{
8829 				{
8830 				setState(1739);
8831 				match(COMMA_);
8832 				setState(1740);
8833 				jsonColumnDefinition();
8834 				}
8835 				}
8836 				setState(1745);
8837 				_errHandler.sync(this);
8838 				_la = _input.LA(1);
8839 			}
8840 			setState(1746);
8841 			match(RP_);
8842 			}
8843 		}
8844 		catch (RecognitionException re) {
8845 			_localctx.exception = re;
8846 			_errHandler.reportError(this, re);
8847 			_errHandler.recover(this, re);
8848 		}
8849 		finally {
8850 			exitRule();
8851 		}
8852 		return _localctx;
8853 	}
8854 
8855 	public static class JsonColumnDefinitionContext extends ParserRuleContext {
8856 		public ColumnNameContext columnName() {
8857 			return getRuleContext(ColumnNameContext.class,0);
8858 		}
8859 		public DataTypeContext dataType() {
8860 			return getRuleContext(DataTypeContext.class,0);
8861 		}
8862 		public ExprContext expr() {
8863 			return getRuleContext(ExprContext.class,0);
8864 		}
8865 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
8866 		public TerminalNode JSON() { return getToken(SQLServerStatementParser.JSON, 0); }
8867 		public JsonColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
8868 			super(parent, invokingState);
8869 		}
8870 		@Override public int getRuleIndex() { return RULE_jsonColumnDefinition; }
8871 		@Override
8872 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8873 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJsonColumnDefinition(this);
8874 			else return visitor.visitChildren(this);
8875 		}
8876 	}
8877 
8878 	public final JsonColumnDefinitionContext jsonColumnDefinition() throws RecognitionException {
8879 		JsonColumnDefinitionContext _localctx = new JsonColumnDefinitionContext(_ctx, getState());
8880 		enterRule(_localctx, 154, RULE_jsonColumnDefinition);
8881 		int _la;
8882 		try {
8883 			enterOuterAlt(_localctx, 1);
8884 			{
8885 			setState(1748);
8886 			columnName();
8887 			setState(1749);
8888 			dataType();
8889 			setState(1751);
8890 			_errHandler.sync(this);
8891 			_la = _input.LA(1);
8892 			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << LP_) | (1L << LBE_) | (1L << LBT_) | (1L << QUESTION_) | (1L << DOLLAR_) | (1L << TRUNCATE) | (1L << SCHEMA) | (1L << COLUMNS))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (PRECISION - 69)) | (1L << (FUNCTION - 69)) | (1L << (TRIGGER - 69)) | (1L << (CASE - 69)) | (1L << (CAST - 69)) | (1L << (TRIM - 69)) | (1L << (SUBSTRING - 69)) | (1L << (RIGHT - 69)) | (1L << (OFF - 69)) | (1L << (IF - 69)) | (1L << (NOT - 69)) | (1L << (NULL - 69)) | (1L << (TRUE - 69)) | (1L << (FALSE - 69)) | (1L << (EXISTS - 69)) | (1L << (GROUP - 69)) | (1L << (LIMIT - 69)) | (1L << (OFFSET - 69)) | (1L << (SAVEPOINT - 69)) | (1L << (BOOLEAN - 69)) | (1L << (CHAR - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (ARRAY - 133)) | (1L << (INTERVAL - 133)) | (1L << (DATE - 133)) | (1L << (TIME - 133)) | (1L << (TIMESTAMP - 133)) | (1L << (LOCALTIME - 133)) | (1L << (LOCALTIMESTAMP - 133)) | (1L << (YEAR - 133)) | (1L << (QUARTER - 133)) | (1L << (MONTH - 133)) | (1L << (WEEK - 133)) | (1L << (DAY - 133)) | (1L << (SECOND - 133)) | (1L << (MICROSECOND - 133)) | (1L << (MAX - 133)) | (1L << (MIN - 133)) | (1L << (SUM - 133)) | (1L << (COUNT - 133)) | (1L << (AVG - 133)) | (1L << (CURRENT - 133)) | (1L << (ENABLE - 133)) | (1L << (DISABLE - 133)) | (1L << (INSTANCE - 133)) | (1L << (DO - 133)) | (1L << (DEFINER - 133)) | (1L << (SQL - 133)) | (1L << (CASCADED - 133)) | (1L << (LOCAL - 133)) | (1L << (NEXT - 133)) | (1L << (NAME - 133)) | (1L << (INTEGER - 133)) | (1L << (TYPE - 133)) | (1L << (TEXT - 133)) | (1L << (VIEWS - 133)))) != 0) || ((((_la - 203)) & ~0x3f) == 0 && ((1L << (_la - 203)) & ((1L << (READ_ONLY - 203)) | (1L << (DATABASE - 203)) | (1L << (RETURNS - 203)) | (1L << (DATEPART - 203)) | (1L << (PASSWORD - 203)) | (1L << (JSON_OBJECT - 203)) | (1L << (JSON_ARRAY - 203)) | (1L << (FIRST_VALUE - 203)) | (1L << (LAST_VALUE - 203)) | (1L << (APPROX_PERCENTILE_CONT - 203)) | (1L << (APPROX_PERCENTILE_DISC - 203)) | (1L << (OPENDATASOURCE - 203)) | (1L << (BINARY - 203)) | (1L << (HIDDEN_ - 203)) | (1L << (MOD - 203)) | (1L << (PARTITION - 203)) | (1L << (PARTITIONS - 203)) | (1L << (TOP - 203)) | (1L << (ROW - 203)) | (1L << (ROWS - 203)) | (1L << (XOR - 203)) | (1L << (ALWAYS - 203)) | (1L << (USER - 203)) | (1L << (ROLE - 203)) | (1L << (START - 203)) | (1L << (ALGORITHM - 203)))) != 0) || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & ((1L << (AUTO - 267)) | (1L << (BLOCKERS - 267)) | (1L << (CLUSTERED - 267)) | (1L << (NONCLUSTERED - 267)) | (1L << (COLUMNSTORE - 267)) | (1L << (CONTENT - 267)) | (1L << (CONVERT - 267)) | (1L << (YEARS - 267)) | (1L << (MONTHS - 267)) | (1L << (WEEKS - 267)) | (1L << (DAYS - 267)) | (1L << (MINUTES - 267)) | (1L << (DENY - 267)) | (1L << (DETERMINISTIC - 267)) | (1L << (DISTRIBUTION - 267)) | (1L << (DOCUMENT - 267)) | (1L << (DURABILITY - 267)) | (1L << (ENCRYPTED - 267)) | (1L << (FILESTREAM - 267)) | (1L << (FILETABLE - 267)) | (1L << (FILLFACTOR - 267)) | (1L << (FOLLOWING - 267)) | (1L << (HASH - 267)) | (1L << (HEAP - 267)) | (1L << (INBOUND - 267)) | (1L << (OUTBOUND - 267)) | (1L << (UNBOUNDED - 267)) | (1L << (INFINITE - 267)) | (1L << (LOGIN - 267)) | (1L << (MASKED - 267)) | (1L << (MAXDOP - 267)) | (1L << (MOVE - 267)) | (1L << (NOCHECK - 267)) | (1L << (OBJECT - 267)) | (1L << (ONLINE - 267)) | (1L << (OVER - 267)) | (1L << (PAGE - 267)) | (1L << (PAUSED - 267)) | (1L << (PERIOD - 267)) | (1L << (PERSISTED - 267)) | (1L << (PRECEDING - 267)) | (1L << (RANDOMIZED - 267)) | (1L << (RANGE - 267)) | (1L << (REBUILD - 267)) | (1L << (REPLICATE - 267)) | (1L << (REPLICATION - 267)) | (1L << (RESUMABLE - 267)) | (1L << (ROWGUIDCOL - 267)) | (1L << (SAVE - 267)) | (1L << (SELF - 267)) | (1L << (SPARSE - 267)) | (1L << (SWITCH - 267)) | (1L << (TRAN - 267)) | (1L << (TRANCOUNT - 267)))) != 0) || ((((_la - 332)) & ~0x3f) == 0 && ((1L << (_la - 332)) & ((1L << (CONTROL - 332)) | (1L << (CONCAT - 332)) | (1L << (TAKE - 332)) | (1L << (OWNERSHIP - 332)) | (1L << (DEFINITION - 332)) | (1L << (APPLICATION - 332)) | (1L << (ASSEMBLY - 332)) | (1L << (SYMMETRIC - 332)) | (1L << (ASYMMETRIC - 332)) | (1L << (SERVER - 332)) | (1L << (RECEIVE - 332)) | (1L << (CHANGE - 332)) | (1L << (TRACE - 332)) | (1L << (TRACKING - 332)) | (1L << (RESOURCES - 332)) | (1L << (SETTINGS - 332)) | (1L << (STATE - 332)) | (1L << (AVAILABILITY - 332)) | (1L << (CREDENTIAL - 332)) | (1L << (ENDPOINT - 332)) | (1L << (EVENT - 332)) | (1L << (NOTIFICATION - 332)) | (1L << (LINKED - 332)) | (1L << (AUDIT - 332)) | (1L << (DDL - 332)) | (1L << (XML - 332)) | (1L << (IMPERSONATE - 332)) | (1L << (SECURABLES - 332)) | (1L << (AUTHENTICATE - 332)) | (1L << (EXTERNAL - 332)) | (1L << (ACCESS - 332)) | (1L << (ADMINISTER - 332)) | (1L << (BULK - 332)) | (1L << (OPERATIONS - 332)) | (1L << (UNSAFE - 332)) | (1L << (SHUTDOWN - 332)) | (1L << (SCOPED - 332)) | (1L << (CONFIGURATION - 332)) | (1L << (DATASPACE - 332)) | (1L << (SERVICE - 332)) | (1L << (CERTIFICATE - 332)) | (1L << (CONTRACT - 332)) | (1L << (ENCRYPTION - 332)) | (1L << (MASTER - 332)) | (1L << (DATA - 332)) | (1L << (SOURCE - 332)) | (1L << (FILE - 332)) | (1L << (FORMAT - 332)) | (1L << (LIBRARY - 332)) | (1L << (FULLTEXT - 332)) | (1L << (MASK - 332)) | (1L << (UNMASK - 332)) | (1L << (MESSAGE - 332)) | (1L << (REMOTE - 332)) | (1L << (BINDING - 332)) | (1L << (ROUTE - 332)) | (1L << (SECURITY - 332)) | (1L << (POLICY - 332)) | (1L << (AGGREGATE - 332)) | (1L << (QUEUE - 332)) | (1L << (RULE - 332)) | (1L << (SYNONYM - 332)) | (1L << (COLLECTION - 332)) | (1L << (SCRIPT - 332)))) != 0) || ((((_la - 396)) & ~0x3f) == 0 && ((1L << (_la - 396)) & ((1L << (KILL - 396)) | (1L << (BACKUP - 396)) | (1L << (LOG - 396)) | (1L << (SHOWPLAN - 396)) | (1L << (SUBSCRIBE - 396)) | (1L << (QUERY - 396)) | (1L << (NOTIFICATIONS - 396)) | (1L << (CHECKPOINT - 396)) | (1L << (SEQUENCE - 396)) | (1L << (ABORT_AFTER_WAIT - 396)) | (1L << (ALLOW_PAGE_LOCKS - 396)) | (1L << (ALLOW_ROW_LOCKS - 396)) | (1L << (ALL_SPARSE_COLUMNS - 396)) | (1L << (BUCKET_COUNT - 396)) | (1L << (COLUMNSTORE_ARCHIVE - 396)) | (1L << (COLUMN_ENCRYPTION_KEY - 396)) | (1L << (COLUMN_SET - 396)) | (1L << (COMPRESSION_DELAY - 396)) | (1L << (DATABASE_DEAULT - 396)) | (1L << (DATA_COMPRESSION - 396)) | (1L << (DATA_CONSISTENCY_CHECK - 396)) | (1L << (ENCRYPTION_TYPE - 396)) | (1L << (SYSTEM_TIME - 396)) | (1L << (SYSTEM_VERSIONING - 396)) | (1L << (TEXTIMAGE_ON - 396)) | (1L << (WAIT_AT_LOW_PRIORITY - 396)) | (1L << (STATISTICS_INCREMENTAL - 396)) | (1L << (STATISTICS_NORECOMPUTE - 396)) | (1L << (ROUND_ROBIN - 396)) | (1L << (SCHEMA_AND_DATA - 396)) | (1L << (SCHEMA_ONLY - 396)) | (1L << (SORT_IN_TEMPDB - 396)) | (1L << (IGNORE_DUP_KEY - 396)) | (1L << (IMPLICIT_TRANSACTIONS - 396)) | (1L << (MAX_DURATION - 396)) | (1L << (MEMORY_OPTIMIZED - 396)) | (1L << (MIGRATION_STATE - 396)) | (1L << (PAD_INDEX - 396)) | (1L << (REMOTE_DATA_ARCHIVE - 396)) | (1L << (FILESTREAM_ON - 396)) | (1L << (FILETABLE_COLLATE_FILENAME - 396)) | (1L << (FILETABLE_DIRECTORY - 396)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 396)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 396)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 396)) | (1L << (FILTER_PREDICATE - 396)) | (1L << (HISTORY_RETENTION_PERIOD - 396)) | (1L << (HISTORY_TABLE - 396)) | (1L << (LOCK_ESCALATION - 396)) | (1L << (DROP_EXISTING - 396)) | (1L << (ROW_NUMBER - 396)) | (1L << (FIRST - 396)) | (1L << (DATETIME2 - 396)))) != 0) || ((((_la - 466)) & ~0x3f) == 0 && ((1L << (_la - 466)) & ((1L << (OUTPUT - 466)) | (1L << (INSERTED - 466)) | (1L << (DELETED - 466)) | (1L << (FILENAME - 466)) | (1L << (SIZE - 466)) | (1L << (MAXSIZE - 466)) | (1L << (FILEGROWTH - 466)) | (1L << (UNLIMITED - 466)) | (1L << (KB - 466)) | (1L << (MB - 466)) | (1L << (GB - 466)) | (1L << (TB - 466)) | (1L << (CONTAINS - 466)) | (1L << (MEMORY_OPTIMIZED_DATA - 466)) | (1L << (FILEGROUP - 466)) | (1L << (NON_TRANSACTED_ACCESS - 466)) | (1L << (DB_CHAINING - 466)) | (1L << (TRUSTWORTHY - 466)) | (1L << (FORWARD_ONLY - 466)) | (1L << (KEYSET - 466)) | (1L << (FAST_FORWARD - 466)) | (1L << (SCROLL_LOCKS - 466)) | (1L << (OPTIMISTIC - 466)) | (1L << (TYPE_WARNING - 466)) | (1L << (SCHEMABINDING - 466)))) != 0) || ((((_la - 530)) & ~0x3f) == 0 && ((1L << (_la - 530)) & ((1L << (CALLER - 530)) | (1L << (INPUT - 530)) | (1L << (OWNER - 530)) | (1L << (SNAPSHOT - 530)) | (1L << (REPEATABLE - 530)) | (1L << (SERIALIZABLE - 530)) | (1L << (NATIVE_COMPILATION - 530)) | (1L << (VIEW_METADATA - 530)) | (1L << (INSTEAD - 530)) | (1L << (APPEND - 530)) | (1L << (INCREMENT - 530)) | (1L << (CACHE - 530)) | (1L << (MINVALUE - 530)) | (1L << (MAXVALUE - 530)) | (1L << (RESTART - 530)) | (1L << (LOB_COMPACTION - 530)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 530)) | (1L << (REORGANIZE - 530)) | (1L << (RESUME - 530)) | (1L << (PAUSE - 530)) | (1L << (ABORT - 530)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 530)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 530)) | (1L << (IMMEDIATE - 530)) | (1L << (NO_WAIT - 530)) | (1L << (TARGET_RECOVERY_TIME - 530)) | (1L << (SECONDS - 530)) | (1L << (HONOR_BROKER_PRIORITY - 530)) | (1L << (ERROR_BROKER_CONVERSATIONS - 530)) | (1L << (NEW_BROKER - 530)) | (1L << (DISABLE_BROKER - 530)) | (1L << (ENABLE_BROKER - 530)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 530)) | (1L << (READ_COMMITTED_SNAPSHOT - 530)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 530)) | (1L << (RECURSIVE_TRIGGERS - 530)) | (1L << (QUOTED_IDENTIFIER - 530)) | (1L << (NUMERIC_ROUNDABORT - 530)) | (1L << (CONCAT_NULL_YIELDS_NULL - 530)) | (1L << (COMPATIBILITY_LEVEL - 530)) | (1L << (ARITHABORT - 530)) | (1L << (ANSI_WARNINGS - 530)) | (1L << (ANSI_PADDING - 530)) | (1L << (ANSI_NULLS - 530)))) != 0) || ((((_la - 594)) & ~0x3f) == 0 && ((1L << (_la - 594)) & ((1L << (ANSI_NULL_DEFAULT - 594)) | (1L << (PAGE_VERIFY - 594)) | (1L << (CHECKSUM - 594)) | (1L << (TORN_PAGE_DETECTION - 594)) | (1L << (BULK_LOGGED - 594)) | (1L << (RECOVERY - 594)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 594)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 594)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 594)) | (1L << (EXECUTION_COUNT - 594)) | (1L << (QUERY_CAPTURE_POLICY - 594)) | (1L << (WAIT_STATS_CAPTURE_MODE - 594)) | (1L << (MAX_PLANS_PER_QUERY - 594)) | (1L << (QUERY_CAPTURE_MODE - 594)) | (1L << (SIZE_BASED_CLEANUP_MODE - 594)) | (1L << (INTERVAL_LENGTH_MINUTES - 594)) | (1L << (MAX_STORAGE_SIZE_MB - 594)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 594)) | (1L << (CLEANUP_POLICY - 594)) | (1L << (CUSTOM - 594)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 594)) | (1L << (OPERATION_MODE - 594)) | (1L << (QUERY_STORE - 594)) | (1L << (CURSOR_DEFAULT - 594)) | (1L << (GLOBAL - 594)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 594)) | (1L << (HOURS - 594)) | (1L << (CHANGE_RETENTION - 594)) | (1L << (AUTO_CLEANUP - 594)) | (1L << (CHANGE_TRACKING - 594)) | (1L << (AUTOMATIC_TUNING - 594)) | (1L << (FORCE_LAST_GOOD_PLAN - 594)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 594)) | (1L << (AUTO_UPDATE_STATISTICS - 594)) | (1L << (AUTO_SHRINK - 594)) | (1L << (AUTO_CREATE_STATISTICS - 594)) | (1L << (INCREMENTAL - 594)) | (1L << (AUTO_CLOSE - 594)) | (1L << (DATA_RETENTION - 594)) | (1L << (TEMPORAL_HISTORY_RETENTION - 594)) | (1L << (EDITION - 594)) | (1L << (MIXED_PAGE_ALLOCATION - 594)) | (1L << (DISABLED - 594)) | (1L << (ALLOWED - 594)) | (1L << (HADR - 594)) | (1L << (MULTI_USER - 594)) | (1L << (RESTRICTED_USER - 594)) | (1L << (SINGLE_USER - 594)) | (1L << (OFFLINE - 594)) | (1L << (EMERGENCY - 594)) | (1L << (SUSPEND - 594)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 594)) | (1L << (ELASTIC_POOL - 594)) | (1L << (SERVICE_OBJECTIVE - 594)) | (1L << (DATABASE_NAME - 594)) | (1L << (ALLOW_CONNECTIONS - 594)) | (1L << (GEO - 594)) | (1L << (NAMED - 594)) | (1L << (DATEFIRST - 594)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 594)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 594)) | (1L << (SECONDARY - 594)) | (1L << (FAILOVER - 594)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 594)))) != 0) || ((((_la - 658)) & ~0x3f) == 0 && ((1L << (_la - 658)) & ((1L << (DEFAULT_LANGUAGE - 658)) | (1L << (INLINE - 658)) | (1L << (NESTED_TRIGGERS - 658)) | (1L << (TRANSFORM_NOISE_WORDS - 658)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 658)) | (1L << (PERSISTENT_LOG_BUFFER - 658)) | (1L << (DIRECTORY_NAME - 658)) | (1L << (DATEFORMAT - 658)) | (1L << (DELAYED_DURABILITY - 658)) | (1L << (AUTHORIZATION - 658)) | (1L << (TRANSFER - 658)) | (1L << (PROVIDER - 658)) | (1L << (SID - 658)) | (1L << (SEARCH - 658)) | (1L << (MEMBER - 658)) | (1L << (JSON - 658)) | (1L << (OPENJSON - 658)) | (1L << (OPENROWSET - 658)) | (1L << (TRY_CAST - 658)) | (1L << (TRY_CONVERT - 658)))) != 0) || ((((_la - 722)) & ~0x3f) == 0 && ((1L << (_la - 722)) & ((1L << (IDENTIFIER_ - 722)) | (1L << (DELIMITED_IDENTIFIER_ - 722)) | (1L << (STRING_ - 722)) | (1L << (NUMBER_ - 722)) | (1L << (HEX_DIGIT_ - 722)) | (1L << (BIT_NUM_ - 722)) | (1L << (NCHAR_TEXT - 722)))) != 0)) {
8893 				{
8894 				setState(1750);
8895 				expr(0);
8896 				}
8897 			}
8898 
8899 			setState(1755);
8900 			_errHandler.sync(this);
8901 			_la = _input.LA(1);
8902 			if (_la==AS) {
8903 				{
8904 				setState(1753);
8905 				match(AS);
8906 				setState(1754);
8907 				match(JSON);
8908 				}
8909 			}
8910 
8911 			}
8912 		}
8913 		catch (RecognitionException re) {
8914 			_localctx.exception = re;
8915 			_errHandler.reportError(this, re);
8916 			_errHandler.recover(this, re);
8917 		}
8918 		finally {
8919 			exitRule();
8920 		}
8921 		return _localctx;
8922 	}
8923 
8924 	public static class OpenRowSetFunctionContext extends ParserRuleContext {
8925 		public TerminalNode OPENROWSET() { return getToken(SQLServerStatementParser.OPENROWSET, 0); }
8926 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
8927 		public List<ExprContext> expr() {
8928 			return getRuleContexts(ExprContext.class);
8929 		}
8930 		public ExprContext expr(int i) {
8931 			return getRuleContext(ExprContext.class,i);
8932 		}
8933 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
8934 		public TerminalNode COMMA_(int i) {
8935 			return getToken(SQLServerStatementParser.COMMA_, i);
8936 		}
8937 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
8938 		public TableNameContext tableName() {
8939 			return getRuleContext(TableNameContext.class,0);
8940 		}
8941 		public List<TerminalNode> SEMI_() { return getTokens(SQLServerStatementParser.SEMI_); }
8942 		public TerminalNode SEMI_(int i) {
8943 			return getToken(SQLServerStatementParser.SEMI_, i);
8944 		}
8945 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
8946 		public OpenRowSetFunctionContext(ParserRuleContext parent, int invokingState) {
8947 			super(parent, invokingState);
8948 		}
8949 		@Override public int getRuleIndex() { return RULE_openRowSetFunction; }
8950 		@Override
8951 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
8952 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOpenRowSetFunction(this);
8953 			else return visitor.visitChildren(this);
8954 		}
8955 	}
8956 
8957 	public final OpenRowSetFunctionContext openRowSetFunction() throws RecognitionException {
8958 		OpenRowSetFunctionContext _localctx = new OpenRowSetFunctionContext(_ctx, getState());
8959 		enterRule(_localctx, 156, RULE_openRowSetFunction);
8960 		int _la;
8961 		try {
8962 			setState(1790);
8963 			_errHandler.sync(this);
8964 			switch ( getInterpreter().adaptivePredict(_input,93,_ctx) ) {
8965 			case 1:
8966 				enterOuterAlt(_localctx, 1);
8967 				{
8968 				setState(1757);
8969 				match(OPENROWSET);
8970 				setState(1758);
8971 				match(LP_);
8972 				setState(1759);
8973 				expr(0);
8974 				setState(1760);
8975 				match(COMMA_);
8976 				setState(1768);
8977 				_errHandler.sync(this);
8978 				switch ( getInterpreter().adaptivePredict(_input,90,_ctx) ) {
8979 				case 1:
8980 					{
8981 					{
8982 					setState(1761);
8983 					expr(0);
8984 					setState(1762);
8985 					match(SEMI_);
8986 					setState(1763);
8987 					expr(0);
8988 					setState(1764);
8989 					match(SEMI_);
8990 					setState(1765);
8991 					expr(0);
8992 					}
8993 					}
8994 					break;
8995 				case 2:
8996 					{
8997 					setState(1767);
8998 					expr(0);
8999 					}
9000 					break;
9001 				}
9002 				setState(1770);
9003 				match(COMMA_);
9004 				setState(1773);
9005 				_errHandler.sync(this);
9006 				switch ( getInterpreter().adaptivePredict(_input,91,_ctx) ) {
9007 				case 1:
9008 					{
9009 					setState(1771);
9010 					tableName();
9011 					}
9012 					break;
9013 				case 2:
9014 					{
9015 					setState(1772);
9016 					expr(0);
9017 					}
9018 					break;
9019 				}
9020 				setState(1775);
9021 				match(RP_);
9022 				}
9023 				break;
9024 			case 2:
9025 				enterOuterAlt(_localctx, 2);
9026 				{
9027 				setState(1777);
9028 				match(OPENROWSET);
9029 				setState(1778);
9030 				match(LP_);
9031 				setState(1779);
9032 				match(BULK);
9033 				setState(1780);
9034 				expr(0);
9035 				setState(1785);
9036 				_errHandler.sync(this);
9037 				_la = _input.LA(1);
9038 				while (_la==COMMA_) {
9039 					{
9040 					{
9041 					setState(1781);
9042 					match(COMMA_);
9043 					setState(1782);
9044 					expr(0);
9045 					}
9046 					}
9047 					setState(1787);
9048 					_errHandler.sync(this);
9049 					_la = _input.LA(1);
9050 				}
9051 				setState(1788);
9052 				match(RP_);
9053 				}
9054 				break;
9055 			}
9056 		}
9057 		catch (RecognitionException re) {
9058 			_localctx.exception = re;
9059 			_errHandler.reportError(this, re);
9060 			_errHandler.recover(this, re);
9061 		}
9062 		finally {
9063 			exitRule();
9064 		}
9065 		return _localctx;
9066 	}
9067 
9068 	public static class RegularFunctionContext extends ParserRuleContext {
9069 		public RegularFunctionNameContext regularFunctionName() {
9070 			return getRuleContext(RegularFunctionNameContext.class,0);
9071 		}
9072 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
9073 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
9074 		public List<ExprContext> expr() {
9075 			return getRuleContexts(ExprContext.class);
9076 		}
9077 		public ExprContext expr(int i) {
9078 			return getRuleContext(ExprContext.class,i);
9079 		}
9080 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
9081 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
9082 		public TerminalNode COMMA_(int i) {
9083 			return getToken(SQLServerStatementParser.COMMA_, i);
9084 		}
9085 		public RegularFunctionContext(ParserRuleContext parent, int invokingState) {
9086 			super(parent, invokingState);
9087 		}
9088 		@Override public int getRuleIndex() { return RULE_regularFunction; }
9089 		@Override
9090 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9091 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRegularFunction(this);
9092 			else return visitor.visitChildren(this);
9093 		}
9094 	}
9095 
9096 	public final RegularFunctionContext regularFunction() throws RecognitionException {
9097 		RegularFunctionContext _localctx = new RegularFunctionContext(_ctx, getState());
9098 		enterRule(_localctx, 158, RULE_regularFunction);
9099 		int _la;
9100 		try {
9101 			enterOuterAlt(_localctx, 1);
9102 			{
9103 			setState(1792);
9104 			regularFunctionName();
9105 			setState(1793);
9106 			match(LP_);
9107 			setState(1803);
9108 			_errHandler.sync(this);
9109 			switch (_input.LA(1)) {
9110 			case NOT_:
9111 			case TILDE_:
9112 			case PLUS_:
9113 			case MINUS_:
9114 			case LP_:
9115 			case LBE_:
9116 			case LBT_:
9117 			case QUESTION_:
9118 			case DOLLAR_:
9119 			case TRUNCATE:
9120 			case SCHEMA:
9121 			case COLUMNS:
9122 			case PRECISION:
9123 			case FUNCTION:
9124 			case TRIGGER:
9125 			case CASE:
9126 			case CAST:
9127 			case TRIM:
9128 			case SUBSTRING:
9129 			case RIGHT:
9130 			case OFF:
9131 			case IF:
9132 			case NOT:
9133 			case NULL:
9134 			case TRUE:
9135 			case FALSE:
9136 			case EXISTS:
9137 			case GROUP:
9138 			case LIMIT:
9139 			case OFFSET:
9140 			case SAVEPOINT:
9141 			case BOOLEAN:
9142 			case CHAR:
9143 			case ARRAY:
9144 			case INTERVAL:
9145 			case DATE:
9146 			case TIME:
9147 			case TIMESTAMP:
9148 			case LOCALTIME:
9149 			case LOCALTIMESTAMP:
9150 			case YEAR:
9151 			case QUARTER:
9152 			case MONTH:
9153 			case WEEK:
9154 			case DAY:
9155 			case SECOND:
9156 			case MICROSECOND:
9157 			case MAX:
9158 			case MIN:
9159 			case SUM:
9160 			case COUNT:
9161 			case AVG:
9162 			case CURRENT:
9163 			case ENABLE:
9164 			case DISABLE:
9165 			case INSTANCE:
9166 			case DO:
9167 			case DEFINER:
9168 			case SQL:
9169 			case CASCADED:
9170 			case LOCAL:
9171 			case NEXT:
9172 			case NAME:
9173 			case INTEGER:
9174 			case TYPE:
9175 			case TEXT:
9176 			case VIEWS:
9177 			case READ_ONLY:
9178 			case DATABASE:
9179 			case RETURNS:
9180 			case DATEPART:
9181 			case PASSWORD:
9182 			case JSON_OBJECT:
9183 			case JSON_ARRAY:
9184 			case FIRST_VALUE:
9185 			case LAST_VALUE:
9186 			case APPROX_PERCENTILE_CONT:
9187 			case APPROX_PERCENTILE_DISC:
9188 			case OPENDATASOURCE:
9189 			case BINARY:
9190 			case HIDDEN_:
9191 			case MOD:
9192 			case PARTITION:
9193 			case PARTITIONS:
9194 			case TOP:
9195 			case ROW:
9196 			case ROWS:
9197 			case XOR:
9198 			case ALWAYS:
9199 			case USER:
9200 			case ROLE:
9201 			case START:
9202 			case ALGORITHM:
9203 			case AUTO:
9204 			case BLOCKERS:
9205 			case CLUSTERED:
9206 			case NONCLUSTERED:
9207 			case COLUMNSTORE:
9208 			case CONTENT:
9209 			case CONVERT:
9210 			case YEARS:
9211 			case MONTHS:
9212 			case WEEKS:
9213 			case DAYS:
9214 			case MINUTES:
9215 			case DENY:
9216 			case DETERMINISTIC:
9217 			case DISTRIBUTION:
9218 			case DOCUMENT:
9219 			case DURABILITY:
9220 			case ENCRYPTED:
9221 			case FILESTREAM:
9222 			case FILETABLE:
9223 			case FILLFACTOR:
9224 			case FOLLOWING:
9225 			case HASH:
9226 			case HEAP:
9227 			case INBOUND:
9228 			case OUTBOUND:
9229 			case UNBOUNDED:
9230 			case INFINITE:
9231 			case LOGIN:
9232 			case MASKED:
9233 			case MAXDOP:
9234 			case MOVE:
9235 			case NOCHECK:
9236 			case OBJECT:
9237 			case ONLINE:
9238 			case OVER:
9239 			case PAGE:
9240 			case PAUSED:
9241 			case PERIOD:
9242 			case PERSISTED:
9243 			case PRECEDING:
9244 			case RANDOMIZED:
9245 			case RANGE:
9246 			case REBUILD:
9247 			case REPLICATE:
9248 			case REPLICATION:
9249 			case RESUMABLE:
9250 			case ROWGUIDCOL:
9251 			case SAVE:
9252 			case SELF:
9253 			case SPARSE:
9254 			case SWITCH:
9255 			case TRAN:
9256 			case TRANCOUNT:
9257 			case CONTROL:
9258 			case CONCAT:
9259 			case TAKE:
9260 			case OWNERSHIP:
9261 			case DEFINITION:
9262 			case APPLICATION:
9263 			case ASSEMBLY:
9264 			case SYMMETRIC:
9265 			case ASYMMETRIC:
9266 			case SERVER:
9267 			case RECEIVE:
9268 			case CHANGE:
9269 			case TRACE:
9270 			case TRACKING:
9271 			case RESOURCES:
9272 			case SETTINGS:
9273 			case STATE:
9274 			case AVAILABILITY:
9275 			case CREDENTIAL:
9276 			case ENDPOINT:
9277 			case EVENT:
9278 			case NOTIFICATION:
9279 			case LINKED:
9280 			case AUDIT:
9281 			case DDL:
9282 			case XML:
9283 			case IMPERSONATE:
9284 			case SECURABLES:
9285 			case AUTHENTICATE:
9286 			case EXTERNAL:
9287 			case ACCESS:
9288 			case ADMINISTER:
9289 			case BULK:
9290 			case OPERATIONS:
9291 			case UNSAFE:
9292 			case SHUTDOWN:
9293 			case SCOPED:
9294 			case CONFIGURATION:
9295 			case DATASPACE:
9296 			case SERVICE:
9297 			case CERTIFICATE:
9298 			case CONTRACT:
9299 			case ENCRYPTION:
9300 			case MASTER:
9301 			case DATA:
9302 			case SOURCE:
9303 			case FILE:
9304 			case FORMAT:
9305 			case LIBRARY:
9306 			case FULLTEXT:
9307 			case MASK:
9308 			case UNMASK:
9309 			case MESSAGE:
9310 			case REMOTE:
9311 			case BINDING:
9312 			case ROUTE:
9313 			case SECURITY:
9314 			case POLICY:
9315 			case AGGREGATE:
9316 			case QUEUE:
9317 			case RULE:
9318 			case SYNONYM:
9319 			case COLLECTION:
9320 			case SCRIPT:
9321 			case KILL:
9322 			case BACKUP:
9323 			case LOG:
9324 			case SHOWPLAN:
9325 			case SUBSCRIBE:
9326 			case QUERY:
9327 			case NOTIFICATIONS:
9328 			case CHECKPOINT:
9329 			case SEQUENCE:
9330 			case ABORT_AFTER_WAIT:
9331 			case ALLOW_PAGE_LOCKS:
9332 			case ALLOW_ROW_LOCKS:
9333 			case ALL_SPARSE_COLUMNS:
9334 			case BUCKET_COUNT:
9335 			case COLUMNSTORE_ARCHIVE:
9336 			case COLUMN_ENCRYPTION_KEY:
9337 			case COLUMN_SET:
9338 			case COMPRESSION_DELAY:
9339 			case DATABASE_DEAULT:
9340 			case DATA_COMPRESSION:
9341 			case DATA_CONSISTENCY_CHECK:
9342 			case ENCRYPTION_TYPE:
9343 			case SYSTEM_TIME:
9344 			case SYSTEM_VERSIONING:
9345 			case TEXTIMAGE_ON:
9346 			case WAIT_AT_LOW_PRIORITY:
9347 			case STATISTICS_INCREMENTAL:
9348 			case STATISTICS_NORECOMPUTE:
9349 			case ROUND_ROBIN:
9350 			case SCHEMA_AND_DATA:
9351 			case SCHEMA_ONLY:
9352 			case SORT_IN_TEMPDB:
9353 			case IGNORE_DUP_KEY:
9354 			case IMPLICIT_TRANSACTIONS:
9355 			case MAX_DURATION:
9356 			case MEMORY_OPTIMIZED:
9357 			case MIGRATION_STATE:
9358 			case PAD_INDEX:
9359 			case REMOTE_DATA_ARCHIVE:
9360 			case FILESTREAM_ON:
9361 			case FILETABLE_COLLATE_FILENAME:
9362 			case FILETABLE_DIRECTORY:
9363 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
9364 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
9365 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
9366 			case FILTER_PREDICATE:
9367 			case HISTORY_RETENTION_PERIOD:
9368 			case HISTORY_TABLE:
9369 			case LOCK_ESCALATION:
9370 			case DROP_EXISTING:
9371 			case ROW_NUMBER:
9372 			case FIRST:
9373 			case DATETIME2:
9374 			case OUTPUT:
9375 			case INSERTED:
9376 			case DELETED:
9377 			case FILENAME:
9378 			case SIZE:
9379 			case MAXSIZE:
9380 			case FILEGROWTH:
9381 			case UNLIMITED:
9382 			case KB:
9383 			case MB:
9384 			case GB:
9385 			case TB:
9386 			case CONTAINS:
9387 			case MEMORY_OPTIMIZED_DATA:
9388 			case FILEGROUP:
9389 			case NON_TRANSACTED_ACCESS:
9390 			case DB_CHAINING:
9391 			case TRUSTWORTHY:
9392 			case FORWARD_ONLY:
9393 			case KEYSET:
9394 			case FAST_FORWARD:
9395 			case SCROLL_LOCKS:
9396 			case OPTIMISTIC:
9397 			case TYPE_WARNING:
9398 			case SCHEMABINDING:
9399 			case CALLER:
9400 			case INPUT:
9401 			case OWNER:
9402 			case SNAPSHOT:
9403 			case REPEATABLE:
9404 			case SERIALIZABLE:
9405 			case NATIVE_COMPILATION:
9406 			case VIEW_METADATA:
9407 			case INSTEAD:
9408 			case APPEND:
9409 			case INCREMENT:
9410 			case CACHE:
9411 			case MINVALUE:
9412 			case MAXVALUE:
9413 			case RESTART:
9414 			case LOB_COMPACTION:
9415 			case COMPRESS_ALL_ROW_GROUPS:
9416 			case REORGANIZE:
9417 			case RESUME:
9418 			case PAUSE:
9419 			case ABORT:
9420 			case ACCELERATED_DATABASE_RECOVERY:
9421 			case PERSISTENT_VERSION_STORE_FILEGROUP:
9422 			case IMMEDIATE:
9423 			case NO_WAIT:
9424 			case TARGET_RECOVERY_TIME:
9425 			case SECONDS:
9426 			case HONOR_BROKER_PRIORITY:
9427 			case ERROR_BROKER_CONVERSATIONS:
9428 			case NEW_BROKER:
9429 			case DISABLE_BROKER:
9430 			case ENABLE_BROKER:
9431 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
9432 			case READ_COMMITTED_SNAPSHOT:
9433 			case ALLOW_SNAPSHOT_ISOLATION:
9434 			case RECURSIVE_TRIGGERS:
9435 			case QUOTED_IDENTIFIER:
9436 			case NUMERIC_ROUNDABORT:
9437 			case CONCAT_NULL_YIELDS_NULL:
9438 			case COMPATIBILITY_LEVEL:
9439 			case ARITHABORT:
9440 			case ANSI_WARNINGS:
9441 			case ANSI_PADDING:
9442 			case ANSI_NULLS:
9443 			case ANSI_NULL_DEFAULT:
9444 			case PAGE_VERIFY:
9445 			case CHECKSUM:
9446 			case TORN_PAGE_DETECTION:
9447 			case BULK_LOGGED:
9448 			case RECOVERY:
9449 			case TOTAL_EXECUTION_CPU_TIME_MS:
9450 			case TOTAL_COMPILE_CPU_TIME_MS:
9451 			case STALE_CAPTURE_POLICY_THRESHOLD:
9452 			case EXECUTION_COUNT:
9453 			case QUERY_CAPTURE_POLICY:
9454 			case WAIT_STATS_CAPTURE_MODE:
9455 			case MAX_PLANS_PER_QUERY:
9456 			case QUERY_CAPTURE_MODE:
9457 			case SIZE_BASED_CLEANUP_MODE:
9458 			case INTERVAL_LENGTH_MINUTES:
9459 			case MAX_STORAGE_SIZE_MB:
9460 			case DATA_FLUSH_INTERVAL_SECONDS:
9461 			case CLEANUP_POLICY:
9462 			case CUSTOM:
9463 			case STALE_QUERY_THRESHOLD_DAYS:
9464 			case OPERATION_MODE:
9465 			case QUERY_STORE:
9466 			case CURSOR_DEFAULT:
9467 			case GLOBAL:
9468 			case CURSOR_CLOSE_ON_COMMIT:
9469 			case HOURS:
9470 			case CHANGE_RETENTION:
9471 			case AUTO_CLEANUP:
9472 			case CHANGE_TRACKING:
9473 			case AUTOMATIC_TUNING:
9474 			case FORCE_LAST_GOOD_PLAN:
9475 			case AUTO_UPDATE_STATISTICS_ASYNC:
9476 			case AUTO_UPDATE_STATISTICS:
9477 			case AUTO_SHRINK:
9478 			case AUTO_CREATE_STATISTICS:
9479 			case INCREMENTAL:
9480 			case AUTO_CLOSE:
9481 			case DATA_RETENTION:
9482 			case TEMPORAL_HISTORY_RETENTION:
9483 			case EDITION:
9484 			case MIXED_PAGE_ALLOCATION:
9485 			case DISABLED:
9486 			case ALLOWED:
9487 			case HADR:
9488 			case MULTI_USER:
9489 			case RESTRICTED_USER:
9490 			case SINGLE_USER:
9491 			case OFFLINE:
9492 			case EMERGENCY:
9493 			case SUSPEND:
9494 			case DATE_CORRELATION_OPTIMIZATION:
9495 			case ELASTIC_POOL:
9496 			case SERVICE_OBJECTIVE:
9497 			case DATABASE_NAME:
9498 			case ALLOW_CONNECTIONS:
9499 			case GEO:
9500 			case NAMED:
9501 			case DATEFIRST:
9502 			case BACKUP_STORAGE_REDUNDANCY:
9503 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
9504 			case SECONDARY:
9505 			case FAILOVER:
9506 			case DEFAULT_FULLTEXT_LANGUAGE:
9507 			case DEFAULT_LANGUAGE:
9508 			case INLINE:
9509 			case NESTED_TRIGGERS:
9510 			case TRANSFORM_NOISE_WORDS:
9511 			case TWO_DIGIT_YEAR_CUTOFF:
9512 			case PERSISTENT_LOG_BUFFER:
9513 			case DIRECTORY_NAME:
9514 			case DATEFORMAT:
9515 			case DELAYED_DURABILITY:
9516 			case AUTHORIZATION:
9517 			case TRANSFER:
9518 			case PROVIDER:
9519 			case SID:
9520 			case SEARCH:
9521 			case MEMBER:
9522 			case JSON:
9523 			case OPENJSON:
9524 			case OPENROWSET:
9525 			case TRY_CAST:
9526 			case TRY_CONVERT:
9527 			case IDENTIFIER_:
9528 			case DELIMITED_IDENTIFIER_:
9529 			case STRING_:
9530 			case NUMBER_:
9531 			case HEX_DIGIT_:
9532 			case BIT_NUM_:
9533 			case NCHAR_TEXT:
9534 				{
9535 				setState(1794);
9536 				expr(0);
9537 				setState(1799);
9538 				_errHandler.sync(this);
9539 				_la = _input.LA(1);
9540 				while (_la==COMMA_) {
9541 					{
9542 					{
9543 					setState(1795);
9544 					match(COMMA_);
9545 					setState(1796);
9546 					expr(0);
9547 					}
9548 					}
9549 					setState(1801);
9550 					_errHandler.sync(this);
9551 					_la = _input.LA(1);
9552 				}
9553 				}
9554 				break;
9555 			case ASTERISK_:
9556 				{
9557 				setState(1802);
9558 				match(ASTERISK_);
9559 				}
9560 				break;
9561 			case RP_:
9562 				break;
9563 			default:
9564 				break;
9565 			}
9566 			setState(1805);
9567 			match(RP_);
9568 			}
9569 		}
9570 		catch (RecognitionException re) {
9571 			_localctx.exception = re;
9572 			_errHandler.reportError(this, re);
9573 			_errHandler.recover(this, re);
9574 		}
9575 		finally {
9576 			exitRule();
9577 		}
9578 		return _localctx;
9579 	}
9580 
9581 	public static class RegularFunctionNameContext extends ParserRuleContext {
9582 		public IdentifierContext identifier() {
9583 			return getRuleContext(IdentifierContext.class,0);
9584 		}
9585 		public OwnerContext owner() {
9586 			return getRuleContext(OwnerContext.class,0);
9587 		}
9588 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
9589 		public TerminalNode IF() { return getToken(SQLServerStatementParser.IF, 0); }
9590 		public TerminalNode LOCALTIME() { return getToken(SQLServerStatementParser.LOCALTIME, 0); }
9591 		public TerminalNode LOCALTIMESTAMP() { return getToken(SQLServerStatementParser.LOCALTIMESTAMP, 0); }
9592 		public TerminalNode INTERVAL() { return getToken(SQLServerStatementParser.INTERVAL, 0); }
9593 		public RegularFunctionNameContext(ParserRuleContext parent, int invokingState) {
9594 			super(parent, invokingState);
9595 		}
9596 		@Override public int getRuleIndex() { return RULE_regularFunctionName; }
9597 		@Override
9598 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9599 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRegularFunctionName(this);
9600 			else return visitor.visitChildren(this);
9601 		}
9602 	}
9603 
9604 	public final RegularFunctionNameContext regularFunctionName() throws RecognitionException {
9605 		RegularFunctionNameContext _localctx = new RegularFunctionNameContext(_ctx, getState());
9606 		enterRule(_localctx, 160, RULE_regularFunctionName);
9607 		try {
9608 			setState(1817);
9609 			_errHandler.sync(this);
9610 			switch ( getInterpreter().adaptivePredict(_input,97,_ctx) ) {
9611 			case 1:
9612 				enterOuterAlt(_localctx, 1);
9613 				{
9614 				setState(1810);
9615 				_errHandler.sync(this);
9616 				switch ( getInterpreter().adaptivePredict(_input,96,_ctx) ) {
9617 				case 1:
9618 					{
9619 					setState(1807);
9620 					owner();
9621 					setState(1808);
9622 					match(DOT_);
9623 					}
9624 					break;
9625 				}
9626 				setState(1812);
9627 				identifier();
9628 				}
9629 				break;
9630 			case 2:
9631 				enterOuterAlt(_localctx, 2);
9632 				{
9633 				setState(1813);
9634 				match(IF);
9635 				}
9636 				break;
9637 			case 3:
9638 				enterOuterAlt(_localctx, 3);
9639 				{
9640 				setState(1814);
9641 				match(LOCALTIME);
9642 				}
9643 				break;
9644 			case 4:
9645 				enterOuterAlt(_localctx, 4);
9646 				{
9647 				setState(1815);
9648 				match(LOCALTIMESTAMP);
9649 				}
9650 				break;
9651 			case 5:
9652 				enterOuterAlt(_localctx, 5);
9653 				{
9654 				setState(1816);
9655 				match(INTERVAL);
9656 				}
9657 				break;
9658 			}
9659 		}
9660 		catch (RecognitionException re) {
9661 			_localctx.exception = re;
9662 			_errHandler.reportError(this, re);
9663 			_errHandler.recover(this, re);
9664 		}
9665 		finally {
9666 			exitRule();
9667 		}
9668 		return _localctx;
9669 	}
9670 
9671 	public static class CaseExpressionContext extends ParserRuleContext {
9672 		public TerminalNode CASE() { return getToken(SQLServerStatementParser.CASE, 0); }
9673 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
9674 		public SimpleExprContext simpleExpr() {
9675 			return getRuleContext(SimpleExprContext.class,0);
9676 		}
9677 		public List<CaseWhenContext> caseWhen() {
9678 			return getRuleContexts(CaseWhenContext.class);
9679 		}
9680 		public CaseWhenContext caseWhen(int i) {
9681 			return getRuleContext(CaseWhenContext.class,i);
9682 		}
9683 		public CaseElseContext caseElse() {
9684 			return getRuleContext(CaseElseContext.class,0);
9685 		}
9686 		public CaseExpressionContext(ParserRuleContext parent, int invokingState) {
9687 			super(parent, invokingState);
9688 		}
9689 		@Override public int getRuleIndex() { return RULE_caseExpression; }
9690 		@Override
9691 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9692 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCaseExpression(this);
9693 			else return visitor.visitChildren(this);
9694 		}
9695 	}
9696 
9697 	public final CaseExpressionContext caseExpression() throws RecognitionException {
9698 		CaseExpressionContext _localctx = new CaseExpressionContext(_ctx, getState());
9699 		enterRule(_localctx, 162, RULE_caseExpression);
9700 		int _la;
9701 		try {
9702 			enterOuterAlt(_localctx, 1);
9703 			{
9704 			setState(1819);
9705 			match(CASE);
9706 			setState(1821);
9707 			_errHandler.sync(this);
9708 			_la = _input.LA(1);
9709 			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << LP_) | (1L << LBE_) | (1L << LBT_) | (1L << QUESTION_) | (1L << DOLLAR_) | (1L << TRUNCATE) | (1L << SCHEMA) | (1L << COLUMNS))) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (PRECISION - 69)) | (1L << (FUNCTION - 69)) | (1L << (TRIGGER - 69)) | (1L << (CASE - 69)) | (1L << (CAST - 69)) | (1L << (TRIM - 69)) | (1L << (SUBSTRING - 69)) | (1L << (RIGHT - 69)) | (1L << (OFF - 69)) | (1L << (IF - 69)) | (1L << (NULL - 69)) | (1L << (TRUE - 69)) | (1L << (FALSE - 69)) | (1L << (EXISTS - 69)) | (1L << (GROUP - 69)) | (1L << (LIMIT - 69)) | (1L << (OFFSET - 69)) | (1L << (SAVEPOINT - 69)) | (1L << (BOOLEAN - 69)) | (1L << (CHAR - 69)))) != 0) || ((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (ARRAY - 133)) | (1L << (INTERVAL - 133)) | (1L << (DATE - 133)) | (1L << (TIME - 133)) | (1L << (TIMESTAMP - 133)) | (1L << (LOCALTIME - 133)) | (1L << (LOCALTIMESTAMP - 133)) | (1L << (YEAR - 133)) | (1L << (QUARTER - 133)) | (1L << (MONTH - 133)) | (1L << (WEEK - 133)) | (1L << (DAY - 133)) | (1L << (SECOND - 133)) | (1L << (MICROSECOND - 133)) | (1L << (MAX - 133)) | (1L << (MIN - 133)) | (1L << (SUM - 133)) | (1L << (COUNT - 133)) | (1L << (AVG - 133)) | (1L << (CURRENT - 133)) | (1L << (ENABLE - 133)) | (1L << (DISABLE - 133)) | (1L << (INSTANCE - 133)) | (1L << (DO - 133)) | (1L << (DEFINER - 133)) | (1L << (SQL - 133)) | (1L << (CASCADED - 133)) | (1L << (LOCAL - 133)) | (1L << (NEXT - 133)) | (1L << (NAME - 133)) | (1L << (INTEGER - 133)) | (1L << (TYPE - 133)) | (1L << (TEXT - 133)) | (1L << (VIEWS - 133)))) != 0) || ((((_la - 203)) & ~0x3f) == 0 && ((1L << (_la - 203)) & ((1L << (READ_ONLY - 203)) | (1L << (DATABASE - 203)) | (1L << (RETURNS - 203)) | (1L << (DATEPART - 203)) | (1L << (PASSWORD - 203)) | (1L << (JSON_OBJECT - 203)) | (1L << (JSON_ARRAY - 203)) | (1L << (FIRST_VALUE - 203)) | (1L << (LAST_VALUE - 203)) | (1L << (APPROX_PERCENTILE_CONT - 203)) | (1L << (APPROX_PERCENTILE_DISC - 203)) | (1L << (OPENDATASOURCE - 203)) | (1L << (BINARY - 203)) | (1L << (HIDDEN_ - 203)) | (1L << (MOD - 203)) | (1L << (PARTITION - 203)) | (1L << (PARTITIONS - 203)) | (1L << (TOP - 203)) | (1L << (ROW - 203)) | (1L << (ROWS - 203)) | (1L << (XOR - 203)) | (1L << (ALWAYS - 203)) | (1L << (USER - 203)) | (1L << (ROLE - 203)) | (1L << (START - 203)) | (1L << (ALGORITHM - 203)))) != 0) || ((((_la - 267)) & ~0x3f) == 0 && ((1L << (_la - 267)) & ((1L << (AUTO - 267)) | (1L << (BLOCKERS - 267)) | (1L << (CLUSTERED - 267)) | (1L << (NONCLUSTERED - 267)) | (1L << (COLUMNSTORE - 267)) | (1L << (CONTENT - 267)) | (1L << (CONVERT - 267)) | (1L << (YEARS - 267)) | (1L << (MONTHS - 267)) | (1L << (WEEKS - 267)) | (1L << (DAYS - 267)) | (1L << (MINUTES - 267)) | (1L << (DENY - 267)) | (1L << (DETERMINISTIC - 267)) | (1L << (DISTRIBUTION - 267)) | (1L << (DOCUMENT - 267)) | (1L << (DURABILITY - 267)) | (1L << (ENCRYPTED - 267)) | (1L << (FILESTREAM - 267)) | (1L << (FILETABLE - 267)) | (1L << (FILLFACTOR - 267)) | (1L << (FOLLOWING - 267)) | (1L << (HASH - 267)) | (1L << (HEAP - 267)) | (1L << (INBOUND - 267)) | (1L << (OUTBOUND - 267)) | (1L << (UNBOUNDED - 267)) | (1L << (INFINITE - 267)) | (1L << (LOGIN - 267)) | (1L << (MASKED - 267)) | (1L << (MAXDOP - 267)) | (1L << (MOVE - 267)) | (1L << (NOCHECK - 267)) | (1L << (OBJECT - 267)) | (1L << (ONLINE - 267)) | (1L << (OVER - 267)) | (1L << (PAGE - 267)) | (1L << (PAUSED - 267)) | (1L << (PERIOD - 267)) | (1L << (PERSISTED - 267)) | (1L << (PRECEDING - 267)) | (1L << (RANDOMIZED - 267)) | (1L << (RANGE - 267)) | (1L << (REBUILD - 267)) | (1L << (REPLICATE - 267)) | (1L << (REPLICATION - 267)) | (1L << (RESUMABLE - 267)) | (1L << (ROWGUIDCOL - 267)) | (1L << (SAVE - 267)) | (1L << (SELF - 267)) | (1L << (SPARSE - 267)) | (1L << (SWITCH - 267)) | (1L << (TRAN - 267)) | (1L << (TRANCOUNT - 267)))) != 0) || ((((_la - 332)) & ~0x3f) == 0 && ((1L << (_la - 332)) & ((1L << (CONTROL - 332)) | (1L << (CONCAT - 332)) | (1L << (TAKE - 332)) | (1L << (OWNERSHIP - 332)) | (1L << (DEFINITION - 332)) | (1L << (APPLICATION - 332)) | (1L << (ASSEMBLY - 332)) | (1L << (SYMMETRIC - 332)) | (1L << (ASYMMETRIC - 332)) | (1L << (SERVER - 332)) | (1L << (RECEIVE - 332)) | (1L << (CHANGE - 332)) | (1L << (TRACE - 332)) | (1L << (TRACKING - 332)) | (1L << (RESOURCES - 332)) | (1L << (SETTINGS - 332)) | (1L << (STATE - 332)) | (1L << (AVAILABILITY - 332)) | (1L << (CREDENTIAL - 332)) | (1L << (ENDPOINT - 332)) | (1L << (EVENT - 332)) | (1L << (NOTIFICATION - 332)) | (1L << (LINKED - 332)) | (1L << (AUDIT - 332)) | (1L << (DDL - 332)) | (1L << (XML - 332)) | (1L << (IMPERSONATE - 332)) | (1L << (SECURABLES - 332)) | (1L << (AUTHENTICATE - 332)) | (1L << (EXTERNAL - 332)) | (1L << (ACCESS - 332)) | (1L << (ADMINISTER - 332)) | (1L << (BULK - 332)) | (1L << (OPERATIONS - 332)) | (1L << (UNSAFE - 332)) | (1L << (SHUTDOWN - 332)) | (1L << (SCOPED - 332)) | (1L << (CONFIGURATION - 332)) | (1L << (DATASPACE - 332)) | (1L << (SERVICE - 332)) | (1L << (CERTIFICATE - 332)) | (1L << (CONTRACT - 332)) | (1L << (ENCRYPTION - 332)) | (1L << (MASTER - 332)) | (1L << (DATA - 332)) | (1L << (SOURCE - 332)) | (1L << (FILE - 332)) | (1L << (FORMAT - 332)) | (1L << (LIBRARY - 332)) | (1L << (FULLTEXT - 332)) | (1L << (MASK - 332)) | (1L << (UNMASK - 332)) | (1L << (MESSAGE - 332)) | (1L << (REMOTE - 332)) | (1L << (BINDING - 332)) | (1L << (ROUTE - 332)) | (1L << (SECURITY - 332)) | (1L << (POLICY - 332)) | (1L << (AGGREGATE - 332)) | (1L << (QUEUE - 332)) | (1L << (RULE - 332)) | (1L << (SYNONYM - 332)) | (1L << (COLLECTION - 332)) | (1L << (SCRIPT - 332)))) != 0) || ((((_la - 396)) & ~0x3f) == 0 && ((1L << (_la - 396)) & ((1L << (KILL - 396)) | (1L << (BACKUP - 396)) | (1L << (LOG - 396)) | (1L << (SHOWPLAN - 396)) | (1L << (SUBSCRIBE - 396)) | (1L << (QUERY - 396)) | (1L << (NOTIFICATIONS - 396)) | (1L << (CHECKPOINT - 396)) | (1L << (SEQUENCE - 396)) | (1L << (ABORT_AFTER_WAIT - 396)) | (1L << (ALLOW_PAGE_LOCKS - 396)) | (1L << (ALLOW_ROW_LOCKS - 396)) | (1L << (ALL_SPARSE_COLUMNS - 396)) | (1L << (BUCKET_COUNT - 396)) | (1L << (COLUMNSTORE_ARCHIVE - 396)) | (1L << (COLUMN_ENCRYPTION_KEY - 396)) | (1L << (COLUMN_SET - 396)) | (1L << (COMPRESSION_DELAY - 396)) | (1L << (DATABASE_DEAULT - 396)) | (1L << (DATA_COMPRESSION - 396)) | (1L << (DATA_CONSISTENCY_CHECK - 396)) | (1L << (ENCRYPTION_TYPE - 396)) | (1L << (SYSTEM_TIME - 396)) | (1L << (SYSTEM_VERSIONING - 396)) | (1L << (TEXTIMAGE_ON - 396)) | (1L << (WAIT_AT_LOW_PRIORITY - 396)) | (1L << (STATISTICS_INCREMENTAL - 396)) | (1L << (STATISTICS_NORECOMPUTE - 396)) | (1L << (ROUND_ROBIN - 396)) | (1L << (SCHEMA_AND_DATA - 396)) | (1L << (SCHEMA_ONLY - 396)) | (1L << (SORT_IN_TEMPDB - 396)) | (1L << (IGNORE_DUP_KEY - 396)) | (1L << (IMPLICIT_TRANSACTIONS - 396)) | (1L << (MAX_DURATION - 396)) | (1L << (MEMORY_OPTIMIZED - 396)) | (1L << (MIGRATION_STATE - 396)) | (1L << (PAD_INDEX - 396)) | (1L << (REMOTE_DATA_ARCHIVE - 396)) | (1L << (FILESTREAM_ON - 396)) | (1L << (FILETABLE_COLLATE_FILENAME - 396)) | (1L << (FILETABLE_DIRECTORY - 396)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 396)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 396)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 396)) | (1L << (FILTER_PREDICATE - 396)) | (1L << (HISTORY_RETENTION_PERIOD - 396)) | (1L << (HISTORY_TABLE - 396)) | (1L << (LOCK_ESCALATION - 396)) | (1L << (DROP_EXISTING - 396)) | (1L << (ROW_NUMBER - 396)) | (1L << (FIRST - 396)) | (1L << (DATETIME2 - 396)))) != 0) || ((((_la - 466)) & ~0x3f) == 0 && ((1L << (_la - 466)) & ((1L << (OUTPUT - 466)) | (1L << (INSERTED - 466)) | (1L << (DELETED - 466)) | (1L << (FILENAME - 466)) | (1L << (SIZE - 466)) | (1L << (MAXSIZE - 466)) | (1L << (FILEGROWTH - 466)) | (1L << (UNLIMITED - 466)) | (1L << (KB - 466)) | (1L << (MB - 466)) | (1L << (GB - 466)) | (1L << (TB - 466)) | (1L << (CONTAINS - 466)) | (1L << (MEMORY_OPTIMIZED_DATA - 466)) | (1L << (FILEGROUP - 466)) | (1L << (NON_TRANSACTED_ACCESS - 466)) | (1L << (DB_CHAINING - 466)) | (1L << (TRUSTWORTHY - 466)) | (1L << (FORWARD_ONLY - 466)) | (1L << (KEYSET - 466)) | (1L << (FAST_FORWARD - 466)) | (1L << (SCROLL_LOCKS - 466)) | (1L << (OPTIMISTIC - 466)) | (1L << (TYPE_WARNING - 466)) | (1L << (SCHEMABINDING - 466)))) != 0) || ((((_la - 530)) & ~0x3f) == 0 && ((1L << (_la - 530)) & ((1L << (CALLER - 530)) | (1L << (INPUT - 530)) | (1L << (OWNER - 530)) | (1L << (SNAPSHOT - 530)) | (1L << (REPEATABLE - 530)) | (1L << (SERIALIZABLE - 530)) | (1L << (NATIVE_COMPILATION - 530)) | (1L << (VIEW_METADATA - 530)) | (1L << (INSTEAD - 530)) | (1L << (APPEND - 530)) | (1L << (INCREMENT - 530)) | (1L << (CACHE - 530)) | (1L << (MINVALUE - 530)) | (1L << (MAXVALUE - 530)) | (1L << (RESTART - 530)) | (1L << (LOB_COMPACTION - 530)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 530)) | (1L << (REORGANIZE - 530)) | (1L << (RESUME - 530)) | (1L << (PAUSE - 530)) | (1L << (ABORT - 530)) | (1L << (ACCELERATED_DATABASE_RECOVERY - 530)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 530)) | (1L << (IMMEDIATE - 530)) | (1L << (NO_WAIT - 530)) | (1L << (TARGET_RECOVERY_TIME - 530)) | (1L << (SECONDS - 530)) | (1L << (HONOR_BROKER_PRIORITY - 530)) | (1L << (ERROR_BROKER_CONVERSATIONS - 530)) | (1L << (NEW_BROKER - 530)) | (1L << (DISABLE_BROKER - 530)) | (1L << (ENABLE_BROKER - 530)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 530)) | (1L << (READ_COMMITTED_SNAPSHOT - 530)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 530)) | (1L << (RECURSIVE_TRIGGERS - 530)) | (1L << (QUOTED_IDENTIFIER - 530)) | (1L << (NUMERIC_ROUNDABORT - 530)) | (1L << (CONCAT_NULL_YIELDS_NULL - 530)) | (1L << (COMPATIBILITY_LEVEL - 530)) | (1L << (ARITHABORT - 530)) | (1L << (ANSI_WARNINGS - 530)) | (1L << (ANSI_PADDING - 530)) | (1L << (ANSI_NULLS - 530)))) != 0) || ((((_la - 594)) & ~0x3f) == 0 && ((1L << (_la - 594)) & ((1L << (ANSI_NULL_DEFAULT - 594)) | (1L << (PAGE_VERIFY - 594)) | (1L << (CHECKSUM - 594)) | (1L << (TORN_PAGE_DETECTION - 594)) | (1L << (BULK_LOGGED - 594)) | (1L << (RECOVERY - 594)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 594)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 594)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 594)) | (1L << (EXECUTION_COUNT - 594)) | (1L << (QUERY_CAPTURE_POLICY - 594)) | (1L << (WAIT_STATS_CAPTURE_MODE - 594)) | (1L << (MAX_PLANS_PER_QUERY - 594)) | (1L << (QUERY_CAPTURE_MODE - 594)) | (1L << (SIZE_BASED_CLEANUP_MODE - 594)) | (1L << (INTERVAL_LENGTH_MINUTES - 594)) | (1L << (MAX_STORAGE_SIZE_MB - 594)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 594)) | (1L << (CLEANUP_POLICY - 594)) | (1L << (CUSTOM - 594)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 594)) | (1L << (OPERATION_MODE - 594)) | (1L << (QUERY_STORE - 594)) | (1L << (CURSOR_DEFAULT - 594)) | (1L << (GLOBAL - 594)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 594)) | (1L << (HOURS - 594)) | (1L << (CHANGE_RETENTION - 594)) | (1L << (AUTO_CLEANUP - 594)) | (1L << (CHANGE_TRACKING - 594)) | (1L << (AUTOMATIC_TUNING - 594)) | (1L << (FORCE_LAST_GOOD_PLAN - 594)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 594)) | (1L << (AUTO_UPDATE_STATISTICS - 594)) | (1L << (AUTO_SHRINK - 594)) | (1L << (AUTO_CREATE_STATISTICS - 594)) | (1L << (INCREMENTAL - 594)) | (1L << (AUTO_CLOSE - 594)) | (1L << (DATA_RETENTION - 594)) | (1L << (TEMPORAL_HISTORY_RETENTION - 594)) | (1L << (EDITION - 594)) | (1L << (MIXED_PAGE_ALLOCATION - 594)) | (1L << (DISABLED - 594)) | (1L << (ALLOWED - 594)) | (1L << (HADR - 594)) | (1L << (MULTI_USER - 594)) | (1L << (RESTRICTED_USER - 594)) | (1L << (SINGLE_USER - 594)) | (1L << (OFFLINE - 594)) | (1L << (EMERGENCY - 594)) | (1L << (SUSPEND - 594)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 594)) | (1L << (ELASTIC_POOL - 594)) | (1L << (SERVICE_OBJECTIVE - 594)) | (1L << (DATABASE_NAME - 594)) | (1L << (ALLOW_CONNECTIONS - 594)) | (1L << (GEO - 594)) | (1L << (NAMED - 594)) | (1L << (DATEFIRST - 594)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 594)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 594)) | (1L << (SECONDARY - 594)) | (1L << (FAILOVER - 594)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 594)))) != 0) || ((((_la - 658)) & ~0x3f) == 0 && ((1L << (_la - 658)) & ((1L << (DEFAULT_LANGUAGE - 658)) | (1L << (INLINE - 658)) | (1L << (NESTED_TRIGGERS - 658)) | (1L << (TRANSFORM_NOISE_WORDS - 658)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 658)) | (1L << (PERSISTENT_LOG_BUFFER - 658)) | (1L << (DIRECTORY_NAME - 658)) | (1L << (DATEFORMAT - 658)) | (1L << (DELAYED_DURABILITY - 658)) | (1L << (AUTHORIZATION - 658)) | (1L << (TRANSFER - 658)) | (1L << (PROVIDER - 658)) | (1L << (SID - 658)) | (1L << (SEARCH - 658)) | (1L << (MEMBER - 658)) | (1L << (JSON - 658)) | (1L << (OPENJSON - 658)) | (1L << (OPENROWSET - 658)) | (1L << (TRY_CAST - 658)) | (1L << (TRY_CONVERT - 658)))) != 0) || ((((_la - 722)) & ~0x3f) == 0 && ((1L << (_la - 722)) & ((1L << (IDENTIFIER_ - 722)) | (1L << (DELIMITED_IDENTIFIER_ - 722)) | (1L << (STRING_ - 722)) | (1L << (NUMBER_ - 722)) | (1L << (HEX_DIGIT_ - 722)) | (1L << (BIT_NUM_ - 722)) | (1L << (NCHAR_TEXT - 722)))) != 0)) {
9710 				{
9711 				setState(1820);
9712 				simpleExpr(0);
9713 				}
9714 			}
9715 
9716 			setState(1824); 
9717 			_errHandler.sync(this);
9718 			_la = _input.LA(1);
9719 			do {
9720 				{
9721 				{
9722 				setState(1823);
9723 				caseWhen();
9724 				}
9725 				}
9726 				setState(1826); 
9727 				_errHandler.sync(this);
9728 				_la = _input.LA(1);
9729 			} while ( _la==WHEN );
9730 			setState(1829);
9731 			_errHandler.sync(this);
9732 			_la = _input.LA(1);
9733 			if (_la==ELSE) {
9734 				{
9735 				setState(1828);
9736 				caseElse();
9737 				}
9738 			}
9739 
9740 			setState(1831);
9741 			match(END);
9742 			}
9743 		}
9744 		catch (RecognitionException re) {
9745 			_localctx.exception = re;
9746 			_errHandler.reportError(this, re);
9747 			_errHandler.recover(this, re);
9748 		}
9749 		finally {
9750 			exitRule();
9751 		}
9752 		return _localctx;
9753 	}
9754 
9755 	public static class CaseWhenContext extends ParserRuleContext {
9756 		public TerminalNode WHEN() { return getToken(SQLServerStatementParser.WHEN, 0); }
9757 		public List<ExprContext> expr() {
9758 			return getRuleContexts(ExprContext.class);
9759 		}
9760 		public ExprContext expr(int i) {
9761 			return getRuleContext(ExprContext.class,i);
9762 		}
9763 		public TerminalNode THEN() { return getToken(SQLServerStatementParser.THEN, 0); }
9764 		public CaseWhenContext(ParserRuleContext parent, int invokingState) {
9765 			super(parent, invokingState);
9766 		}
9767 		@Override public int getRuleIndex() { return RULE_caseWhen; }
9768 		@Override
9769 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9770 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCaseWhen(this);
9771 			else return visitor.visitChildren(this);
9772 		}
9773 	}
9774 
9775 	public final CaseWhenContext caseWhen() throws RecognitionException {
9776 		CaseWhenContext _localctx = new CaseWhenContext(_ctx, getState());
9777 		enterRule(_localctx, 164, RULE_caseWhen);
9778 		try {
9779 			enterOuterAlt(_localctx, 1);
9780 			{
9781 			setState(1833);
9782 			match(WHEN);
9783 			setState(1834);
9784 			expr(0);
9785 			setState(1835);
9786 			match(THEN);
9787 			setState(1836);
9788 			expr(0);
9789 			}
9790 		}
9791 		catch (RecognitionException re) {
9792 			_localctx.exception = re;
9793 			_errHandler.reportError(this, re);
9794 			_errHandler.recover(this, re);
9795 		}
9796 		finally {
9797 			exitRule();
9798 		}
9799 		return _localctx;
9800 	}
9801 
9802 	public static class CaseElseContext extends ParserRuleContext {
9803 		public TerminalNode ELSE() { return getToken(SQLServerStatementParser.ELSE, 0); }
9804 		public ExprContext expr() {
9805 			return getRuleContext(ExprContext.class,0);
9806 		}
9807 		public CaseElseContext(ParserRuleContext parent, int invokingState) {
9808 			super(parent, invokingState);
9809 		}
9810 		@Override public int getRuleIndex() { return RULE_caseElse; }
9811 		@Override
9812 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9813 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCaseElse(this);
9814 			else return visitor.visitChildren(this);
9815 		}
9816 	}
9817 
9818 	public final CaseElseContext caseElse() throws RecognitionException {
9819 		CaseElseContext _localctx = new CaseElseContext(_ctx, getState());
9820 		enterRule(_localctx, 166, RULE_caseElse);
9821 		try {
9822 			enterOuterAlt(_localctx, 1);
9823 			{
9824 			setState(1838);
9825 			match(ELSE);
9826 			setState(1839);
9827 			expr(0);
9828 			}
9829 		}
9830 		catch (RecognitionException re) {
9831 			_localctx.exception = re;
9832 			_errHandler.reportError(this, re);
9833 			_errHandler.recover(this, re);
9834 		}
9835 		finally {
9836 			exitRule();
9837 		}
9838 		return _localctx;
9839 	}
9840 
9841 	public static class PrivateExprOfDbContext extends ParserRuleContext {
9842 		public WindowFunctionContext windowFunction() {
9843 			return getRuleContext(WindowFunctionContext.class,0);
9844 		}
9845 		public AtTimeZoneExprContext atTimeZoneExpr() {
9846 			return getRuleContext(AtTimeZoneExprContext.class,0);
9847 		}
9848 		public CastExprContext castExpr() {
9849 			return getRuleContext(CastExprContext.class,0);
9850 		}
9851 		public ConvertExprContext convertExpr() {
9852 			return getRuleContext(ConvertExprContext.class,0);
9853 		}
9854 		public PrivateExprOfDbContext(ParserRuleContext parent, int invokingState) {
9855 			super(parent, invokingState);
9856 		}
9857 		@Override public int getRuleIndex() { return RULE_privateExprOfDb; }
9858 		@Override
9859 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9860 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrivateExprOfDb(this);
9861 			else return visitor.visitChildren(this);
9862 		}
9863 	}
9864 
9865 	public final PrivateExprOfDbContext privateExprOfDb() throws RecognitionException {
9866 		PrivateExprOfDbContext _localctx = new PrivateExprOfDbContext(_ctx, getState());
9867 		enterRule(_localctx, 168, RULE_privateExprOfDb);
9868 		try {
9869 			setState(1845);
9870 			_errHandler.sync(this);
9871 			switch (_input.LA(1)) {
9872 			case FIRST_VALUE:
9873 			case LAST_VALUE:
9874 				enterOuterAlt(_localctx, 1);
9875 				{
9876 				setState(1841);
9877 				windowFunction();
9878 				}
9879 				break;
9880 			case IDENTIFIER_:
9881 				enterOuterAlt(_localctx, 2);
9882 				{
9883 				setState(1842);
9884 				atTimeZoneExpr();
9885 				}
9886 				break;
9887 			case CAST:
9888 				enterOuterAlt(_localctx, 3);
9889 				{
9890 				setState(1843);
9891 				castExpr();
9892 				}
9893 				break;
9894 			case CONVERT:
9895 				enterOuterAlt(_localctx, 4);
9896 				{
9897 				setState(1844);
9898 				convertExpr();
9899 				}
9900 				break;
9901 			default:
9902 				throw new NoViableAltException(this);
9903 			}
9904 		}
9905 		catch (RecognitionException re) {
9906 			_localctx.exception = re;
9907 			_errHandler.reportError(this, re);
9908 			_errHandler.recover(this, re);
9909 		}
9910 		finally {
9911 			exitRule();
9912 		}
9913 		return _localctx;
9914 	}
9915 
9916 	public static class OrderByClauseContext extends ParserRuleContext {
9917 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
9918 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
9919 		public List<OrderByItemContext> orderByItem() {
9920 			return getRuleContexts(OrderByItemContext.class);
9921 		}
9922 		public OrderByItemContext orderByItem(int i) {
9923 			return getRuleContext(OrderByItemContext.class,i);
9924 		}
9925 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
9926 		public TerminalNode COMMA_(int i) {
9927 			return getToken(SQLServerStatementParser.COMMA_, i);
9928 		}
9929 		public TerminalNode OFFSET() { return getToken(SQLServerStatementParser.OFFSET, 0); }
9930 		public List<ExprContext> expr() {
9931 			return getRuleContexts(ExprContext.class);
9932 		}
9933 		public ExprContext expr(int i) {
9934 			return getRuleContext(ExprContext.class,i);
9935 		}
9936 		public List<TerminalNode> ROW() { return getTokens(SQLServerStatementParser.ROW); }
9937 		public TerminalNode ROW(int i) {
9938 			return getToken(SQLServerStatementParser.ROW, i);
9939 		}
9940 		public List<TerminalNode> ROWS() { return getTokens(SQLServerStatementParser.ROWS); }
9941 		public TerminalNode ROWS(int i) {
9942 			return getToken(SQLServerStatementParser.ROWS, i);
9943 		}
9944 		public TerminalNode FETCH() { return getToken(SQLServerStatementParser.FETCH, 0); }
9945 		public TerminalNode ONLY() { return getToken(SQLServerStatementParser.ONLY, 0); }
9946 		public TerminalNode FIRST() { return getToken(SQLServerStatementParser.FIRST, 0); }
9947 		public TerminalNode NEXT() { return getToken(SQLServerStatementParser.NEXT, 0); }
9948 		public OrderByClauseContext(ParserRuleContext parent, int invokingState) {
9949 			super(parent, invokingState);
9950 		}
9951 		@Override public int getRuleIndex() { return RULE_orderByClause; }
9952 		@Override
9953 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
9954 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOrderByClause(this);
9955 			else return visitor.visitChildren(this);
9956 		}
9957 	}
9958 
9959 	public final OrderByClauseContext orderByClause() throws RecognitionException {
9960 		OrderByClauseContext _localctx = new OrderByClauseContext(_ctx, getState());
9961 		enterRule(_localctx, 170, RULE_orderByClause);
9962 		int _la;
9963 		try {
9964 			enterOuterAlt(_localctx, 1);
9965 			{
9966 			setState(1847);
9967 			match(ORDER);
9968 			setState(1848);
9969 			match(BY);
9970 			setState(1849);
9971 			orderByItem();
9972 			setState(1854);
9973 			_errHandler.sync(this);
9974 			_la = _input.LA(1);
9975 			while (_la==COMMA_) {
9976 				{
9977 				{
9978 				setState(1850);
9979 				match(COMMA_);
9980 				setState(1851);
9981 				orderByItem();
9982 				}
9983 				}
9984 				setState(1856);
9985 				_errHandler.sync(this);
9986 				_la = _input.LA(1);
9987 			}
9988 			setState(1868);
9989 			_errHandler.sync(this);
9990 			_la = _input.LA(1);
9991 			if (_la==OFFSET) {
9992 				{
9993 				setState(1857);
9994 				match(OFFSET);
9995 				setState(1858);
9996 				expr(0);
9997 				setState(1859);
9998 				_la = _input.LA(1);
9999 				if ( !(_la==ROW || _la==ROWS) ) {
10000 				_errHandler.recoverInline(this);
10001 				}
10002 				else {
10003 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10004 					_errHandler.reportMatch(this);
10005 					consume();
10006 				}
10007 				setState(1866);
10008 				_errHandler.sync(this);
10009 				_la = _input.LA(1);
10010 				if (_la==FETCH) {
10011 					{
10012 					setState(1860);
10013 					match(FETCH);
10014 					setState(1861);
10015 					_la = _input.LA(1);
10016 					if ( !(_la==NEXT || _la==FIRST) ) {
10017 					_errHandler.recoverInline(this);
10018 					}
10019 					else {
10020 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10021 						_errHandler.reportMatch(this);
10022 						consume();
10023 					}
10024 					setState(1862);
10025 					expr(0);
10026 					setState(1863);
10027 					_la = _input.LA(1);
10028 					if ( !(_la==ROW || _la==ROWS) ) {
10029 					_errHandler.recoverInline(this);
10030 					}
10031 					else {
10032 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10033 						_errHandler.reportMatch(this);
10034 						consume();
10035 					}
10036 					setState(1864);
10037 					match(ONLY);
10038 					}
10039 				}
10040 
10041 				}
10042 			}
10043 
10044 			}
10045 		}
10046 		catch (RecognitionException re) {
10047 			_localctx.exception = re;
10048 			_errHandler.reportError(this, re);
10049 			_errHandler.recover(this, re);
10050 		}
10051 		finally {
10052 			exitRule();
10053 		}
10054 		return _localctx;
10055 	}
10056 
10057 	public static class OrderByItemContext extends ParserRuleContext {
10058 		public ColumnNameContext columnName() {
10059 			return getRuleContext(ColumnNameContext.class,0);
10060 		}
10061 		public NumberLiteralsContext numberLiterals() {
10062 			return getRuleContext(NumberLiteralsContext.class,0);
10063 		}
10064 		public ExprContext expr() {
10065 			return getRuleContext(ExprContext.class,0);
10066 		}
10067 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
10068 		public IdentifierContext identifier() {
10069 			return getRuleContext(IdentifierContext.class,0);
10070 		}
10071 		public TerminalNode ASC() { return getToken(SQLServerStatementParser.ASC, 0); }
10072 		public TerminalNode DESC() { return getToken(SQLServerStatementParser.DESC, 0); }
10073 		public OrderByItemContext(ParserRuleContext parent, int invokingState) {
10074 			super(parent, invokingState);
10075 		}
10076 		@Override public int getRuleIndex() { return RULE_orderByItem; }
10077 		@Override
10078 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10079 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOrderByItem(this);
10080 			else return visitor.visitChildren(this);
10081 		}
10082 	}
10083 
10084 	public final OrderByItemContext orderByItem() throws RecognitionException {
10085 		OrderByItemContext _localctx = new OrderByItemContext(_ctx, getState());
10086 		enterRule(_localctx, 172, RULE_orderByItem);
10087 		int _la;
10088 		try {
10089 			enterOuterAlt(_localctx, 1);
10090 			{
10091 			setState(1873);
10092 			_errHandler.sync(this);
10093 			switch ( getInterpreter().adaptivePredict(_input,105,_ctx) ) {
10094 			case 1:
10095 				{
10096 				setState(1870);
10097 				columnName();
10098 				}
10099 				break;
10100 			case 2:
10101 				{
10102 				setState(1871);
10103 				numberLiterals();
10104 				}
10105 				break;
10106 			case 3:
10107 				{
10108 				setState(1872);
10109 				expr(0);
10110 				}
10111 				break;
10112 			}
10113 			setState(1877);
10114 			_errHandler.sync(this);
10115 			_la = _input.LA(1);
10116 			if (_la==COLLATE) {
10117 				{
10118 				setState(1875);
10119 				match(COLLATE);
10120 				setState(1876);
10121 				identifier();
10122 				}
10123 			}
10124 
10125 			setState(1880);
10126 			_errHandler.sync(this);
10127 			_la = _input.LA(1);
10128 			if (_la==ASC || _la==DESC) {
10129 				{
10130 				setState(1879);
10131 				_la = _input.LA(1);
10132 				if ( !(_la==ASC || _la==DESC) ) {
10133 				_errHandler.recoverInline(this);
10134 				}
10135 				else {
10136 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10137 					_errHandler.reportMatch(this);
10138 					consume();
10139 				}
10140 				}
10141 			}
10142 
10143 			}
10144 		}
10145 		catch (RecognitionException re) {
10146 			_localctx.exception = re;
10147 			_errHandler.reportError(this, re);
10148 			_errHandler.recover(this, re);
10149 		}
10150 		finally {
10151 			exitRule();
10152 		}
10153 		return _localctx;
10154 	}
10155 
10156 	public static class DataTypeContext extends ParserRuleContext {
10157 		public DataTypeNameContext dataTypeName() {
10158 			return getRuleContext(DataTypeNameContext.class,0);
10159 		}
10160 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
10161 			return getRuleContexts(IgnoredIdentifierContext.class);
10162 		}
10163 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
10164 			return getRuleContext(IgnoredIdentifierContext.class,i);
10165 		}
10166 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
10167 		public DataTypeLengthContext dataTypeLength() {
10168 			return getRuleContext(DataTypeLengthContext.class,0);
10169 		}
10170 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
10171 		public TerminalNode MAX() { return getToken(SQLServerStatementParser.MAX, 0); }
10172 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
10173 		public TerminalNode CONTENT() { return getToken(SQLServerStatementParser.CONTENT, 0); }
10174 		public TerminalNode DOCUMENT() { return getToken(SQLServerStatementParser.DOCUMENT, 0); }
10175 		public DataTypeContext(ParserRuleContext parent, int invokingState) {
10176 			super(parent, invokingState);
10177 		}
10178 		@Override public int getRuleIndex() { return RULE_dataType; }
10179 		@Override
10180 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10181 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataType(this);
10182 			else return visitor.visitChildren(this);
10183 		}
10184 	}
10185 
10186 	public final DataTypeContext dataType() throws RecognitionException {
10187 		DataTypeContext _localctx = new DataTypeContext(_ctx, getState());
10188 		enterRule(_localctx, 174, RULE_dataType);
10189 		int _la;
10190 		try {
10191 			enterOuterAlt(_localctx, 1);
10192 			{
10193 			setState(1885);
10194 			_errHandler.sync(this);
10195 			switch ( getInterpreter().adaptivePredict(_input,108,_ctx) ) {
10196 			case 1:
10197 				{
10198 				setState(1882);
10199 				ignoredIdentifier();
10200 				setState(1883);
10201 				match(DOT_);
10202 				}
10203 				break;
10204 			}
10205 			setState(1887);
10206 			dataTypeName();
10207 			setState(1899);
10208 			_errHandler.sync(this);
10209 			switch ( getInterpreter().adaptivePredict(_input,110,_ctx) ) {
10210 			case 1:
10211 				{
10212 				setState(1888);
10213 				dataTypeLength();
10214 				}
10215 				break;
10216 			case 2:
10217 				{
10218 				setState(1889);
10219 				match(LP_);
10220 				setState(1890);
10221 				match(MAX);
10222 				setState(1891);
10223 				match(RP_);
10224 				}
10225 				break;
10226 			case 3:
10227 				{
10228 				setState(1892);
10229 				match(LP_);
10230 				setState(1894);
10231 				_errHandler.sync(this);
10232 				_la = _input.LA(1);
10233 				if (_la==CONTENT || _la==DOCUMENT) {
10234 					{
10235 					setState(1893);
10236 					_la = _input.LA(1);
10237 					if ( !(_la==CONTENT || _la==DOCUMENT) ) {
10238 					_errHandler.recoverInline(this);
10239 					}
10240 					else {
10241 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10242 						_errHandler.reportMatch(this);
10243 						consume();
10244 					}
10245 					}
10246 				}
10247 
10248 				setState(1896);
10249 				ignoredIdentifier();
10250 				setState(1897);
10251 				match(RP_);
10252 				}
10253 				break;
10254 			}
10255 			}
10256 		}
10257 		catch (RecognitionException re) {
10258 			_localctx.exception = re;
10259 			_errHandler.reportError(this, re);
10260 			_errHandler.recover(this, re);
10261 		}
10262 		finally {
10263 			exitRule();
10264 		}
10265 		return _localctx;
10266 	}
10267 
10268 	public static class DataTypeNameContext extends ParserRuleContext {
10269 		public TerminalNode BIGINT() { return getToken(SQLServerStatementParser.BIGINT, 0); }
10270 		public TerminalNode NUMERIC() { return getToken(SQLServerStatementParser.NUMERIC, 0); }
10271 		public TerminalNode BIT() { return getToken(SQLServerStatementParser.BIT, 0); }
10272 		public TerminalNode SMALLINT() { return getToken(SQLServerStatementParser.SMALLINT, 0); }
10273 		public TerminalNode DECIMAL() { return getToken(SQLServerStatementParser.DECIMAL, 0); }
10274 		public TerminalNode SMALLMONEY() { return getToken(SQLServerStatementParser.SMALLMONEY, 0); }
10275 		public TerminalNode INT() { return getToken(SQLServerStatementParser.INT, 0); }
10276 		public TerminalNode TINYINT() { return getToken(SQLServerStatementParser.TINYINT, 0); }
10277 		public TerminalNode MONEY() { return getToken(SQLServerStatementParser.MONEY, 0); }
10278 		public TerminalNode FLOAT() { return getToken(SQLServerStatementParser.FLOAT, 0); }
10279 		public TerminalNode REAL() { return getToken(SQLServerStatementParser.REAL, 0); }
10280 		public TerminalNode DATE() { return getToken(SQLServerStatementParser.DATE, 0); }
10281 		public TerminalNode DATETIMEOFFSET() { return getToken(SQLServerStatementParser.DATETIMEOFFSET, 0); }
10282 		public TerminalNode SMALLDATETIME() { return getToken(SQLServerStatementParser.SMALLDATETIME, 0); }
10283 		public TerminalNode DATETIME() { return getToken(SQLServerStatementParser.DATETIME, 0); }
10284 		public TerminalNode DATETIME2() { return getToken(SQLServerStatementParser.DATETIME2, 0); }
10285 		public TerminalNode TIME() { return getToken(SQLServerStatementParser.TIME, 0); }
10286 		public TerminalNode CHAR() { return getToken(SQLServerStatementParser.CHAR, 0); }
10287 		public TerminalNode VARCHAR() { return getToken(SQLServerStatementParser.VARCHAR, 0); }
10288 		public TerminalNode TEXT() { return getToken(SQLServerStatementParser.TEXT, 0); }
10289 		public TerminalNode NCHAR() { return getToken(SQLServerStatementParser.NCHAR, 0); }
10290 		public TerminalNode NVARCHAR() { return getToken(SQLServerStatementParser.NVARCHAR, 0); }
10291 		public TerminalNode NTEXT() { return getToken(SQLServerStatementParser.NTEXT, 0); }
10292 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
10293 		public TerminalNode VARBINARY() { return getToken(SQLServerStatementParser.VARBINARY, 0); }
10294 		public TerminalNode IMAGE() { return getToken(SQLServerStatementParser.IMAGE, 0); }
10295 		public TerminalNode SQL_VARIANT() { return getToken(SQLServerStatementParser.SQL_VARIANT, 0); }
10296 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
10297 		public TerminalNode UNIQUEIDENTIFIER() { return getToken(SQLServerStatementParser.UNIQUEIDENTIFIER, 0); }
10298 		public TerminalNode HIERARCHYID() { return getToken(SQLServerStatementParser.HIERARCHYID, 0); }
10299 		public TerminalNode GEOMETRY() { return getToken(SQLServerStatementParser.GEOMETRY, 0); }
10300 		public TerminalNode GEOGRAPHY() { return getToken(SQLServerStatementParser.GEOGRAPHY, 0); }
10301 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
10302 		public TerminalNode INTEGER() { return getToken(SQLServerStatementParser.INTEGER, 0); }
10303 		public DataTypeNameContext(ParserRuleContext parent, int invokingState) {
10304 			super(parent, invokingState);
10305 		}
10306 		@Override public int getRuleIndex() { return RULE_dataTypeName; }
10307 		@Override
10308 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10309 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataTypeName(this);
10310 			else return visitor.visitChildren(this);
10311 		}
10312 	}
10313 
10314 	public final DataTypeNameContext dataTypeName() throws RecognitionException {
10315 		DataTypeNameContext _localctx = new DataTypeNameContext(_ctx, getState());
10316 		enterRule(_localctx, 176, RULE_dataTypeName);
10317 		int _la;
10318 		try {
10319 			enterOuterAlt(_localctx, 1);
10320 			{
10321 			setState(1901);
10322 			_la = _input.LA(1);
10323 			if ( !(((((_la - 131)) & ~0x3f) == 0 && ((1L << (_la - 131)) & ((1L << (CHAR - 131)) | (1L << (DATE - 131)) | (1L << (TIME - 131)) | (1L << (INTEGER - 131)) | (1L << (REAL - 131)) | (1L << (DECIMAL - 131)) | (1L << (BIT - 131)) | (1L << (SMALLINT - 131)) | (1L << (INT - 131)) | (1L << (TINYINT - 131)) | (1L << (NUMERIC - 131)) | (1L << (FLOAT - 131)) | (1L << (BIGINT - 131)) | (1L << (TEXT - 131)) | (1L << (VARCHAR - 131)))) != 0) || _la==BINARY || _la==XML || ((((_la - 450)) & ~0x3f) == 0 && ((1L << (_la - 450)) & ((1L << (MONEY - 450)) | (1L << (SMALLMONEY - 450)) | (1L << (DATETIMEOFFSET - 450)) | (1L << (DATETIME - 450)) | (1L << (DATETIME2 - 450)) | (1L << (SMALLDATETIME - 450)) | (1L << (NCHAR - 450)) | (1L << (NVARCHAR - 450)) | (1L << (NTEXT - 450)) | (1L << (VARBINARY - 450)) | (1L << (IMAGE - 450)) | (1L << (SQL_VARIANT - 450)) | (1L << (UNIQUEIDENTIFIER - 450)) | (1L << (HIERARCHYID - 450)) | (1L << (GEOMETRY - 450)) | (1L << (GEOGRAPHY - 450)))) != 0) || _la==IDENTIFIER_) ) {
10324 			_errHandler.recoverInline(this);
10325 			}
10326 			else {
10327 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10328 				_errHandler.reportMatch(this);
10329 				consume();
10330 			}
10331 			}
10332 		}
10333 		catch (RecognitionException re) {
10334 			_localctx.exception = re;
10335 			_errHandler.reportError(this, re);
10336 			_errHandler.recover(this, re);
10337 		}
10338 		finally {
10339 			exitRule();
10340 		}
10341 		return _localctx;
10342 	}
10343 
10344 	public static class AtTimeZoneExprContext extends ParserRuleContext {
10345 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
10346 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
10347 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
10348 		public TerminalNode TIME() { return getToken(SQLServerStatementParser.TIME, 0); }
10349 		public TerminalNode ZONE() { return getToken(SQLServerStatementParser.ZONE, 0); }
10350 		public AtTimeZoneExprContext(ParserRuleContext parent, int invokingState) {
10351 			super(parent, invokingState);
10352 		}
10353 		@Override public int getRuleIndex() { return RULE_atTimeZoneExpr; }
10354 		@Override
10355 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10356 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAtTimeZoneExpr(this);
10357 			else return visitor.visitChildren(this);
10358 		}
10359 	}
10360 
10361 	public final AtTimeZoneExprContext atTimeZoneExpr() throws RecognitionException {
10362 		AtTimeZoneExprContext _localctx = new AtTimeZoneExprContext(_ctx, getState());
10363 		enterRule(_localctx, 178, RULE_atTimeZoneExpr);
10364 		int _la;
10365 		try {
10366 			enterOuterAlt(_localctx, 1);
10367 			{
10368 			setState(1903);
10369 			match(IDENTIFIER_);
10370 			setState(1907);
10371 			_errHandler.sync(this);
10372 			_la = _input.LA(1);
10373 			if (_la==WITH) {
10374 				{
10375 				setState(1904);
10376 				match(WITH);
10377 				setState(1905);
10378 				match(TIME);
10379 				setState(1906);
10380 				match(ZONE);
10381 				}
10382 			}
10383 
10384 			setState(1909);
10385 			match(STRING_);
10386 			}
10387 		}
10388 		catch (RecognitionException re) {
10389 			_localctx.exception = re;
10390 			_errHandler.reportError(this, re);
10391 			_errHandler.recover(this, re);
10392 		}
10393 		finally {
10394 			exitRule();
10395 		}
10396 		return _localctx;
10397 	}
10398 
10399 	public static class CastExprContext extends ParserRuleContext {
10400 		public TerminalNode CAST() { return getToken(SQLServerStatementParser.CAST, 0); }
10401 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
10402 		public TerminalNode LP_(int i) {
10403 			return getToken(SQLServerStatementParser.LP_, i);
10404 		}
10405 		public ExprContext expr() {
10406 			return getRuleContext(ExprContext.class,0);
10407 		}
10408 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
10409 		public DataTypeContext dataType() {
10410 			return getRuleContext(DataTypeContext.class,0);
10411 		}
10412 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
10413 		public TerminalNode RP_(int i) {
10414 			return getToken(SQLServerStatementParser.RP_, i);
10415 		}
10416 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
10417 		public CastExprContext(ParserRuleContext parent, int invokingState) {
10418 			super(parent, invokingState);
10419 		}
10420 		@Override public int getRuleIndex() { return RULE_castExpr; }
10421 		@Override
10422 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10423 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCastExpr(this);
10424 			else return visitor.visitChildren(this);
10425 		}
10426 	}
10427 
10428 	public final CastExprContext castExpr() throws RecognitionException {
10429 		CastExprContext _localctx = new CastExprContext(_ctx, getState());
10430 		enterRule(_localctx, 180, RULE_castExpr);
10431 		int _la;
10432 		try {
10433 			enterOuterAlt(_localctx, 1);
10434 			{
10435 			setState(1911);
10436 			match(CAST);
10437 			setState(1912);
10438 			match(LP_);
10439 			setState(1913);
10440 			expr(0);
10441 			setState(1914);
10442 			match(AS);
10443 			setState(1915);
10444 			dataType();
10445 			setState(1919);
10446 			_errHandler.sync(this);
10447 			_la = _input.LA(1);
10448 			if (_la==LP_) {
10449 				{
10450 				setState(1916);
10451 				match(LP_);
10452 				setState(1917);
10453 				match(NUMBER_);
10454 				setState(1918);
10455 				match(RP_);
10456 				}
10457 			}
10458 
10459 			setState(1921);
10460 			match(RP_);
10461 			}
10462 		}
10463 		catch (RecognitionException re) {
10464 			_localctx.exception = re;
10465 			_errHandler.reportError(this, re);
10466 			_errHandler.recover(this, re);
10467 		}
10468 		finally {
10469 			exitRule();
10470 		}
10471 		return _localctx;
10472 	}
10473 
10474 	public static class ConvertExprContext extends ParserRuleContext {
10475 		public TerminalNode CONVERT() { return getToken(SQLServerStatementParser.CONVERT, 0); }
10476 		public DataTypeContext dataType() {
10477 			return getRuleContext(DataTypeContext.class,0);
10478 		}
10479 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
10480 		public TerminalNode COMMA_(int i) {
10481 			return getToken(SQLServerStatementParser.COMMA_, i);
10482 		}
10483 		public ExprContext expr() {
10484 			return getRuleContext(ExprContext.class,0);
10485 		}
10486 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
10487 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
10488 		public TerminalNode NUMBER_(int i) {
10489 			return getToken(SQLServerStatementParser.NUMBER_, i);
10490 		}
10491 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
10492 		public ConvertExprContext(ParserRuleContext parent, int invokingState) {
10493 			super(parent, invokingState);
10494 		}
10495 		@Override public int getRuleIndex() { return RULE_convertExpr; }
10496 		@Override
10497 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10498 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConvertExpr(this);
10499 			else return visitor.visitChildren(this);
10500 		}
10501 	}
10502 
10503 	public final ConvertExprContext convertExpr() throws RecognitionException {
10504 		ConvertExprContext _localctx = new ConvertExprContext(_ctx, getState());
10505 		enterRule(_localctx, 182, RULE_convertExpr);
10506 		int _la;
10507 		try {
10508 			enterOuterAlt(_localctx, 1);
10509 			{
10510 			setState(1923);
10511 			match(CONVERT);
10512 			{
10513 			setState(1924);
10514 			dataType();
10515 			setState(1928);
10516 			_errHandler.sync(this);
10517 			_la = _input.LA(1);
10518 			if (_la==LP_) {
10519 				{
10520 				setState(1925);
10521 				match(LP_);
10522 				setState(1926);
10523 				match(NUMBER_);
10524 				setState(1927);
10525 				match(RP_);
10526 				}
10527 			}
10528 
10529 			setState(1930);
10530 			match(COMMA_);
10531 			setState(1931);
10532 			expr(0);
10533 			setState(1934);
10534 			_errHandler.sync(this);
10535 			switch ( getInterpreter().adaptivePredict(_input,114,_ctx) ) {
10536 			case 1:
10537 				{
10538 				setState(1932);
10539 				match(COMMA_);
10540 				setState(1933);
10541 				match(NUMBER_);
10542 				}
10543 				break;
10544 			}
10545 			}
10546 			}
10547 		}
10548 		catch (RecognitionException re) {
10549 			_localctx.exception = re;
10550 			_errHandler.reportError(this, re);
10551 			_errHandler.recover(this, re);
10552 		}
10553 		finally {
10554 			exitRule();
10555 		}
10556 		return _localctx;
10557 	}
10558 
10559 	public static class WindowFunctionContext extends ParserRuleContext {
10560 		public Token funcName;
10561 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
10562 		public ExprContext expr() {
10563 			return getRuleContext(ExprContext.class,0);
10564 		}
10565 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
10566 		public OverClauseContext overClause() {
10567 			return getRuleContext(OverClauseContext.class,0);
10568 		}
10569 		public TerminalNode FIRST_VALUE() { return getToken(SQLServerStatementParser.FIRST_VALUE, 0); }
10570 		public TerminalNode LAST_VALUE() { return getToken(SQLServerStatementParser.LAST_VALUE, 0); }
10571 		public NullTreatmentContext nullTreatment() {
10572 			return getRuleContext(NullTreatmentContext.class,0);
10573 		}
10574 		public WindowFunctionContext(ParserRuleContext parent, int invokingState) {
10575 			super(parent, invokingState);
10576 		}
10577 		@Override public int getRuleIndex() { return RULE_windowFunction; }
10578 		@Override
10579 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10580 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFunction(this);
10581 			else return visitor.visitChildren(this);
10582 		}
10583 	}
10584 
10585 	public final WindowFunctionContext windowFunction() throws RecognitionException {
10586 		WindowFunctionContext _localctx = new WindowFunctionContext(_ctx, getState());
10587 		enterRule(_localctx, 184, RULE_windowFunction);
10588 		int _la;
10589 		try {
10590 			enterOuterAlt(_localctx, 1);
10591 			{
10592 			setState(1936);
10593 			((WindowFunctionContext)_localctx).funcName = _input.LT(1);
10594 			_la = _input.LA(1);
10595 			if ( !(_la==FIRST_VALUE || _la==LAST_VALUE) ) {
10596 				((WindowFunctionContext)_localctx).funcName = (Token)_errHandler.recoverInline(this);
10597 			}
10598 			else {
10599 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10600 				_errHandler.reportMatch(this);
10601 				consume();
10602 			}
10603 			setState(1937);
10604 			match(LP_);
10605 			setState(1938);
10606 			expr(0);
10607 			setState(1939);
10608 			match(RP_);
10609 			setState(1941);
10610 			_errHandler.sync(this);
10611 			_la = _input.LA(1);
10612 			if (_la==RESPECT || _la==IGNORE) {
10613 				{
10614 				setState(1940);
10615 				nullTreatment();
10616 				}
10617 			}
10618 
10619 			setState(1943);
10620 			overClause();
10621 			}
10622 		}
10623 		catch (RecognitionException re) {
10624 			_localctx.exception = re;
10625 			_errHandler.reportError(this, re);
10626 			_errHandler.recover(this, re);
10627 		}
10628 		finally {
10629 			exitRule();
10630 		}
10631 		return _localctx;
10632 	}
10633 
10634 	public static class NullTreatmentContext extends ParserRuleContext {
10635 		public TerminalNode NULLS() { return getToken(SQLServerStatementParser.NULLS, 0); }
10636 		public TerminalNode RESPECT() { return getToken(SQLServerStatementParser.RESPECT, 0); }
10637 		public TerminalNode IGNORE() { return getToken(SQLServerStatementParser.IGNORE, 0); }
10638 		public NullTreatmentContext(ParserRuleContext parent, int invokingState) {
10639 			super(parent, invokingState);
10640 		}
10641 		@Override public int getRuleIndex() { return RULE_nullTreatment; }
10642 		@Override
10643 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10644 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNullTreatment(this);
10645 			else return visitor.visitChildren(this);
10646 		}
10647 	}
10648 
10649 	public final NullTreatmentContext nullTreatment() throws RecognitionException {
10650 		NullTreatmentContext _localctx = new NullTreatmentContext(_ctx, getState());
10651 		enterRule(_localctx, 186, RULE_nullTreatment);
10652 		int _la;
10653 		try {
10654 			enterOuterAlt(_localctx, 1);
10655 			{
10656 			setState(1945);
10657 			_la = _input.LA(1);
10658 			if ( !(_la==RESPECT || _la==IGNORE) ) {
10659 			_errHandler.recoverInline(this);
10660 			}
10661 			else {
10662 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10663 				_errHandler.reportMatch(this);
10664 				consume();
10665 			}
10666 			setState(1946);
10667 			match(NULLS);
10668 			}
10669 		}
10670 		catch (RecognitionException re) {
10671 			_localctx.exception = re;
10672 			_errHandler.reportError(this, re);
10673 			_errHandler.recover(this, re);
10674 		}
10675 		finally {
10676 			exitRule();
10677 		}
10678 		return _localctx;
10679 	}
10680 
10681 	public static class OverClauseContext extends ParserRuleContext {
10682 		public TerminalNode OVER() { return getToken(SQLServerStatementParser.OVER, 0); }
10683 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
10684 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
10685 		public PartitionByClauseContext partitionByClause() {
10686 			return getRuleContext(PartitionByClauseContext.class,0);
10687 		}
10688 		public OrderByClauseContext orderByClause() {
10689 			return getRuleContext(OrderByClauseContext.class,0);
10690 		}
10691 		public RowRangeClauseContext rowRangeClause() {
10692 			return getRuleContext(RowRangeClauseContext.class,0);
10693 		}
10694 		public OverClauseContext(ParserRuleContext parent, int invokingState) {
10695 			super(parent, invokingState);
10696 		}
10697 		@Override public int getRuleIndex() { return RULE_overClause; }
10698 		@Override
10699 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10700 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOverClause(this);
10701 			else return visitor.visitChildren(this);
10702 		}
10703 	}
10704 
10705 	public final OverClauseContext overClause() throws RecognitionException {
10706 		OverClauseContext _localctx = new OverClauseContext(_ctx, getState());
10707 		enterRule(_localctx, 188, RULE_overClause);
10708 		int _la;
10709 		try {
10710 			enterOuterAlt(_localctx, 1);
10711 			{
10712 			setState(1948);
10713 			match(OVER);
10714 			setState(1949);
10715 			match(LP_);
10716 			setState(1951);
10717 			_errHandler.sync(this);
10718 			_la = _input.LA(1);
10719 			if (_la==PARTITION) {
10720 				{
10721 				setState(1950);
10722 				partitionByClause();
10723 				}
10724 			}
10725 
10726 			setState(1954);
10727 			_errHandler.sync(this);
10728 			_la = _input.LA(1);
10729 			if (_la==ORDER) {
10730 				{
10731 				setState(1953);
10732 				orderByClause();
10733 				}
10734 			}
10735 
10736 			setState(1957);
10737 			_errHandler.sync(this);
10738 			_la = _input.LA(1);
10739 			if (_la==ROWS || _la==RANGE) {
10740 				{
10741 				setState(1956);
10742 				rowRangeClause();
10743 				}
10744 			}
10745 
10746 			setState(1959);
10747 			match(RP_);
10748 			}
10749 		}
10750 		catch (RecognitionException re) {
10751 			_localctx.exception = re;
10752 			_errHandler.reportError(this, re);
10753 			_errHandler.recover(this, re);
10754 		}
10755 		finally {
10756 			exitRule();
10757 		}
10758 		return _localctx;
10759 	}
10760 
10761 	public static class PartitionByClauseContext extends ParserRuleContext {
10762 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
10763 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
10764 		public List<ExprContext> expr() {
10765 			return getRuleContexts(ExprContext.class);
10766 		}
10767 		public ExprContext expr(int i) {
10768 			return getRuleContext(ExprContext.class,i);
10769 		}
10770 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
10771 		public TerminalNode COMMA_(int i) {
10772 			return getToken(SQLServerStatementParser.COMMA_, i);
10773 		}
10774 		public PartitionByClauseContext(ParserRuleContext parent, int invokingState) {
10775 			super(parent, invokingState);
10776 		}
10777 		@Override public int getRuleIndex() { return RULE_partitionByClause; }
10778 		@Override
10779 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10780 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionByClause(this);
10781 			else return visitor.visitChildren(this);
10782 		}
10783 	}
10784 
10785 	public final PartitionByClauseContext partitionByClause() throws RecognitionException {
10786 		PartitionByClauseContext _localctx = new PartitionByClauseContext(_ctx, getState());
10787 		enterRule(_localctx, 190, RULE_partitionByClause);
10788 		int _la;
10789 		try {
10790 			enterOuterAlt(_localctx, 1);
10791 			{
10792 			setState(1961);
10793 			match(PARTITION);
10794 			setState(1962);
10795 			match(BY);
10796 			setState(1963);
10797 			expr(0);
10798 			setState(1968);
10799 			_errHandler.sync(this);
10800 			_la = _input.LA(1);
10801 			while (_la==COMMA_) {
10802 				{
10803 				{
10804 				setState(1964);
10805 				match(COMMA_);
10806 				setState(1965);
10807 				expr(0);
10808 				}
10809 				}
10810 				setState(1970);
10811 				_errHandler.sync(this);
10812 				_la = _input.LA(1);
10813 			}
10814 			}
10815 		}
10816 		catch (RecognitionException re) {
10817 			_localctx.exception = re;
10818 			_errHandler.reportError(this, re);
10819 			_errHandler.recover(this, re);
10820 		}
10821 		finally {
10822 			exitRule();
10823 		}
10824 		return _localctx;
10825 	}
10826 
10827 	public static class RowRangeClauseContext extends ParserRuleContext {
10828 		public WindowFrameExtentContext windowFrameExtent() {
10829 			return getRuleContext(WindowFrameExtentContext.class,0);
10830 		}
10831 		public TerminalNode ROWS() { return getToken(SQLServerStatementParser.ROWS, 0); }
10832 		public TerminalNode RANGE() { return getToken(SQLServerStatementParser.RANGE, 0); }
10833 		public RowRangeClauseContext(ParserRuleContext parent, int invokingState) {
10834 			super(parent, invokingState);
10835 		}
10836 		@Override public int getRuleIndex() { return RULE_rowRangeClause; }
10837 		@Override
10838 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10839 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRowRangeClause(this);
10840 			else return visitor.visitChildren(this);
10841 		}
10842 	}
10843 
10844 	public final RowRangeClauseContext rowRangeClause() throws RecognitionException {
10845 		RowRangeClauseContext _localctx = new RowRangeClauseContext(_ctx, getState());
10846 		enterRule(_localctx, 192, RULE_rowRangeClause);
10847 		int _la;
10848 		try {
10849 			enterOuterAlt(_localctx, 1);
10850 			{
10851 			setState(1971);
10852 			_la = _input.LA(1);
10853 			if ( !(_la==ROWS || _la==RANGE) ) {
10854 			_errHandler.recoverInline(this);
10855 			}
10856 			else {
10857 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
10858 				_errHandler.reportMatch(this);
10859 				consume();
10860 			}
10861 			setState(1972);
10862 			windowFrameExtent();
10863 			}
10864 		}
10865 		catch (RecognitionException re) {
10866 			_localctx.exception = re;
10867 			_errHandler.reportError(this, re);
10868 			_errHandler.recover(this, re);
10869 		}
10870 		finally {
10871 			exitRule();
10872 		}
10873 		return _localctx;
10874 	}
10875 
10876 	public static class WindowFrameExtentContext extends ParserRuleContext {
10877 		public WindowFramePrecedingContext windowFramePreceding() {
10878 			return getRuleContext(WindowFramePrecedingContext.class,0);
10879 		}
10880 		public WindowFrameBetweenContext windowFrameBetween() {
10881 			return getRuleContext(WindowFrameBetweenContext.class,0);
10882 		}
10883 		public WindowFrameExtentContext(ParserRuleContext parent, int invokingState) {
10884 			super(parent, invokingState);
10885 		}
10886 		@Override public int getRuleIndex() { return RULE_windowFrameExtent; }
10887 		@Override
10888 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10889 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameExtent(this);
10890 			else return visitor.visitChildren(this);
10891 		}
10892 	}
10893 
10894 	public final WindowFrameExtentContext windowFrameExtent() throws RecognitionException {
10895 		WindowFrameExtentContext _localctx = new WindowFrameExtentContext(_ctx, getState());
10896 		enterRule(_localctx, 194, RULE_windowFrameExtent);
10897 		try {
10898 			setState(1976);
10899 			_errHandler.sync(this);
10900 			switch (_input.LA(1)) {
10901 			case CURRENT:
10902 			case UNBOUNDED:
10903 			case NUMBER_:
10904 				enterOuterAlt(_localctx, 1);
10905 				{
10906 				setState(1974);
10907 				windowFramePreceding();
10908 				}
10909 				break;
10910 			case BETWEEN:
10911 				enterOuterAlt(_localctx, 2);
10912 				{
10913 				setState(1975);
10914 				windowFrameBetween();
10915 				}
10916 				break;
10917 			default:
10918 				throw new NoViableAltException(this);
10919 			}
10920 		}
10921 		catch (RecognitionException re) {
10922 			_localctx.exception = re;
10923 			_errHandler.reportError(this, re);
10924 			_errHandler.recover(this, re);
10925 		}
10926 		finally {
10927 			exitRule();
10928 		}
10929 		return _localctx;
10930 	}
10931 
10932 	public static class WindowFrameBetweenContext extends ParserRuleContext {
10933 		public TerminalNode BETWEEN() { return getToken(SQLServerStatementParser.BETWEEN, 0); }
10934 		public List<WindowFrameBoundContext> windowFrameBound() {
10935 			return getRuleContexts(WindowFrameBoundContext.class);
10936 		}
10937 		public WindowFrameBoundContext windowFrameBound(int i) {
10938 			return getRuleContext(WindowFrameBoundContext.class,i);
10939 		}
10940 		public TerminalNode AND() { return getToken(SQLServerStatementParser.AND, 0); }
10941 		public WindowFrameBetweenContext(ParserRuleContext parent, int invokingState) {
10942 			super(parent, invokingState);
10943 		}
10944 		@Override public int getRuleIndex() { return RULE_windowFrameBetween; }
10945 		@Override
10946 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10947 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameBetween(this);
10948 			else return visitor.visitChildren(this);
10949 		}
10950 	}
10951 
10952 	public final WindowFrameBetweenContext windowFrameBetween() throws RecognitionException {
10953 		WindowFrameBetweenContext _localctx = new WindowFrameBetweenContext(_ctx, getState());
10954 		enterRule(_localctx, 196, RULE_windowFrameBetween);
10955 		try {
10956 			enterOuterAlt(_localctx, 1);
10957 			{
10958 			setState(1978);
10959 			match(BETWEEN);
10960 			setState(1979);
10961 			windowFrameBound();
10962 			setState(1980);
10963 			match(AND);
10964 			setState(1981);
10965 			windowFrameBound();
10966 			}
10967 		}
10968 		catch (RecognitionException re) {
10969 			_localctx.exception = re;
10970 			_errHandler.reportError(this, re);
10971 			_errHandler.recover(this, re);
10972 		}
10973 		finally {
10974 			exitRule();
10975 		}
10976 		return _localctx;
10977 	}
10978 
10979 	public static class WindowFrameBoundContext extends ParserRuleContext {
10980 		public WindowFramePrecedingContext windowFramePreceding() {
10981 			return getRuleContext(WindowFramePrecedingContext.class,0);
10982 		}
10983 		public WindowFrameFollowingContext windowFrameFollowing() {
10984 			return getRuleContext(WindowFrameFollowingContext.class,0);
10985 		}
10986 		public WindowFrameBoundContext(ParserRuleContext parent, int invokingState) {
10987 			super(parent, invokingState);
10988 		}
10989 		@Override public int getRuleIndex() { return RULE_windowFrameBound; }
10990 		@Override
10991 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
10992 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameBound(this);
10993 			else return visitor.visitChildren(this);
10994 		}
10995 	}
10996 
10997 	public final WindowFrameBoundContext windowFrameBound() throws RecognitionException {
10998 		WindowFrameBoundContext _localctx = new WindowFrameBoundContext(_ctx, getState());
10999 		enterRule(_localctx, 198, RULE_windowFrameBound);
11000 		try {
11001 			setState(1985);
11002 			_errHandler.sync(this);
11003 			switch ( getInterpreter().adaptivePredict(_input,121,_ctx) ) {
11004 			case 1:
11005 				enterOuterAlt(_localctx, 1);
11006 				{
11007 				setState(1983);
11008 				windowFramePreceding();
11009 				}
11010 				break;
11011 			case 2:
11012 				enterOuterAlt(_localctx, 2);
11013 				{
11014 				setState(1984);
11015 				windowFrameFollowing();
11016 				}
11017 				break;
11018 			}
11019 		}
11020 		catch (RecognitionException re) {
11021 			_localctx.exception = re;
11022 			_errHandler.reportError(this, re);
11023 			_errHandler.recover(this, re);
11024 		}
11025 		finally {
11026 			exitRule();
11027 		}
11028 		return _localctx;
11029 	}
11030 
11031 	public static class WindowFramePrecedingContext extends ParserRuleContext {
11032 		public TerminalNode UNBOUNDED() { return getToken(SQLServerStatementParser.UNBOUNDED, 0); }
11033 		public TerminalNode PRECEDING() { return getToken(SQLServerStatementParser.PRECEDING, 0); }
11034 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
11035 		public TerminalNode CURRENT() { return getToken(SQLServerStatementParser.CURRENT, 0); }
11036 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
11037 		public WindowFramePrecedingContext(ParserRuleContext parent, int invokingState) {
11038 			super(parent, invokingState);
11039 		}
11040 		@Override public int getRuleIndex() { return RULE_windowFramePreceding; }
11041 		@Override
11042 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11043 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFramePreceding(this);
11044 			else return visitor.visitChildren(this);
11045 		}
11046 	}
11047 
11048 	public final WindowFramePrecedingContext windowFramePreceding() throws RecognitionException {
11049 		WindowFramePrecedingContext _localctx = new WindowFramePrecedingContext(_ctx, getState());
11050 		enterRule(_localctx, 200, RULE_windowFramePreceding);
11051 		try {
11052 			setState(1993);
11053 			_errHandler.sync(this);
11054 			switch (_input.LA(1)) {
11055 			case UNBOUNDED:
11056 				enterOuterAlt(_localctx, 1);
11057 				{
11058 				setState(1987);
11059 				match(UNBOUNDED);
11060 				setState(1988);
11061 				match(PRECEDING);
11062 				}
11063 				break;
11064 			case NUMBER_:
11065 				enterOuterAlt(_localctx, 2);
11066 				{
11067 				setState(1989);
11068 				match(NUMBER_);
11069 				setState(1990);
11070 				match(PRECEDING);
11071 				}
11072 				break;
11073 			case CURRENT:
11074 				enterOuterAlt(_localctx, 3);
11075 				{
11076 				setState(1991);
11077 				match(CURRENT);
11078 				setState(1992);
11079 				match(ROW);
11080 				}
11081 				break;
11082 			default:
11083 				throw new NoViableAltException(this);
11084 			}
11085 		}
11086 		catch (RecognitionException re) {
11087 			_localctx.exception = re;
11088 			_errHandler.reportError(this, re);
11089 			_errHandler.recover(this, re);
11090 		}
11091 		finally {
11092 			exitRule();
11093 		}
11094 		return _localctx;
11095 	}
11096 
11097 	public static class WindowFrameFollowingContext extends ParserRuleContext {
11098 		public TerminalNode UNBOUNDED() { return getToken(SQLServerStatementParser.UNBOUNDED, 0); }
11099 		public TerminalNode FOLLOWING() { return getToken(SQLServerStatementParser.FOLLOWING, 0); }
11100 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
11101 		public TerminalNode CURRENT() { return getToken(SQLServerStatementParser.CURRENT, 0); }
11102 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
11103 		public WindowFrameFollowingContext(ParserRuleContext parent, int invokingState) {
11104 			super(parent, invokingState);
11105 		}
11106 		@Override public int getRuleIndex() { return RULE_windowFrameFollowing; }
11107 		@Override
11108 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11109 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowFrameFollowing(this);
11110 			else return visitor.visitChildren(this);
11111 		}
11112 	}
11113 
11114 	public final WindowFrameFollowingContext windowFrameFollowing() throws RecognitionException {
11115 		WindowFrameFollowingContext _localctx = new WindowFrameFollowingContext(_ctx, getState());
11116 		enterRule(_localctx, 202, RULE_windowFrameFollowing);
11117 		try {
11118 			setState(2001);
11119 			_errHandler.sync(this);
11120 			switch (_input.LA(1)) {
11121 			case UNBOUNDED:
11122 				enterOuterAlt(_localctx, 1);
11123 				{
11124 				setState(1995);
11125 				match(UNBOUNDED);
11126 				setState(1996);
11127 				match(FOLLOWING);
11128 				}
11129 				break;
11130 			case NUMBER_:
11131 				enterOuterAlt(_localctx, 2);
11132 				{
11133 				setState(1997);
11134 				match(NUMBER_);
11135 				setState(1998);
11136 				match(FOLLOWING);
11137 				}
11138 				break;
11139 			case CURRENT:
11140 				enterOuterAlt(_localctx, 3);
11141 				{
11142 				setState(1999);
11143 				match(CURRENT);
11144 				setState(2000);
11145 				match(ROW);
11146 				}
11147 				break;
11148 			default:
11149 				throw new NoViableAltException(this);
11150 			}
11151 		}
11152 		catch (RecognitionException re) {
11153 			_localctx.exception = re;
11154 			_errHandler.reportError(this, re);
11155 			_errHandler.recover(this, re);
11156 		}
11157 		finally {
11158 			exitRule();
11159 		}
11160 		return _localctx;
11161 	}
11162 
11163 	public static class ColumnNameWithSortContext extends ParserRuleContext {
11164 		public ColumnNameContext columnName() {
11165 			return getRuleContext(ColumnNameContext.class,0);
11166 		}
11167 		public TerminalNode ASC() { return getToken(SQLServerStatementParser.ASC, 0); }
11168 		public TerminalNode DESC() { return getToken(SQLServerStatementParser.DESC, 0); }
11169 		public ColumnNameWithSortContext(ParserRuleContext parent, int invokingState) {
11170 			super(parent, invokingState);
11171 		}
11172 		@Override public int getRuleIndex() { return RULE_columnNameWithSort; }
11173 		@Override
11174 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11175 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnNameWithSort(this);
11176 			else return visitor.visitChildren(this);
11177 		}
11178 	}
11179 
11180 	public final ColumnNameWithSortContext columnNameWithSort() throws RecognitionException {
11181 		ColumnNameWithSortContext _localctx = new ColumnNameWithSortContext(_ctx, getState());
11182 		enterRule(_localctx, 204, RULE_columnNameWithSort);
11183 		int _la;
11184 		try {
11185 			enterOuterAlt(_localctx, 1);
11186 			{
11187 			setState(2003);
11188 			columnName();
11189 			setState(2005);
11190 			_errHandler.sync(this);
11191 			_la = _input.LA(1);
11192 			if (_la==ASC || _la==DESC) {
11193 				{
11194 				setState(2004);
11195 				_la = _input.LA(1);
11196 				if ( !(_la==ASC || _la==DESC) ) {
11197 				_errHandler.recoverInline(this);
11198 				}
11199 				else {
11200 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11201 					_errHandler.reportMatch(this);
11202 					consume();
11203 				}
11204 				}
11205 			}
11206 
11207 			}
11208 		}
11209 		catch (RecognitionException re) {
11210 			_localctx.exception = re;
11211 			_errHandler.reportError(this, re);
11212 			_errHandler.recover(this, re);
11213 		}
11214 		finally {
11215 			exitRule();
11216 		}
11217 		return _localctx;
11218 	}
11219 
11220 	public static class IndexOptionContext extends ParserRuleContext {
11221 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
11222 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
11223 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
11224 		public EqOnOffOptionContext eqOnOffOption() {
11225 			return getRuleContext(EqOnOffOptionContext.class,0);
11226 		}
11227 		public EqTimeContext eqTime() {
11228 			return getRuleContext(EqTimeContext.class,0);
11229 		}
11230 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
11231 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
11232 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
11233 		public CompressionOptionContext compressionOption() {
11234 			return getRuleContext(CompressionOptionContext.class,0);
11235 		}
11236 		public OnPartitionClauseContext onPartitionClause() {
11237 			return getRuleContext(OnPartitionClauseContext.class,0);
11238 		}
11239 		public IndexOptionContext(ParserRuleContext parent, int invokingState) {
11240 			super(parent, invokingState);
11241 		}
11242 		@Override public int getRuleIndex() { return RULE_indexOption; }
11243 		@Override
11244 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11245 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexOption(this);
11246 			else return visitor.visitChildren(this);
11247 		}
11248 	}
11249 
11250 	public final IndexOptionContext indexOption() throws RecognitionException {
11251 		IndexOptionContext _localctx = new IndexOptionContext(_ctx, getState());
11252 		enterRule(_localctx, 206, RULE_indexOption);
11253 		int _la;
11254 		try {
11255 			setState(2020);
11256 			_errHandler.sync(this);
11257 			switch ( getInterpreter().adaptivePredict(_input,126,_ctx) ) {
11258 			case 1:
11259 				enterOuterAlt(_localctx, 1);
11260 				{
11261 				setState(2007);
11262 				match(FILLFACTOR);
11263 				setState(2008);
11264 				match(EQ_);
11265 				setState(2009);
11266 				match(NUMBER_);
11267 				}
11268 				break;
11269 			case 2:
11270 				enterOuterAlt(_localctx, 2);
11271 				{
11272 				setState(2010);
11273 				eqOnOffOption();
11274 				}
11275 				break;
11276 			case 3:
11277 				enterOuterAlt(_localctx, 3);
11278 				{
11279 				setState(2011);
11280 				_la = _input.LA(1);
11281 				if ( !(_la==COMPRESSION_DELAY || _la==MAX_DURATION) ) {
11282 				_errHandler.recoverInline(this);
11283 				}
11284 				else {
11285 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11286 					_errHandler.reportMatch(this);
11287 					consume();
11288 				}
11289 				setState(2012);
11290 				eqTime();
11291 				}
11292 				break;
11293 			case 4:
11294 				enterOuterAlt(_localctx, 4);
11295 				{
11296 				setState(2013);
11297 				match(MAXDOP);
11298 				setState(2014);
11299 				match(EQ_);
11300 				setState(2015);
11301 				match(NUMBER_);
11302 				}
11303 				break;
11304 			case 5:
11305 				enterOuterAlt(_localctx, 5);
11306 				{
11307 				setState(2016);
11308 				compressionOption();
11309 				setState(2018);
11310 				_errHandler.sync(this);
11311 				_la = _input.LA(1);
11312 				if (_la==ON) {
11313 					{
11314 					setState(2017);
11315 					onPartitionClause();
11316 					}
11317 				}
11318 
11319 				}
11320 				break;
11321 			}
11322 		}
11323 		catch (RecognitionException re) {
11324 			_localctx.exception = re;
11325 			_errHandler.reportError(this, re);
11326 			_errHandler.recover(this, re);
11327 		}
11328 		finally {
11329 			exitRule();
11330 		}
11331 		return _localctx;
11332 	}
11333 
11334 	public static class CompressionOptionContext extends ParserRuleContext {
11335 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
11336 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
11337 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
11338 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
11339 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
11340 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
11341 		public TerminalNode COLUMNSTORE_ARCHIVE() { return getToken(SQLServerStatementParser.COLUMNSTORE_ARCHIVE, 0); }
11342 		public CompressionOptionContext(ParserRuleContext parent, int invokingState) {
11343 			super(parent, invokingState);
11344 		}
11345 		@Override public int getRuleIndex() { return RULE_compressionOption; }
11346 		@Override
11347 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11348 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCompressionOption(this);
11349 			else return visitor.visitChildren(this);
11350 		}
11351 	}
11352 
11353 	public final CompressionOptionContext compressionOption() throws RecognitionException {
11354 		CompressionOptionContext _localctx = new CompressionOptionContext(_ctx, getState());
11355 		enterRule(_localctx, 208, RULE_compressionOption);
11356 		int _la;
11357 		try {
11358 			enterOuterAlt(_localctx, 1);
11359 			{
11360 			setState(2022);
11361 			match(DATA_COMPRESSION);
11362 			setState(2023);
11363 			match(EQ_);
11364 			setState(2024);
11365 			_la = _input.LA(1);
11366 			if ( !(((((_la - 249)) & ~0x3f) == 0 && ((1L << (_la - 249)) & ((1L << (ROW - 249)) | (1L << (COLUMNSTORE - 249)) | (1L << (NONE - 249)) | (1L << (PAGE - 249)))) != 0) || _la==COLUMNSTORE_ARCHIVE) ) {
11367 			_errHandler.recoverInline(this);
11368 			}
11369 			else {
11370 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11371 				_errHandler.reportMatch(this);
11372 				consume();
11373 			}
11374 			}
11375 		}
11376 		catch (RecognitionException re) {
11377 			_localctx.exception = re;
11378 			_errHandler.reportError(this, re);
11379 			_errHandler.recover(this, re);
11380 		}
11381 		finally {
11382 			exitRule();
11383 		}
11384 		return _localctx;
11385 	}
11386 
11387 	public static class EqTimeContext extends ParserRuleContext {
11388 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
11389 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
11390 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
11391 		public EqTimeContext(ParserRuleContext parent, int invokingState) {
11392 			super(parent, invokingState);
11393 		}
11394 		@Override public int getRuleIndex() { return RULE_eqTime; }
11395 		@Override
11396 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11397 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqTime(this);
11398 			else return visitor.visitChildren(this);
11399 		}
11400 	}
11401 
11402 	public final EqTimeContext eqTime() throws RecognitionException {
11403 		EqTimeContext _localctx = new EqTimeContext(_ctx, getState());
11404 		enterRule(_localctx, 210, RULE_eqTime);
11405 		int _la;
11406 		try {
11407 			enterOuterAlt(_localctx, 1);
11408 			{
11409 			setState(2026);
11410 			match(EQ_);
11411 			setState(2027);
11412 			match(NUMBER_);
11413 			setState(2029);
11414 			_errHandler.sync(this);
11415 			_la = _input.LA(1);
11416 			if (_la==MINUTES) {
11417 				{
11418 				setState(2028);
11419 				match(MINUTES);
11420 				}
11421 			}
11422 
11423 			}
11424 		}
11425 		catch (RecognitionException re) {
11426 			_localctx.exception = re;
11427 			_errHandler.reportError(this, re);
11428 			_errHandler.recover(this, re);
11429 		}
11430 		finally {
11431 			exitRule();
11432 		}
11433 		return _localctx;
11434 	}
11435 
11436 	public static class EqOnOffOptionContext extends ParserRuleContext {
11437 		public EqKeyContext eqKey() {
11438 			return getRuleContext(EqKeyContext.class,0);
11439 		}
11440 		public EqOnOffContext eqOnOff() {
11441 			return getRuleContext(EqOnOffContext.class,0);
11442 		}
11443 		public EqOnOffOptionContext(ParserRuleContext parent, int invokingState) {
11444 			super(parent, invokingState);
11445 		}
11446 		@Override public int getRuleIndex() { return RULE_eqOnOffOption; }
11447 		@Override
11448 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11449 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqOnOffOption(this);
11450 			else return visitor.visitChildren(this);
11451 		}
11452 	}
11453 
11454 	public final EqOnOffOptionContext eqOnOffOption() throws RecognitionException {
11455 		EqOnOffOptionContext _localctx = new EqOnOffOptionContext(_ctx, getState());
11456 		enterRule(_localctx, 212, RULE_eqOnOffOption);
11457 		try {
11458 			enterOuterAlt(_localctx, 1);
11459 			{
11460 			setState(2031);
11461 			eqKey();
11462 			setState(2032);
11463 			eqOnOff();
11464 			}
11465 		}
11466 		catch (RecognitionException re) {
11467 			_localctx.exception = re;
11468 			_errHandler.reportError(this, re);
11469 			_errHandler.recover(this, re);
11470 		}
11471 		finally {
11472 			exitRule();
11473 		}
11474 		return _localctx;
11475 	}
11476 
11477 	public static class EqKeyContext extends ParserRuleContext {
11478 		public TerminalNode PAD_INDEX() { return getToken(SQLServerStatementParser.PAD_INDEX, 0); }
11479 		public TerminalNode SORT_IN_TEMPDB() { return getToken(SQLServerStatementParser.SORT_IN_TEMPDB, 0); }
11480 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
11481 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
11482 		public TerminalNode STATISTICS_INCREMENTAL() { return getToken(SQLServerStatementParser.STATISTICS_INCREMENTAL, 0); }
11483 		public TerminalNode DROP_EXISTING() { return getToken(SQLServerStatementParser.DROP_EXISTING, 0); }
11484 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
11485 		public TerminalNode RESUMABLE() { return getToken(SQLServerStatementParser.RESUMABLE, 0); }
11486 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
11487 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
11488 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
11489 		public TerminalNode OPTIMIZE_FOR_SEQUENTIAL_KEY() { return getToken(SQLServerStatementParser.OPTIMIZE_FOR_SEQUENTIAL_KEY, 0); }
11490 		public EqKeyContext(ParserRuleContext parent, int invokingState) {
11491 			super(parent, invokingState);
11492 		}
11493 		@Override public int getRuleIndex() { return RULE_eqKey; }
11494 		@Override
11495 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11496 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqKey(this);
11497 			else return visitor.visitChildren(this);
11498 		}
11499 	}
11500 
11501 	public final EqKeyContext eqKey() throws RecognitionException {
11502 		EqKeyContext _localctx = new EqKeyContext(_ctx, getState());
11503 		enterRule(_localctx, 214, RULE_eqKey);
11504 		int _la;
11505 		try {
11506 			enterOuterAlt(_localctx, 1);
11507 			{
11508 			setState(2034);
11509 			_la = _input.LA(1);
11510 			if ( !(_la==ONLINE || _la==RESUMABLE || ((((_la - 406)) & ~0x3f) == 0 && ((1L << (_la - 406)) & ((1L << (ALLOW_PAGE_LOCKS - 406)) | (1L << (ALLOW_ROW_LOCKS - 406)) | (1L << (COMPRESSION_DELAY - 406)) | (1L << (STATISTICS_INCREMENTAL - 406)) | (1L << (STATISTICS_NORECOMPUTE - 406)) | (1L << (SORT_IN_TEMPDB - 406)) | (1L << (IGNORE_DUP_KEY - 406)) | (1L << (PAD_INDEX - 406)) | (1L << (DROP_EXISTING - 406)))) != 0) || _la==OPTIMIZE_FOR_SEQUENTIAL_KEY) ) {
11511 			_errHandler.recoverInline(this);
11512 			}
11513 			else {
11514 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11515 				_errHandler.reportMatch(this);
11516 				consume();
11517 			}
11518 			}
11519 		}
11520 		catch (RecognitionException re) {
11521 			_localctx.exception = re;
11522 			_errHandler.reportError(this, re);
11523 			_errHandler.recover(this, re);
11524 		}
11525 		finally {
11526 			exitRule();
11527 		}
11528 		return _localctx;
11529 	}
11530 
11531 	public static class EqOnOffContext extends ParserRuleContext {
11532 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
11533 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
11534 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
11535 		public EqOnOffContext(ParserRuleContext parent, int invokingState) {
11536 			super(parent, invokingState);
11537 		}
11538 		@Override public int getRuleIndex() { return RULE_eqOnOff; }
11539 		@Override
11540 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11541 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEqOnOff(this);
11542 			else return visitor.visitChildren(this);
11543 		}
11544 	}
11545 
11546 	public final EqOnOffContext eqOnOff() throws RecognitionException {
11547 		EqOnOffContext _localctx = new EqOnOffContext(_ctx, getState());
11548 		enterRule(_localctx, 216, RULE_eqOnOff);
11549 		int _la;
11550 		try {
11551 			enterOuterAlt(_localctx, 1);
11552 			{
11553 			setState(2036);
11554 			match(EQ_);
11555 			setState(2037);
11556 			_la = _input.LA(1);
11557 			if ( !(_la==ON || _la==OFF) ) {
11558 			_errHandler.recoverInline(this);
11559 			}
11560 			else {
11561 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11562 				_errHandler.reportMatch(this);
11563 				consume();
11564 			}
11565 			}
11566 		}
11567 		catch (RecognitionException re) {
11568 			_localctx.exception = re;
11569 			_errHandler.reportError(this, re);
11570 			_errHandler.recover(this, re);
11571 		}
11572 		finally {
11573 			exitRule();
11574 		}
11575 		return _localctx;
11576 	}
11577 
11578 	public static class OnPartitionClauseContext extends ParserRuleContext {
11579 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
11580 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
11581 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
11582 		public PartitionExpressionsContext partitionExpressions() {
11583 			return getRuleContext(PartitionExpressionsContext.class,0);
11584 		}
11585 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
11586 		public OnPartitionClauseContext(ParserRuleContext parent, int invokingState) {
11587 			super(parent, invokingState);
11588 		}
11589 		@Override public int getRuleIndex() { return RULE_onPartitionClause; }
11590 		@Override
11591 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11592 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnPartitionClause(this);
11593 			else return visitor.visitChildren(this);
11594 		}
11595 	}
11596 
11597 	public final OnPartitionClauseContext onPartitionClause() throws RecognitionException {
11598 		OnPartitionClauseContext _localctx = new OnPartitionClauseContext(_ctx, getState());
11599 		enterRule(_localctx, 218, RULE_onPartitionClause);
11600 		try {
11601 			enterOuterAlt(_localctx, 1);
11602 			{
11603 			setState(2039);
11604 			match(ON);
11605 			setState(2040);
11606 			match(PARTITIONS);
11607 			setState(2041);
11608 			match(LP_);
11609 			setState(2042);
11610 			partitionExpressions();
11611 			setState(2043);
11612 			match(RP_);
11613 			}
11614 		}
11615 		catch (RecognitionException re) {
11616 			_localctx.exception = re;
11617 			_errHandler.reportError(this, re);
11618 			_errHandler.recover(this, re);
11619 		}
11620 		finally {
11621 			exitRule();
11622 		}
11623 		return _localctx;
11624 	}
11625 
11626 	public static class PartitionExpressionsContext extends ParserRuleContext {
11627 		public List<PartitionExpressionContext> partitionExpression() {
11628 			return getRuleContexts(PartitionExpressionContext.class);
11629 		}
11630 		public PartitionExpressionContext partitionExpression(int i) {
11631 			return getRuleContext(PartitionExpressionContext.class,i);
11632 		}
11633 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
11634 		public TerminalNode COMMA_(int i) {
11635 			return getToken(SQLServerStatementParser.COMMA_, i);
11636 		}
11637 		public PartitionExpressionsContext(ParserRuleContext parent, int invokingState) {
11638 			super(parent, invokingState);
11639 		}
11640 		@Override public int getRuleIndex() { return RULE_partitionExpressions; }
11641 		@Override
11642 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11643 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionExpressions(this);
11644 			else return visitor.visitChildren(this);
11645 		}
11646 	}
11647 
11648 	public final PartitionExpressionsContext partitionExpressions() throws RecognitionException {
11649 		PartitionExpressionsContext _localctx = new PartitionExpressionsContext(_ctx, getState());
11650 		enterRule(_localctx, 220, RULE_partitionExpressions);
11651 		int _la;
11652 		try {
11653 			enterOuterAlt(_localctx, 1);
11654 			{
11655 			setState(2045);
11656 			partitionExpression();
11657 			setState(2050);
11658 			_errHandler.sync(this);
11659 			_la = _input.LA(1);
11660 			while (_la==COMMA_) {
11661 				{
11662 				{
11663 				setState(2046);
11664 				match(COMMA_);
11665 				setState(2047);
11666 				partitionExpression();
11667 				}
11668 				}
11669 				setState(2052);
11670 				_errHandler.sync(this);
11671 				_la = _input.LA(1);
11672 			}
11673 			}
11674 		}
11675 		catch (RecognitionException re) {
11676 			_localctx.exception = re;
11677 			_errHandler.reportError(this, re);
11678 			_errHandler.recover(this, re);
11679 		}
11680 		finally {
11681 			exitRule();
11682 		}
11683 		return _localctx;
11684 	}
11685 
11686 	public static class PartitionExpressionContext extends ParserRuleContext {
11687 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
11688 		public NumberRangeContext numberRange() {
11689 			return getRuleContext(NumberRangeContext.class,0);
11690 		}
11691 		public PartitionExpressionContext(ParserRuleContext parent, int invokingState) {
11692 			super(parent, invokingState);
11693 		}
11694 		@Override public int getRuleIndex() { return RULE_partitionExpression; }
11695 		@Override
11696 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11697 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionExpression(this);
11698 			else return visitor.visitChildren(this);
11699 		}
11700 	}
11701 
11702 	public final PartitionExpressionContext partitionExpression() throws RecognitionException {
11703 		PartitionExpressionContext _localctx = new PartitionExpressionContext(_ctx, getState());
11704 		enterRule(_localctx, 222, RULE_partitionExpression);
11705 		try {
11706 			setState(2055);
11707 			_errHandler.sync(this);
11708 			switch ( getInterpreter().adaptivePredict(_input,129,_ctx) ) {
11709 			case 1:
11710 				enterOuterAlt(_localctx, 1);
11711 				{
11712 				setState(2053);
11713 				match(NUMBER_);
11714 				}
11715 				break;
11716 			case 2:
11717 				enterOuterAlt(_localctx, 2);
11718 				{
11719 				setState(2054);
11720 				numberRange();
11721 				}
11722 				break;
11723 			}
11724 		}
11725 		catch (RecognitionException re) {
11726 			_localctx.exception = re;
11727 			_errHandler.reportError(this, re);
11728 			_errHandler.recover(this, re);
11729 		}
11730 		finally {
11731 			exitRule();
11732 		}
11733 		return _localctx;
11734 	}
11735 
11736 	public static class NumberRangeContext extends ParserRuleContext {
11737 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
11738 		public TerminalNode NUMBER_(int i) {
11739 			return getToken(SQLServerStatementParser.NUMBER_, i);
11740 		}
11741 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
11742 		public NumberRangeContext(ParserRuleContext parent, int invokingState) {
11743 			super(parent, invokingState);
11744 		}
11745 		@Override public int getRuleIndex() { return RULE_numberRange; }
11746 		@Override
11747 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11748 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitNumberRange(this);
11749 			else return visitor.visitChildren(this);
11750 		}
11751 	}
11752 
11753 	public final NumberRangeContext numberRange() throws RecognitionException {
11754 		NumberRangeContext _localctx = new NumberRangeContext(_ctx, getState());
11755 		enterRule(_localctx, 224, RULE_numberRange);
11756 		try {
11757 			enterOuterAlt(_localctx, 1);
11758 			{
11759 			setState(2057);
11760 			match(NUMBER_);
11761 			setState(2058);
11762 			match(TO);
11763 			setState(2059);
11764 			match(NUMBER_);
11765 			}
11766 		}
11767 		catch (RecognitionException re) {
11768 			_localctx.exception = re;
11769 			_errHandler.reportError(this, re);
11770 			_errHandler.recover(this, re);
11771 		}
11772 		finally {
11773 			exitRule();
11774 		}
11775 		return _localctx;
11776 	}
11777 
11778 	public static class LowPriorityLockWaitContext extends ParserRuleContext {
11779 		public TerminalNode WAIT_AT_LOW_PRIORITY() { return getToken(SQLServerStatementParser.WAIT_AT_LOW_PRIORITY, 0); }
11780 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
11781 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
11782 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
11783 		public TerminalNode EQ_(int i) {
11784 			return getToken(SQLServerStatementParser.EQ_, i);
11785 		}
11786 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
11787 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
11788 		public TerminalNode ABORT_AFTER_WAIT() { return getToken(SQLServerStatementParser.ABORT_AFTER_WAIT, 0); }
11789 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
11790 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
11791 		public TerminalNode SELF() { return getToken(SQLServerStatementParser.SELF, 0); }
11792 		public TerminalNode BLOCKERS() { return getToken(SQLServerStatementParser.BLOCKERS, 0); }
11793 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
11794 		public LowPriorityLockWaitContext(ParserRuleContext parent, int invokingState) {
11795 			super(parent, invokingState);
11796 		}
11797 		@Override public int getRuleIndex() { return RULE_lowPriorityLockWait; }
11798 		@Override
11799 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11800 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitLowPriorityLockWait(this);
11801 			else return visitor.visitChildren(this);
11802 		}
11803 	}
11804 
11805 	public final LowPriorityLockWaitContext lowPriorityLockWait() throws RecognitionException {
11806 		LowPriorityLockWaitContext _localctx = new LowPriorityLockWaitContext(_ctx, getState());
11807 		enterRule(_localctx, 226, RULE_lowPriorityLockWait);
11808 		int _la;
11809 		try {
11810 			enterOuterAlt(_localctx, 1);
11811 			{
11812 			setState(2061);
11813 			match(WAIT_AT_LOW_PRIORITY);
11814 			setState(2062);
11815 			match(LP_);
11816 			setState(2063);
11817 			match(MAX_DURATION);
11818 			setState(2064);
11819 			match(EQ_);
11820 			setState(2065);
11821 			match(NUMBER_);
11822 			setState(2067);
11823 			_errHandler.sync(this);
11824 			_la = _input.LA(1);
11825 			if (_la==MINUTES) {
11826 				{
11827 				setState(2066);
11828 				match(MINUTES);
11829 				}
11830 			}
11831 
11832 			setState(2069);
11833 			match(COMMA_);
11834 			setState(2070);
11835 			match(ABORT_AFTER_WAIT);
11836 			setState(2071);
11837 			match(EQ_);
11838 			setState(2072);
11839 			_la = _input.LA(1);
11840 			if ( !(((((_la - 268)) & ~0x3f) == 0 && ((1L << (_la - 268)) & ((1L << (BLOCKERS - 268)) | (1L << (NONE - 268)) | (1L << (SELF - 268)))) != 0)) ) {
11841 			_errHandler.recoverInline(this);
11842 			}
11843 			else {
11844 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
11845 				_errHandler.reportMatch(this);
11846 				consume();
11847 			}
11848 			setState(2073);
11849 			match(RP_);
11850 			}
11851 		}
11852 		catch (RecognitionException re) {
11853 			_localctx.exception = re;
11854 			_errHandler.reportError(this, re);
11855 			_errHandler.recover(this, re);
11856 		}
11857 		finally {
11858 			exitRule();
11859 		}
11860 		return _localctx;
11861 	}
11862 
11863 	public static class OnLowPriorLockWaitContext extends ParserRuleContext {
11864 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
11865 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
11866 		public LowPriorityLockWaitContext lowPriorityLockWait() {
11867 			return getRuleContext(LowPriorityLockWaitContext.class,0);
11868 		}
11869 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
11870 		public OnLowPriorLockWaitContext(ParserRuleContext parent, int invokingState) {
11871 			super(parent, invokingState);
11872 		}
11873 		@Override public int getRuleIndex() { return RULE_onLowPriorLockWait; }
11874 		@Override
11875 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11876 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnLowPriorLockWait(this);
11877 			else return visitor.visitChildren(this);
11878 		}
11879 	}
11880 
11881 	public final OnLowPriorLockWaitContext onLowPriorLockWait() throws RecognitionException {
11882 		OnLowPriorLockWaitContext _localctx = new OnLowPriorLockWaitContext(_ctx, getState());
11883 		enterRule(_localctx, 228, RULE_onLowPriorLockWait);
11884 		int _la;
11885 		try {
11886 			enterOuterAlt(_localctx, 1);
11887 			{
11888 			setState(2075);
11889 			match(ON);
11890 			setState(2080);
11891 			_errHandler.sync(this);
11892 			_la = _input.LA(1);
11893 			if (_la==LP_) {
11894 				{
11895 				setState(2076);
11896 				match(LP_);
11897 				setState(2077);
11898 				lowPriorityLockWait();
11899 				setState(2078);
11900 				match(RP_);
11901 				}
11902 			}
11903 
11904 			}
11905 		}
11906 		catch (RecognitionException re) {
11907 			_localctx.exception = re;
11908 			_errHandler.reportError(this, re);
11909 			_errHandler.recover(this, re);
11910 		}
11911 		finally {
11912 			exitRule();
11913 		}
11914 		return _localctx;
11915 	}
11916 
11917 	public static class IgnoredIdentifierContext extends ParserRuleContext {
11918 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
11919 		public IgnoredIdentifierContext(ParserRuleContext parent, int invokingState) {
11920 			super(parent, invokingState);
11921 		}
11922 		@Override public int getRuleIndex() { return RULE_ignoredIdentifier; }
11923 		@Override
11924 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11925 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIgnoredIdentifier(this);
11926 			else return visitor.visitChildren(this);
11927 		}
11928 	}
11929 
11930 	public final IgnoredIdentifierContext ignoredIdentifier() throws RecognitionException {
11931 		IgnoredIdentifierContext _localctx = new IgnoredIdentifierContext(_ctx, getState());
11932 		enterRule(_localctx, 230, RULE_ignoredIdentifier);
11933 		try {
11934 			enterOuterAlt(_localctx, 1);
11935 			{
11936 			setState(2082);
11937 			match(IDENTIFIER_);
11938 			}
11939 		}
11940 		catch (RecognitionException re) {
11941 			_localctx.exception = re;
11942 			_errHandler.reportError(this, re);
11943 			_errHandler.recover(this, re);
11944 		}
11945 		finally {
11946 			exitRule();
11947 		}
11948 		return _localctx;
11949 	}
11950 
11951 	public static class IgnoredIdentifiersContext extends ParserRuleContext {
11952 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
11953 			return getRuleContexts(IgnoredIdentifierContext.class);
11954 		}
11955 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
11956 			return getRuleContext(IgnoredIdentifierContext.class,i);
11957 		}
11958 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
11959 		public TerminalNode COMMA_(int i) {
11960 			return getToken(SQLServerStatementParser.COMMA_, i);
11961 		}
11962 		public IgnoredIdentifiersContext(ParserRuleContext parent, int invokingState) {
11963 			super(parent, invokingState);
11964 		}
11965 		@Override public int getRuleIndex() { return RULE_ignoredIdentifiers; }
11966 		@Override
11967 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
11968 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIgnoredIdentifiers(this);
11969 			else return visitor.visitChildren(this);
11970 		}
11971 	}
11972 
11973 	public final IgnoredIdentifiersContext ignoredIdentifiers() throws RecognitionException {
11974 		IgnoredIdentifiersContext _localctx = new IgnoredIdentifiersContext(_ctx, getState());
11975 		enterRule(_localctx, 232, RULE_ignoredIdentifiers);
11976 		try {
11977 			int _alt;
11978 			enterOuterAlt(_localctx, 1);
11979 			{
11980 			setState(2084);
11981 			ignoredIdentifier();
11982 			setState(2089);
11983 			_errHandler.sync(this);
11984 			_alt = getInterpreter().adaptivePredict(_input,132,_ctx);
11985 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
11986 				if ( _alt==1 ) {
11987 					{
11988 					{
11989 					setState(2085);
11990 					match(COMMA_);
11991 					setState(2086);
11992 					ignoredIdentifier();
11993 					}
11994 					} 
11995 				}
11996 				setState(2091);
11997 				_errHandler.sync(this);
11998 				_alt = getInterpreter().adaptivePredict(_input,132,_ctx);
11999 			}
12000 			}
12001 		}
12002 		catch (RecognitionException re) {
12003 			_localctx.exception = re;
12004 			_errHandler.reportError(this, re);
12005 			_errHandler.recover(this, re);
12006 		}
12007 		finally {
12008 			exitRule();
12009 		}
12010 		return _localctx;
12011 	}
12012 
12013 	public static class MatchNoneContext extends ParserRuleContext {
12014 		public MatchNoneContext(ParserRuleContext parent, int invokingState) {
12015 			super(parent, invokingState);
12016 		}
12017 		@Override public int getRuleIndex() { return RULE_matchNone; }
12018 		@Override
12019 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12020 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMatchNone(this);
12021 			else return visitor.visitChildren(this);
12022 		}
12023 	}
12024 
12025 	public final MatchNoneContext matchNone() throws RecognitionException {
12026 		MatchNoneContext _localctx = new MatchNoneContext(_ctx, getState());
12027 		enterRule(_localctx, 234, RULE_matchNone);
12028 		try {
12029 			enterOuterAlt(_localctx, 1);
12030 			{
12031 			setState(2092);
12032 			match(T__0);
12033 			}
12034 		}
12035 		catch (RecognitionException re) {
12036 			_localctx.exception = re;
12037 			_errHandler.reportError(this, re);
12038 			_errHandler.recover(this, re);
12039 		}
12040 		finally {
12041 			exitRule();
12042 		}
12043 		return _localctx;
12044 	}
12045 
12046 	public static class VariableNameContext extends ParserRuleContext {
12047 		public IdentifierContext identifier() {
12048 			return getRuleContext(IdentifierContext.class,0);
12049 		}
12050 		public VariableNameContext(ParserRuleContext parent, int invokingState) {
12051 			super(parent, invokingState);
12052 		}
12053 		@Override public int getRuleIndex() { return RULE_variableName; }
12054 		@Override
12055 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12056 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableName(this);
12057 			else return visitor.visitChildren(this);
12058 		}
12059 	}
12060 
12061 	public final VariableNameContext variableName() throws RecognitionException {
12062 		VariableNameContext _localctx = new VariableNameContext(_ctx, getState());
12063 		enterRule(_localctx, 236, RULE_variableName);
12064 		try {
12065 			enterOuterAlt(_localctx, 1);
12066 			{
12067 			setState(2094);
12068 			identifier();
12069 			}
12070 		}
12071 		catch (RecognitionException re) {
12072 			_localctx.exception = re;
12073 			_errHandler.reportError(this, re);
12074 			_errHandler.recover(this, re);
12075 		}
12076 		finally {
12077 			exitRule();
12078 		}
12079 		return _localctx;
12080 	}
12081 
12082 	public static class ExecuteAsClauseContext extends ParserRuleContext {
12083 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
12084 		public TerminalNode EXEC() { return getToken(SQLServerStatementParser.EXEC, 0); }
12085 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
12086 		public TerminalNode CALLER() { return getToken(SQLServerStatementParser.CALLER, 0); }
12087 		public TerminalNode SELF() { return getToken(SQLServerStatementParser.SELF, 0); }
12088 		public TerminalNode OWNER() { return getToken(SQLServerStatementParser.OWNER, 0); }
12089 		public StringLiteralsContext stringLiterals() {
12090 			return getRuleContext(StringLiteralsContext.class,0);
12091 		}
12092 		public ExecuteAsClauseContext(ParserRuleContext parent, int invokingState) {
12093 			super(parent, invokingState);
12094 		}
12095 		@Override public int getRuleIndex() { return RULE_executeAsClause; }
12096 		@Override
12097 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12098 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExecuteAsClause(this);
12099 			else return visitor.visitChildren(this);
12100 		}
12101 	}
12102 
12103 	public final ExecuteAsClauseContext executeAsClause() throws RecognitionException {
12104 		ExecuteAsClauseContext _localctx = new ExecuteAsClauseContext(_ctx, getState());
12105 		enterRule(_localctx, 238, RULE_executeAsClause);
12106 		int _la;
12107 		try {
12108 			enterOuterAlt(_localctx, 1);
12109 			{
12110 			setState(2096);
12111 			_la = _input.LA(1);
12112 			if ( !(_la==EXECUTE || _la==EXEC) ) {
12113 			_errHandler.recoverInline(this);
12114 			}
12115 			else {
12116 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
12117 				_errHandler.reportMatch(this);
12118 				consume();
12119 			}
12120 			setState(2097);
12121 			match(AS);
12122 			setState(2102);
12123 			_errHandler.sync(this);
12124 			switch (_input.LA(1)) {
12125 			case CALLER:
12126 				{
12127 				setState(2098);
12128 				match(CALLER);
12129 				}
12130 				break;
12131 			case SELF:
12132 				{
12133 				setState(2099);
12134 				match(SELF);
12135 				}
12136 				break;
12137 			case OWNER:
12138 				{
12139 				setState(2100);
12140 				match(OWNER);
12141 				}
12142 				break;
12143 			case STRING_:
12144 			case NCHAR_TEXT:
12145 				{
12146 				setState(2101);
12147 				stringLiterals();
12148 				}
12149 				break;
12150 			default:
12151 				throw new NoViableAltException(this);
12152 			}
12153 			}
12154 		}
12155 		catch (RecognitionException re) {
12156 			_localctx.exception = re;
12157 			_errHandler.reportError(this, re);
12158 			_errHandler.recover(this, re);
12159 		}
12160 		finally {
12161 			exitRule();
12162 		}
12163 		return _localctx;
12164 	}
12165 
12166 	public static class TransactionNameContext extends ParserRuleContext {
12167 		public IdentifierContext identifier() {
12168 			return getRuleContext(IdentifierContext.class,0);
12169 		}
12170 		public TransactionNameContext(ParserRuleContext parent, int invokingState) {
12171 			super(parent, invokingState);
12172 		}
12173 		@Override public int getRuleIndex() { return RULE_transactionName; }
12174 		@Override
12175 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12176 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTransactionName(this);
12177 			else return visitor.visitChildren(this);
12178 		}
12179 	}
12180 
12181 	public final TransactionNameContext transactionName() throws RecognitionException {
12182 		TransactionNameContext _localctx = new TransactionNameContext(_ctx, getState());
12183 		enterRule(_localctx, 240, RULE_transactionName);
12184 		try {
12185 			enterOuterAlt(_localctx, 1);
12186 			{
12187 			setState(2104);
12188 			identifier();
12189 			}
12190 		}
12191 		catch (RecognitionException re) {
12192 			_localctx.exception = re;
12193 			_errHandler.reportError(this, re);
12194 			_errHandler.recover(this, re);
12195 		}
12196 		finally {
12197 			exitRule();
12198 		}
12199 		return _localctx;
12200 	}
12201 
12202 	public static class TransactionVariableNameContext extends ParserRuleContext {
12203 		public VariableNameContext variableName() {
12204 			return getRuleContext(VariableNameContext.class,0);
12205 		}
12206 		public TransactionVariableNameContext(ParserRuleContext parent, int invokingState) {
12207 			super(parent, invokingState);
12208 		}
12209 		@Override public int getRuleIndex() { return RULE_transactionVariableName; }
12210 		@Override
12211 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12212 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTransactionVariableName(this);
12213 			else return visitor.visitChildren(this);
12214 		}
12215 	}
12216 
12217 	public final TransactionVariableNameContext transactionVariableName() throws RecognitionException {
12218 		TransactionVariableNameContext _localctx = new TransactionVariableNameContext(_ctx, getState());
12219 		enterRule(_localctx, 242, RULE_transactionVariableName);
12220 		try {
12221 			enterOuterAlt(_localctx, 1);
12222 			{
12223 			setState(2106);
12224 			variableName();
12225 			}
12226 		}
12227 		catch (RecognitionException re) {
12228 			_localctx.exception = re;
12229 			_errHandler.reportError(this, re);
12230 			_errHandler.recover(this, re);
12231 		}
12232 		finally {
12233 			exitRule();
12234 		}
12235 		return _localctx;
12236 	}
12237 
12238 	public static class SavepointNameContext extends ParserRuleContext {
12239 		public IdentifierContext identifier() {
12240 			return getRuleContext(IdentifierContext.class,0);
12241 		}
12242 		public SavepointNameContext(ParserRuleContext parent, int invokingState) {
12243 			super(parent, invokingState);
12244 		}
12245 		@Override public int getRuleIndex() { return RULE_savepointName; }
12246 		@Override
12247 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12248 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSavepointName(this);
12249 			else return visitor.visitChildren(this);
12250 		}
12251 	}
12252 
12253 	public final SavepointNameContext savepointName() throws RecognitionException {
12254 		SavepointNameContext _localctx = new SavepointNameContext(_ctx, getState());
12255 		enterRule(_localctx, 244, RULE_savepointName);
12256 		try {
12257 			enterOuterAlt(_localctx, 1);
12258 			{
12259 			setState(2108);
12260 			identifier();
12261 			}
12262 		}
12263 		catch (RecognitionException re) {
12264 			_localctx.exception = re;
12265 			_errHandler.reportError(this, re);
12266 			_errHandler.recover(this, re);
12267 		}
12268 		finally {
12269 			exitRule();
12270 		}
12271 		return _localctx;
12272 	}
12273 
12274 	public static class SavepointVariableNameContext extends ParserRuleContext {
12275 		public VariableNameContext variableName() {
12276 			return getRuleContext(VariableNameContext.class,0);
12277 		}
12278 		public SavepointVariableNameContext(ParserRuleContext parent, int invokingState) {
12279 			super(parent, invokingState);
12280 		}
12281 		@Override public int getRuleIndex() { return RULE_savepointVariableName; }
12282 		@Override
12283 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12284 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSavepointVariableName(this);
12285 			else return visitor.visitChildren(this);
12286 		}
12287 	}
12288 
12289 	public final SavepointVariableNameContext savepointVariableName() throws RecognitionException {
12290 		SavepointVariableNameContext _localctx = new SavepointVariableNameContext(_ctx, getState());
12291 		enterRule(_localctx, 246, RULE_savepointVariableName);
12292 		try {
12293 			enterOuterAlt(_localctx, 1);
12294 			{
12295 			setState(2110);
12296 			variableName();
12297 			}
12298 		}
12299 		catch (RecognitionException re) {
12300 			_localctx.exception = re;
12301 			_errHandler.reportError(this, re);
12302 			_errHandler.recover(this, re);
12303 		}
12304 		finally {
12305 			exitRule();
12306 		}
12307 		return _localctx;
12308 	}
12309 
12310 	public static class EntityTypeContext extends ParserRuleContext {
12311 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
12312 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
12313 		public EntityTypeContext(ParserRuleContext parent, int invokingState) {
12314 			super(parent, invokingState);
12315 		}
12316 		@Override public int getRuleIndex() { return RULE_entityType; }
12317 		@Override
12318 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12319 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEntityType(this);
12320 			else return visitor.visitChildren(this);
12321 		}
12322 	}
12323 
12324 	public final EntityTypeContext entityType() throws RecognitionException {
12325 		EntityTypeContext _localctx = new EntityTypeContext(_ctx, getState());
12326 		enterRule(_localctx, 248, RULE_entityType);
12327 		int _la;
12328 		try {
12329 			enterOuterAlt(_localctx, 1);
12330 			{
12331 			setState(2112);
12332 			_la = _input.LA(1);
12333 			if ( !(_la==TYPE || _la==OBJECT) ) {
12334 			_errHandler.recoverInline(this);
12335 			}
12336 			else {
12337 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
12338 				_errHandler.reportMatch(this);
12339 				consume();
12340 			}
12341 			}
12342 		}
12343 		catch (RecognitionException re) {
12344 			_localctx.exception = re;
12345 			_errHandler.reportError(this, re);
12346 			_errHandler.recover(this, re);
12347 		}
12348 		finally {
12349 			exitRule();
12350 		}
12351 		return _localctx;
12352 	}
12353 
12354 	public static class IfExistsContext extends ParserRuleContext {
12355 		public TerminalNode IF() { return getToken(SQLServerStatementParser.IF, 0); }
12356 		public TerminalNode EXISTS() { return getToken(SQLServerStatementParser.EXISTS, 0); }
12357 		public IfExistsContext(ParserRuleContext parent, int invokingState) {
12358 			super(parent, invokingState);
12359 		}
12360 		@Override public int getRuleIndex() { return RULE_ifExists; }
12361 		@Override
12362 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12363 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIfExists(this);
12364 			else return visitor.visitChildren(this);
12365 		}
12366 	}
12367 
12368 	public final IfExistsContext ifExists() throws RecognitionException {
12369 		IfExistsContext _localctx = new IfExistsContext(_ctx, getState());
12370 		enterRule(_localctx, 250, RULE_ifExists);
12371 		try {
12372 			enterOuterAlt(_localctx, 1);
12373 			{
12374 			setState(2114);
12375 			match(IF);
12376 			setState(2115);
12377 			match(EXISTS);
12378 			}
12379 		}
12380 		catch (RecognitionException re) {
12381 			_localctx.exception = re;
12382 			_errHandler.reportError(this, re);
12383 			_errHandler.recover(this, re);
12384 		}
12385 		finally {
12386 			exitRule();
12387 		}
12388 		return _localctx;
12389 	}
12390 
12391 	public static class TableHintLimitedContext extends ParserRuleContext {
12392 		public TerminalNode KEEPIDENTITY() { return getToken(SQLServerStatementParser.KEEPIDENTITY, 0); }
12393 		public TerminalNode KEEPDEFAULTS() { return getToken(SQLServerStatementParser.KEEPDEFAULTS, 0); }
12394 		public TerminalNode HOLDLOCK() { return getToken(SQLServerStatementParser.HOLDLOCK, 0); }
12395 		public TerminalNode IGNORE_CONSTRAINTS() { return getToken(SQLServerStatementParser.IGNORE_CONSTRAINTS, 0); }
12396 		public TerminalNode IGNORE_TRIGGERS() { return getToken(SQLServerStatementParser.IGNORE_TRIGGERS, 0); }
12397 		public TerminalNode NOLOCK() { return getToken(SQLServerStatementParser.NOLOCK, 0); }
12398 		public TerminalNode NOWAIT() { return getToken(SQLServerStatementParser.NOWAIT, 0); }
12399 		public TerminalNode PAGLOCK() { return getToken(SQLServerStatementParser.PAGLOCK, 0); }
12400 		public TerminalNode READCOMMITTED() { return getToken(SQLServerStatementParser.READCOMMITTED, 0); }
12401 		public TerminalNode READCOMMITTEDLOCK() { return getToken(SQLServerStatementParser.READCOMMITTEDLOCK, 0); }
12402 		public TerminalNode READPAST() { return getToken(SQLServerStatementParser.READPAST, 0); }
12403 		public TerminalNode REPEATABLEREAD() { return getToken(SQLServerStatementParser.REPEATABLEREAD, 0); }
12404 		public TerminalNode ROWLOCK() { return getToken(SQLServerStatementParser.ROWLOCK, 0); }
12405 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
12406 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
12407 		public TerminalNode TABLOCK() { return getToken(SQLServerStatementParser.TABLOCK, 0); }
12408 		public TerminalNode TABLOCKX() { return getToken(SQLServerStatementParser.TABLOCKX, 0); }
12409 		public TerminalNode UPDLOCK() { return getToken(SQLServerStatementParser.UPDLOCK, 0); }
12410 		public TerminalNode XLOCK() { return getToken(SQLServerStatementParser.XLOCK, 0); }
12411 		public TableHintLimitedContext(ParserRuleContext parent, int invokingState) {
12412 			super(parent, invokingState);
12413 		}
12414 		@Override public int getRuleIndex() { return RULE_tableHintLimited; }
12415 		@Override
12416 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12417 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableHintLimited(this);
12418 			else return visitor.visitChildren(this);
12419 		}
12420 	}
12421 
12422 	public final TableHintLimitedContext tableHintLimited() throws RecognitionException {
12423 		TableHintLimitedContext _localctx = new TableHintLimitedContext(_ctx, getState());
12424 		enterRule(_localctx, 252, RULE_tableHintLimited);
12425 		int _la;
12426 		try {
12427 			enterOuterAlt(_localctx, 1);
12428 			{
12429 			setState(2117);
12430 			_la = _input.LA(1);
12431 			if ( !(((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (KEEPIDENTITY - 216)) | (1L << (KEEPDEFAULTS - 216)) | (1L << (HOLDLOCK - 216)) | (1L << (IGNORE_CONSTRAINTS - 216)) | (1L << (IGNORE_TRIGGERS - 216)) | (1L << (NOLOCK - 216)) | (1L << (NOWAIT - 216)) | (1L << (PAGLOCK - 216)) | (1L << (READCOMMITTED - 216)) | (1L << (READCOMMITTEDLOCK - 216)) | (1L << (READPAST - 216)) | (1L << (REPEATABLEREAD - 216)) | (1L << (ROWLOCK - 216)) | (1L << (TABLOCK - 216)) | (1L << (TABLOCKX - 216)) | (1L << (UPDLOCK - 216)) | (1L << (XLOCK - 216)))) != 0) || _la==SNAPSHOT || _la==SERIALIZABLE) ) {
12432 			_errHandler.recoverInline(this);
12433 			}
12434 			else {
12435 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
12436 				_errHandler.reportMatch(this);
12437 				consume();
12438 			}
12439 			}
12440 		}
12441 		catch (RecognitionException re) {
12442 			_localctx.exception = re;
12443 			_errHandler.reportError(this, re);
12444 			_errHandler.recover(this, re);
12445 		}
12446 		finally {
12447 			exitRule();
12448 		}
12449 		return _localctx;
12450 	}
12451 
12452 	public static class CallContext extends ParserRuleContext {
12453 		public TerminalNode CALL() { return getToken(SQLServerStatementParser.CALL, 0); }
12454 		public CallContext(ParserRuleContext parent, int invokingState) {
12455 			super(parent, invokingState);
12456 		}
12457 		@Override public int getRuleIndex() { return RULE_call; }
12458 		@Override
12459 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12460 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCall(this);
12461 			else return visitor.visitChildren(this);
12462 		}
12463 	}
12464 
12465 	public final CallContext call() throws RecognitionException {
12466 		CallContext _localctx = new CallContext(_ctx, getState());
12467 		enterRule(_localctx, 254, RULE_call);
12468 		try {
12469 			enterOuterAlt(_localctx, 1);
12470 			{
12471 			setState(2119);
12472 			match(CALL);
12473 			}
12474 		}
12475 		catch (RecognitionException re) {
12476 			_localctx.exception = re;
12477 			_errHandler.reportError(this, re);
12478 			_errHandler.recover(this, re);
12479 		}
12480 		finally {
12481 			exitRule();
12482 		}
12483 		return _localctx;
12484 	}
12485 
12486 	public static class ExplainContext extends ParserRuleContext {
12487 		public TerminalNode EXPLAIN() { return getToken(SQLServerStatementParser.EXPLAIN, 0); }
12488 		public ExplainableStatementContext explainableStatement() {
12489 			return getRuleContext(ExplainableStatementContext.class,0);
12490 		}
12491 		public TerminalNode WITH_RECOMMENDATIONS() { return getToken(SQLServerStatementParser.WITH_RECOMMENDATIONS, 0); }
12492 		public ExplainContext(ParserRuleContext parent, int invokingState) {
12493 			super(parent, invokingState);
12494 		}
12495 		@Override public int getRuleIndex() { return RULE_explain; }
12496 		@Override
12497 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12498 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExplain(this);
12499 			else return visitor.visitChildren(this);
12500 		}
12501 	}
12502 
12503 	public final ExplainContext explain() throws RecognitionException {
12504 		ExplainContext _localctx = new ExplainContext(_ctx, getState());
12505 		enterRule(_localctx, 256, RULE_explain);
12506 		int _la;
12507 		try {
12508 			enterOuterAlt(_localctx, 1);
12509 			{
12510 			setState(2121);
12511 			match(EXPLAIN);
12512 			setState(2123);
12513 			_errHandler.sync(this);
12514 			_la = _input.LA(1);
12515 			if (_la==WITH_RECOMMENDATIONS) {
12516 				{
12517 				setState(2122);
12518 				match(WITH_RECOMMENDATIONS);
12519 				}
12520 			}
12521 
12522 			setState(2125);
12523 			explainableStatement();
12524 			}
12525 		}
12526 		catch (RecognitionException re) {
12527 			_localctx.exception = re;
12528 			_errHandler.reportError(this, re);
12529 			_errHandler.recover(this, re);
12530 		}
12531 		finally {
12532 			exitRule();
12533 		}
12534 		return _localctx;
12535 	}
12536 
12537 	public static class ExplainableStatementContext extends ParserRuleContext {
12538 		public SelectContext select() {
12539 			return getRuleContext(SelectContext.class,0);
12540 		}
12541 		public InsertContext insert() {
12542 			return getRuleContext(InsertContext.class,0);
12543 		}
12544 		public UpdateContext update() {
12545 			return getRuleContext(UpdateContext.class,0);
12546 		}
12547 		public DeleteContext delete() {
12548 			return getRuleContext(DeleteContext.class,0);
12549 		}
12550 		public CreateTableAsSelectClauseContext createTableAsSelectClause() {
12551 			return getRuleContext(CreateTableAsSelectClauseContext.class,0);
12552 		}
12553 		public ExplainableStatementContext(ParserRuleContext parent, int invokingState) {
12554 			super(parent, invokingState);
12555 		}
12556 		@Override public int getRuleIndex() { return RULE_explainableStatement; }
12557 		@Override
12558 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12559 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExplainableStatement(this);
12560 			else return visitor.visitChildren(this);
12561 		}
12562 	}
12563 
12564 	public final ExplainableStatementContext explainableStatement() throws RecognitionException {
12565 		ExplainableStatementContext _localctx = new ExplainableStatementContext(_ctx, getState());
12566 		enterRule(_localctx, 258, RULE_explainableStatement);
12567 		try {
12568 			setState(2132);
12569 			_errHandler.sync(this);
12570 			switch ( getInterpreter().adaptivePredict(_input,135,_ctx) ) {
12571 			case 1:
12572 				enterOuterAlt(_localctx, 1);
12573 				{
12574 				setState(2127);
12575 				select();
12576 				}
12577 				break;
12578 			case 2:
12579 				enterOuterAlt(_localctx, 2);
12580 				{
12581 				setState(2128);
12582 				insert();
12583 				}
12584 				break;
12585 			case 3:
12586 				enterOuterAlt(_localctx, 3);
12587 				{
12588 				setState(2129);
12589 				update();
12590 				}
12591 				break;
12592 			case 4:
12593 				enterOuterAlt(_localctx, 4);
12594 				{
12595 				setState(2130);
12596 				delete();
12597 				}
12598 				break;
12599 			case 5:
12600 				enterOuterAlt(_localctx, 5);
12601 				{
12602 				setState(2131);
12603 				createTableAsSelectClause();
12604 				}
12605 				break;
12606 			}
12607 		}
12608 		catch (RecognitionException re) {
12609 			_localctx.exception = re;
12610 			_errHandler.reportError(this, re);
12611 			_errHandler.recover(this, re);
12612 		}
12613 		finally {
12614 			exitRule();
12615 		}
12616 		return _localctx;
12617 	}
12618 
12619 	public static class CreateTableContext extends ParserRuleContext {
12620 		public CreateTableClauseContext createTableClause() {
12621 			return getRuleContext(CreateTableClauseContext.class,0);
12622 		}
12623 		public CreateTableAsSelectClauseContext createTableAsSelectClause() {
12624 			return getRuleContext(CreateTableAsSelectClauseContext.class,0);
12625 		}
12626 		public CreateTableContext(ParserRuleContext parent, int invokingState) {
12627 			super(parent, invokingState);
12628 		}
12629 		@Override public int getRuleIndex() { return RULE_createTable; }
12630 		@Override
12631 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12632 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTable(this);
12633 			else return visitor.visitChildren(this);
12634 		}
12635 	}
12636 
12637 	public final CreateTableContext createTable() throws RecognitionException {
12638 		CreateTableContext _localctx = new CreateTableContext(_ctx, getState());
12639 		enterRule(_localctx, 260, RULE_createTable);
12640 		try {
12641 			setState(2136);
12642 			_errHandler.sync(this);
12643 			switch ( getInterpreter().adaptivePredict(_input,136,_ctx) ) {
12644 			case 1:
12645 				enterOuterAlt(_localctx, 1);
12646 				{
12647 				setState(2134);
12648 				createTableClause();
12649 				}
12650 				break;
12651 			case 2:
12652 				enterOuterAlt(_localctx, 2);
12653 				{
12654 				setState(2135);
12655 				createTableAsSelectClause();
12656 				}
12657 				break;
12658 			}
12659 		}
12660 		catch (RecognitionException re) {
12661 			_localctx.exception = re;
12662 			_errHandler.reportError(this, re);
12663 			_errHandler.recover(this, re);
12664 		}
12665 		finally {
12666 			exitRule();
12667 		}
12668 		return _localctx;
12669 	}
12670 
12671 	public static class CreateTableClauseContext extends ParserRuleContext {
12672 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12673 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
12674 		public TableNameContext tableName() {
12675 			return getRuleContext(TableNameContext.class,0);
12676 		}
12677 		public FileTableClauseContext fileTableClause() {
12678 			return getRuleContext(FileTableClauseContext.class,0);
12679 		}
12680 		public CreateDefinitionClauseContext createDefinitionClause() {
12681 			return getRuleContext(CreateDefinitionClauseContext.class,0);
12682 		}
12683 		public CreateTableClauseContext(ParserRuleContext parent, int invokingState) {
12684 			super(parent, invokingState);
12685 		}
12686 		@Override public int getRuleIndex() { return RULE_createTableClause; }
12687 		@Override
12688 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12689 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableClause(this);
12690 			else return visitor.visitChildren(this);
12691 		}
12692 	}
12693 
12694 	public final CreateTableClauseContext createTableClause() throws RecognitionException {
12695 		CreateTableClauseContext _localctx = new CreateTableClauseContext(_ctx, getState());
12696 		enterRule(_localctx, 262, RULE_createTableClause);
12697 		try {
12698 			enterOuterAlt(_localctx, 1);
12699 			{
12700 			setState(2138);
12701 			match(CREATE);
12702 			setState(2139);
12703 			match(TABLE);
12704 			setState(2140);
12705 			tableName();
12706 			setState(2141);
12707 			fileTableClause();
12708 			setState(2142);
12709 			createDefinitionClause();
12710 			}
12711 		}
12712 		catch (RecognitionException re) {
12713 			_localctx.exception = re;
12714 			_errHandler.reportError(this, re);
12715 			_errHandler.recover(this, re);
12716 		}
12717 		finally {
12718 			exitRule();
12719 		}
12720 		return _localctx;
12721 	}
12722 
12723 	public static class CreateIndexContext extends ParserRuleContext {
12724 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12725 		public CreateIndexSpecificationContext createIndexSpecification() {
12726 			return getRuleContext(CreateIndexSpecificationContext.class,0);
12727 		}
12728 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
12729 		public IndexNameContext indexName() {
12730 			return getRuleContext(IndexNameContext.class,0);
12731 		}
12732 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
12733 		public TableNameContext tableName() {
12734 			return getRuleContext(TableNameContext.class,0);
12735 		}
12736 		public ColumnNamesWithSortContext columnNamesWithSort() {
12737 			return getRuleContext(ColumnNamesWithSortContext.class,0);
12738 		}
12739 		public CreateIndexClauseContext createIndexClause() {
12740 			return getRuleContext(CreateIndexClauseContext.class,0);
12741 		}
12742 		public CreateIndexContext(ParserRuleContext parent, int invokingState) {
12743 			super(parent, invokingState);
12744 		}
12745 		@Override public int getRuleIndex() { return RULE_createIndex; }
12746 		@Override
12747 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12748 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateIndex(this);
12749 			else return visitor.visitChildren(this);
12750 		}
12751 	}
12752 
12753 	public final CreateIndexContext createIndex() throws RecognitionException {
12754 		CreateIndexContext _localctx = new CreateIndexContext(_ctx, getState());
12755 		enterRule(_localctx, 264, RULE_createIndex);
12756 		try {
12757 			enterOuterAlt(_localctx, 1);
12758 			{
12759 			setState(2144);
12760 			match(CREATE);
12761 			setState(2145);
12762 			createIndexSpecification();
12763 			setState(2146);
12764 			match(INDEX);
12765 			setState(2147);
12766 			indexName();
12767 			setState(2148);
12768 			match(ON);
12769 			setState(2149);
12770 			tableName();
12771 			setState(2150);
12772 			columnNamesWithSort();
12773 			setState(2151);
12774 			createIndexClause();
12775 			}
12776 		}
12777 		catch (RecognitionException re) {
12778 			_localctx.exception = re;
12779 			_errHandler.reportError(this, re);
12780 			_errHandler.recover(this, re);
12781 		}
12782 		finally {
12783 			exitRule();
12784 		}
12785 		return _localctx;
12786 	}
12787 
12788 	public static class CreateDatabaseContext extends ParserRuleContext {
12789 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12790 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
12791 		public DatabaseNameContext databaseName() {
12792 			return getRuleContext(DatabaseNameContext.class,0);
12793 		}
12794 		public CreateDatabaseClauseContext createDatabaseClause() {
12795 			return getRuleContext(CreateDatabaseClauseContext.class,0);
12796 		}
12797 		public CreateDatabaseContext(ParserRuleContext parent, int invokingState) {
12798 			super(parent, invokingState);
12799 		}
12800 		@Override public int getRuleIndex() { return RULE_createDatabase; }
12801 		@Override
12802 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12803 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateDatabase(this);
12804 			else return visitor.visitChildren(this);
12805 		}
12806 	}
12807 
12808 	public final CreateDatabaseContext createDatabase() throws RecognitionException {
12809 		CreateDatabaseContext _localctx = new CreateDatabaseContext(_ctx, getState());
12810 		enterRule(_localctx, 266, RULE_createDatabase);
12811 		try {
12812 			enterOuterAlt(_localctx, 1);
12813 			{
12814 			setState(2153);
12815 			match(CREATE);
12816 			setState(2154);
12817 			match(DATABASE);
12818 			setState(2155);
12819 			databaseName();
12820 			setState(2156);
12821 			createDatabaseClause();
12822 			}
12823 		}
12824 		catch (RecognitionException re) {
12825 			_localctx.exception = re;
12826 			_errHandler.reportError(this, re);
12827 			_errHandler.recover(this, re);
12828 		}
12829 		finally {
12830 			exitRule();
12831 		}
12832 		return _localctx;
12833 	}
12834 
12835 	public static class CreateFunctionContext extends ParserRuleContext {
12836 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12837 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
12838 		public FunctionNameContext functionName() {
12839 			return getRuleContext(FunctionNameContext.class,0);
12840 		}
12841 		public FuncParametersContext funcParameters() {
12842 			return getRuleContext(FuncParametersContext.class,0);
12843 		}
12844 		public FuncReturnsContext funcReturns() {
12845 			return getRuleContext(FuncReturnsContext.class,0);
12846 		}
12847 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
12848 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12849 		public CreateFunctionContext(ParserRuleContext parent, int invokingState) {
12850 			super(parent, invokingState);
12851 		}
12852 		@Override public int getRuleIndex() { return RULE_createFunction; }
12853 		@Override
12854 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12855 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateFunction(this);
12856 			else return visitor.visitChildren(this);
12857 		}
12858 	}
12859 
12860 	public final CreateFunctionContext createFunction() throws RecognitionException {
12861 		CreateFunctionContext _localctx = new CreateFunctionContext(_ctx, getState());
12862 		enterRule(_localctx, 268, RULE_createFunction);
12863 		int _la;
12864 		try {
12865 			enterOuterAlt(_localctx, 1);
12866 			{
12867 			setState(2158);
12868 			match(CREATE);
12869 			setState(2161);
12870 			_errHandler.sync(this);
12871 			_la = _input.LA(1);
12872 			if (_la==OR) {
12873 				{
12874 				setState(2159);
12875 				match(OR);
12876 				setState(2160);
12877 				match(ALTER);
12878 				}
12879 			}
12880 
12881 			setState(2163);
12882 			match(FUNCTION);
12883 			setState(2164);
12884 			functionName();
12885 			setState(2165);
12886 			funcParameters();
12887 			setState(2166);
12888 			funcReturns();
12889 			}
12890 		}
12891 		catch (RecognitionException re) {
12892 			_localctx.exception = re;
12893 			_errHandler.reportError(this, re);
12894 			_errHandler.recover(this, re);
12895 		}
12896 		finally {
12897 			exitRule();
12898 		}
12899 		return _localctx;
12900 	}
12901 
12902 	public static class CreateProcedureContext extends ParserRuleContext {
12903 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12904 		public ProcedureNameContext procedureName() {
12905 			return getRuleContext(ProcedureNameContext.class,0);
12906 		}
12907 		public ProcParametersContext procParameters() {
12908 			return getRuleContext(ProcParametersContext.class,0);
12909 		}
12910 		public CreateOrAlterProcClauseContext createOrAlterProcClause() {
12911 			return getRuleContext(CreateOrAlterProcClauseContext.class,0);
12912 		}
12913 		public TerminalNode PROC() { return getToken(SQLServerStatementParser.PROC, 0); }
12914 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
12915 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
12916 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12917 		public CreateProcedureContext(ParserRuleContext parent, int invokingState) {
12918 			super(parent, invokingState);
12919 		}
12920 		@Override public int getRuleIndex() { return RULE_createProcedure; }
12921 		@Override
12922 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12923 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateProcedure(this);
12924 			else return visitor.visitChildren(this);
12925 		}
12926 	}
12927 
12928 	public final CreateProcedureContext createProcedure() throws RecognitionException {
12929 		CreateProcedureContext _localctx = new CreateProcedureContext(_ctx, getState());
12930 		enterRule(_localctx, 270, RULE_createProcedure);
12931 		int _la;
12932 		try {
12933 			enterOuterAlt(_localctx, 1);
12934 			{
12935 			setState(2168);
12936 			match(CREATE);
12937 			setState(2171);
12938 			_errHandler.sync(this);
12939 			_la = _input.LA(1);
12940 			if (_la==OR) {
12941 				{
12942 				setState(2169);
12943 				match(OR);
12944 				setState(2170);
12945 				match(ALTER);
12946 				}
12947 			}
12948 
12949 			setState(2173);
12950 			_la = _input.LA(1);
12951 			if ( !(_la==PROCEDURE || _la==PROC) ) {
12952 			_errHandler.recoverInline(this);
12953 			}
12954 			else {
12955 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
12956 				_errHandler.reportMatch(this);
12957 				consume();
12958 			}
12959 			setState(2174);
12960 			procedureName();
12961 			setState(2175);
12962 			procParameters();
12963 			setState(2176);
12964 			createOrAlterProcClause();
12965 			}
12966 		}
12967 		catch (RecognitionException re) {
12968 			_localctx.exception = re;
12969 			_errHandler.reportError(this, re);
12970 			_errHandler.recover(this, re);
12971 		}
12972 		finally {
12973 			exitRule();
12974 		}
12975 		return _localctx;
12976 	}
12977 
12978 	public static class CreateViewContext extends ParserRuleContext {
12979 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
12980 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
12981 		public ViewNameContext viewName() {
12982 			return getRuleContext(ViewNameContext.class,0);
12983 		}
12984 		public CreateOrAlterViewClauseContext createOrAlterViewClause() {
12985 			return getRuleContext(CreateOrAlterViewClauseContext.class,0);
12986 		}
12987 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
12988 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
12989 		public CreateViewContext(ParserRuleContext parent, int invokingState) {
12990 			super(parent, invokingState);
12991 		}
12992 		@Override public int getRuleIndex() { return RULE_createView; }
12993 		@Override
12994 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
12995 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateView(this);
12996 			else return visitor.visitChildren(this);
12997 		}
12998 	}
12999 
13000 	public final CreateViewContext createView() throws RecognitionException {
13001 		CreateViewContext _localctx = new CreateViewContext(_ctx, getState());
13002 		enterRule(_localctx, 272, RULE_createView);
13003 		int _la;
13004 		try {
13005 			enterOuterAlt(_localctx, 1);
13006 			{
13007 			setState(2178);
13008 			match(CREATE);
13009 			setState(2181);
13010 			_errHandler.sync(this);
13011 			_la = _input.LA(1);
13012 			if (_la==OR) {
13013 				{
13014 				setState(2179);
13015 				match(OR);
13016 				setState(2180);
13017 				match(ALTER);
13018 				}
13019 			}
13020 
13021 			setState(2183);
13022 			match(VIEW);
13023 			setState(2184);
13024 			viewName();
13025 			setState(2185);
13026 			createOrAlterViewClause();
13027 			}
13028 		}
13029 		catch (RecognitionException re) {
13030 			_localctx.exception = re;
13031 			_errHandler.reportError(this, re);
13032 			_errHandler.recover(this, re);
13033 		}
13034 		finally {
13035 			exitRule();
13036 		}
13037 		return _localctx;
13038 	}
13039 
13040 	public static class CreateTriggerContext extends ParserRuleContext {
13041 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
13042 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
13043 		public TriggerNameContext triggerName() {
13044 			return getRuleContext(TriggerNameContext.class,0);
13045 		}
13046 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
13047 		public TriggerTargetContext triggerTarget() {
13048 			return getRuleContext(TriggerTargetContext.class,0);
13049 		}
13050 		public CreateTriggerClauseContext createTriggerClause() {
13051 			return getRuleContext(CreateTriggerClauseContext.class,0);
13052 		}
13053 		public TerminalNode OR() { return getToken(SQLServerStatementParser.OR, 0); }
13054 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13055 		public CreateTriggerContext(ParserRuleContext parent, int invokingState) {
13056 			super(parent, invokingState);
13057 		}
13058 		@Override public int getRuleIndex() { return RULE_createTrigger; }
13059 		@Override
13060 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13061 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTrigger(this);
13062 			else return visitor.visitChildren(this);
13063 		}
13064 	}
13065 
13066 	public final CreateTriggerContext createTrigger() throws RecognitionException {
13067 		CreateTriggerContext _localctx = new CreateTriggerContext(_ctx, getState());
13068 		enterRule(_localctx, 274, RULE_createTrigger);
13069 		int _la;
13070 		try {
13071 			enterOuterAlt(_localctx, 1);
13072 			{
13073 			setState(2187);
13074 			match(CREATE);
13075 			setState(2190);
13076 			_errHandler.sync(this);
13077 			_la = _input.LA(1);
13078 			if (_la==OR) {
13079 				{
13080 				setState(2188);
13081 				match(OR);
13082 				setState(2189);
13083 				match(ALTER);
13084 				}
13085 			}
13086 
13087 			setState(2192);
13088 			match(TRIGGER);
13089 			setState(2193);
13090 			triggerName();
13091 			setState(2194);
13092 			match(ON);
13093 			setState(2195);
13094 			triggerTarget();
13095 			setState(2196);
13096 			createTriggerClause();
13097 			}
13098 		}
13099 		catch (RecognitionException re) {
13100 			_localctx.exception = re;
13101 			_errHandler.reportError(this, re);
13102 			_errHandler.recover(this, re);
13103 		}
13104 		finally {
13105 			exitRule();
13106 		}
13107 		return _localctx;
13108 	}
13109 
13110 	public static class CreateSequenceContext extends ParserRuleContext {
13111 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
13112 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
13113 		public SequenceNameContext sequenceName() {
13114 			return getRuleContext(SequenceNameContext.class,0);
13115 		}
13116 		public List<CreateOrAlterSequenceClauseContext> createOrAlterSequenceClause() {
13117 			return getRuleContexts(CreateOrAlterSequenceClauseContext.class);
13118 		}
13119 		public CreateOrAlterSequenceClauseContext createOrAlterSequenceClause(int i) {
13120 			return getRuleContext(CreateOrAlterSequenceClauseContext.class,i);
13121 		}
13122 		public CreateSequenceContext(ParserRuleContext parent, int invokingState) {
13123 			super(parent, invokingState);
13124 		}
13125 		@Override public int getRuleIndex() { return RULE_createSequence; }
13126 		@Override
13127 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13128 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateSequence(this);
13129 			else return visitor.visitChildren(this);
13130 		}
13131 	}
13132 
13133 	public final CreateSequenceContext createSequence() throws RecognitionException {
13134 		CreateSequenceContext _localctx = new CreateSequenceContext(_ctx, getState());
13135 		enterRule(_localctx, 276, RULE_createSequence);
13136 		int _la;
13137 		try {
13138 			enterOuterAlt(_localctx, 1);
13139 			{
13140 			setState(2198);
13141 			match(CREATE);
13142 			setState(2199);
13143 			match(SEQUENCE);
13144 			setState(2200);
13145 			sequenceName();
13146 			setState(2204);
13147 			_errHandler.sync(this);
13148 			_la = _input.LA(1);
13149 			while (_la==AS || _la==NO || _la==START || ((((_la - 549)) & ~0x3f) == 0 && ((1L << (_la - 549)) & ((1L << (INCREMENT - 549)) | (1L << (CYCLE - 549)) | (1L << (CACHE - 549)) | (1L << (MINVALUE - 549)) | (1L << (MAXVALUE - 549)) | (1L << (RESTART - 549)))) != 0)) {
13150 				{
13151 				{
13152 				setState(2201);
13153 				createOrAlterSequenceClause();
13154 				}
13155 				}
13156 				setState(2206);
13157 				_errHandler.sync(this);
13158 				_la = _input.LA(1);
13159 			}
13160 			}
13161 		}
13162 		catch (RecognitionException re) {
13163 			_localctx.exception = re;
13164 			_errHandler.reportError(this, re);
13165 			_errHandler.recover(this, re);
13166 		}
13167 		finally {
13168 			exitRule();
13169 		}
13170 		return _localctx;
13171 	}
13172 
13173 	public static class CreateServiceContext extends ParserRuleContext {
13174 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
13175 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
13176 		public ServiceNameContext serviceName() {
13177 			return getRuleContext(ServiceNameContext.class,0);
13178 		}
13179 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
13180 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
13181 		public QueueNameContext queueName() {
13182 			return getRuleContext(QueueNameContext.class,0);
13183 		}
13184 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
13185 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
13186 		public CreateServiceClauseContext createServiceClause() {
13187 			return getRuleContext(CreateServiceClauseContext.class,0);
13188 		}
13189 		public CreateServiceContext(ParserRuleContext parent, int invokingState) {
13190 			super(parent, invokingState);
13191 		}
13192 		@Override public int getRuleIndex() { return RULE_createService; }
13193 		@Override
13194 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13195 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateService(this);
13196 			else return visitor.visitChildren(this);
13197 		}
13198 	}
13199 
13200 	public final CreateServiceContext createService() throws RecognitionException {
13201 		CreateServiceContext _localctx = new CreateServiceContext(_ctx, getState());
13202 		enterRule(_localctx, 278, RULE_createService);
13203 		int _la;
13204 		try {
13205 			enterOuterAlt(_localctx, 1);
13206 			{
13207 			setState(2207);
13208 			match(CREATE);
13209 			setState(2208);
13210 			match(SERVICE);
13211 			setState(2209);
13212 			serviceName();
13213 			setState(2212);
13214 			_errHandler.sync(this);
13215 			_la = _input.LA(1);
13216 			if (_la==AUTHORIZATION) {
13217 				{
13218 				setState(2210);
13219 				match(AUTHORIZATION);
13220 				setState(2211);
13221 				match(STRING_);
13222 				}
13223 			}
13224 
13225 			setState(2214);
13226 			match(ON);
13227 			setState(2215);
13228 			match(QUEUE);
13229 			setState(2216);
13230 			queueName();
13231 			setState(2218);
13232 			_errHandler.sync(this);
13233 			_la = _input.LA(1);
13234 			if (_la==LP_) {
13235 				{
13236 				setState(2217);
13237 				createServiceClause();
13238 				}
13239 			}
13240 
13241 			}
13242 		}
13243 		catch (RecognitionException re) {
13244 			_localctx.exception = re;
13245 			_errHandler.reportError(this, re);
13246 			_errHandler.recover(this, re);
13247 		}
13248 		finally {
13249 			exitRule();
13250 		}
13251 		return _localctx;
13252 	}
13253 
13254 	public static class CreateSchemaContext extends ParserRuleContext {
13255 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
13256 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
13257 		public SchemaNameClauseContext schemaNameClause() {
13258 			return getRuleContext(SchemaNameClauseContext.class,0);
13259 		}
13260 		public List<SchemaElementContext> schemaElement() {
13261 			return getRuleContexts(SchemaElementContext.class);
13262 		}
13263 		public SchemaElementContext schemaElement(int i) {
13264 			return getRuleContext(SchemaElementContext.class,i);
13265 		}
13266 		public CreateSchemaContext(ParserRuleContext parent, int invokingState) {
13267 			super(parent, invokingState);
13268 		}
13269 		@Override public int getRuleIndex() { return RULE_createSchema; }
13270 		@Override
13271 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13272 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateSchema(this);
13273 			else return visitor.visitChildren(this);
13274 		}
13275 	}
13276 
13277 	public final CreateSchemaContext createSchema() throws RecognitionException {
13278 		CreateSchemaContext _localctx = new CreateSchemaContext(_ctx, getState());
13279 		enterRule(_localctx, 280, RULE_createSchema);
13280 		int _la;
13281 		try {
13282 			enterOuterAlt(_localctx, 1);
13283 			{
13284 			setState(2220);
13285 			match(CREATE);
13286 			setState(2221);
13287 			match(SCHEMA);
13288 			setState(2222);
13289 			schemaNameClause();
13290 			setState(2226);
13291 			_errHandler.sync(this);
13292 			_la = _input.LA(1);
13293 			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << CREATE) | (1L << GRANT) | (1L << REVOKE))) != 0) || _la==DENY) {
13294 				{
13295 				{
13296 				setState(2223);
13297 				schemaElement();
13298 				}
13299 				}
13300 				setState(2228);
13301 				_errHandler.sync(this);
13302 				_la = _input.LA(1);
13303 			}
13304 			}
13305 		}
13306 		catch (RecognitionException re) {
13307 			_localctx.exception = re;
13308 			_errHandler.reportError(this, re);
13309 			_errHandler.recover(this, re);
13310 		}
13311 		finally {
13312 			exitRule();
13313 		}
13314 		return _localctx;
13315 	}
13316 
13317 	public static class AlterTableContext extends ParserRuleContext {
13318 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13319 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
13320 		public TableNameContext tableName() {
13321 			return getRuleContext(TableNameContext.class,0);
13322 		}
13323 		public List<AlterDefinitionClauseContext> alterDefinitionClause() {
13324 			return getRuleContexts(AlterDefinitionClauseContext.class);
13325 		}
13326 		public AlterDefinitionClauseContext alterDefinitionClause(int i) {
13327 			return getRuleContext(AlterDefinitionClauseContext.class,i);
13328 		}
13329 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
13330 		public TerminalNode COMMA_(int i) {
13331 			return getToken(SQLServerStatementParser.COMMA_, i);
13332 		}
13333 		public AlterTableContext(ParserRuleContext parent, int invokingState) {
13334 			super(parent, invokingState);
13335 		}
13336 		@Override public int getRuleIndex() { return RULE_alterTable; }
13337 		@Override
13338 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13339 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTable(this);
13340 			else return visitor.visitChildren(this);
13341 		}
13342 	}
13343 
13344 	public final AlterTableContext alterTable() throws RecognitionException {
13345 		AlterTableContext _localctx = new AlterTableContext(_ctx, getState());
13346 		enterRule(_localctx, 282, RULE_alterTable);
13347 		int _la;
13348 		try {
13349 			enterOuterAlt(_localctx, 1);
13350 			{
13351 			setState(2229);
13352 			match(ALTER);
13353 			setState(2230);
13354 			match(TABLE);
13355 			setState(2231);
13356 			tableName();
13357 			setState(2232);
13358 			alterDefinitionClause();
13359 			setState(2237);
13360 			_errHandler.sync(this);
13361 			_la = _input.LA(1);
13362 			while (_la==COMMA_) {
13363 				{
13364 				{
13365 				setState(2233);
13366 				match(COMMA_);
13367 				setState(2234);
13368 				alterDefinitionClause();
13369 				}
13370 				}
13371 				setState(2239);
13372 				_errHandler.sync(this);
13373 				_la = _input.LA(1);
13374 			}
13375 			}
13376 		}
13377 		catch (RecognitionException re) {
13378 			_localctx.exception = re;
13379 			_errHandler.reportError(this, re);
13380 			_errHandler.recover(this, re);
13381 		}
13382 		finally {
13383 			exitRule();
13384 		}
13385 		return _localctx;
13386 	}
13387 
13388 	public static class AlterIndexContext extends ParserRuleContext {
13389 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13390 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
13391 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
13392 		public TableNameContext tableName() {
13393 			return getRuleContext(TableNameContext.class,0);
13394 		}
13395 		public AlterIndexClauseContext alterIndexClause() {
13396 			return getRuleContext(AlterIndexClauseContext.class,0);
13397 		}
13398 		public IndexNameContext indexName() {
13399 			return getRuleContext(IndexNameContext.class,0);
13400 		}
13401 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
13402 		public AlterIndexContext(ParserRuleContext parent, int invokingState) {
13403 			super(parent, invokingState);
13404 		}
13405 		@Override public int getRuleIndex() { return RULE_alterIndex; }
13406 		@Override
13407 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13408 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterIndex(this);
13409 			else return visitor.visitChildren(this);
13410 		}
13411 	}
13412 
13413 	public final AlterIndexContext alterIndex() throws RecognitionException {
13414 		AlterIndexContext _localctx = new AlterIndexContext(_ctx, getState());
13415 		enterRule(_localctx, 284, RULE_alterIndex);
13416 		try {
13417 			enterOuterAlt(_localctx, 1);
13418 			{
13419 			setState(2240);
13420 			match(ALTER);
13421 			setState(2241);
13422 			match(INDEX);
13423 			setState(2244);
13424 			_errHandler.sync(this);
13425 			switch (_input.LA(1)) {
13426 			case TRUNCATE:
13427 			case SCHEMA:
13428 			case COLUMNS:
13429 			case PRECISION:
13430 			case FUNCTION:
13431 			case TRIGGER:
13432 			case CAST:
13433 			case TRIM:
13434 			case SUBSTRING:
13435 			case RIGHT:
13436 			case OFF:
13437 			case GROUP:
13438 			case LIMIT:
13439 			case OFFSET:
13440 			case SAVEPOINT:
13441 			case BOOLEAN:
13442 			case ARRAY:
13443 			case DATE:
13444 			case TIMESTAMP:
13445 			case LOCALTIME:
13446 			case LOCALTIMESTAMP:
13447 			case YEAR:
13448 			case QUARTER:
13449 			case MONTH:
13450 			case WEEK:
13451 			case DAY:
13452 			case SECOND:
13453 			case MICROSECOND:
13454 			case MAX:
13455 			case MIN:
13456 			case SUM:
13457 			case COUNT:
13458 			case AVG:
13459 			case ENABLE:
13460 			case DISABLE:
13461 			case INSTANCE:
13462 			case DO:
13463 			case DEFINER:
13464 			case SQL:
13465 			case CASCADED:
13466 			case LOCAL:
13467 			case NEXT:
13468 			case NAME:
13469 			case INTEGER:
13470 			case TYPE:
13471 			case TEXT:
13472 			case VIEWS:
13473 			case READ_ONLY:
13474 			case DATABASE:
13475 			case RETURNS:
13476 			case DATEPART:
13477 			case PASSWORD:
13478 			case BINARY:
13479 			case HIDDEN_:
13480 			case MOD:
13481 			case PARTITION:
13482 			case PARTITIONS:
13483 			case TOP:
13484 			case ROW:
13485 			case ROWS:
13486 			case XOR:
13487 			case ALWAYS:
13488 			case USER:
13489 			case ROLE:
13490 			case START:
13491 			case ALGORITHM:
13492 			case AUTO:
13493 			case BLOCKERS:
13494 			case CLUSTERED:
13495 			case NONCLUSTERED:
13496 			case COLUMNSTORE:
13497 			case CONTENT:
13498 			case YEARS:
13499 			case MONTHS:
13500 			case WEEKS:
13501 			case DAYS:
13502 			case MINUTES:
13503 			case DENY:
13504 			case DETERMINISTIC:
13505 			case DISTRIBUTION:
13506 			case DOCUMENT:
13507 			case DURABILITY:
13508 			case ENCRYPTED:
13509 			case FILESTREAM:
13510 			case FILETABLE:
13511 			case FILLFACTOR:
13512 			case FOLLOWING:
13513 			case HASH:
13514 			case HEAP:
13515 			case INBOUND:
13516 			case OUTBOUND:
13517 			case UNBOUNDED:
13518 			case INFINITE:
13519 			case LOGIN:
13520 			case MASKED:
13521 			case MAXDOP:
13522 			case MOVE:
13523 			case NOCHECK:
13524 			case OBJECT:
13525 			case ONLINE:
13526 			case OVER:
13527 			case PAGE:
13528 			case PAUSED:
13529 			case PERIOD:
13530 			case PERSISTED:
13531 			case PRECEDING:
13532 			case RANDOMIZED:
13533 			case RANGE:
13534 			case REBUILD:
13535 			case REPLICATE:
13536 			case REPLICATION:
13537 			case RESUMABLE:
13538 			case ROWGUIDCOL:
13539 			case SAVE:
13540 			case SELF:
13541 			case SPARSE:
13542 			case SWITCH:
13543 			case TRAN:
13544 			case TRANCOUNT:
13545 			case CONTROL:
13546 			case CONCAT:
13547 			case TAKE:
13548 			case OWNERSHIP:
13549 			case DEFINITION:
13550 			case APPLICATION:
13551 			case ASSEMBLY:
13552 			case SYMMETRIC:
13553 			case ASYMMETRIC:
13554 			case SERVER:
13555 			case RECEIVE:
13556 			case CHANGE:
13557 			case TRACE:
13558 			case TRACKING:
13559 			case RESOURCES:
13560 			case SETTINGS:
13561 			case STATE:
13562 			case AVAILABILITY:
13563 			case CREDENTIAL:
13564 			case ENDPOINT:
13565 			case EVENT:
13566 			case NOTIFICATION:
13567 			case LINKED:
13568 			case AUDIT:
13569 			case DDL:
13570 			case XML:
13571 			case IMPERSONATE:
13572 			case SECURABLES:
13573 			case AUTHENTICATE:
13574 			case EXTERNAL:
13575 			case ACCESS:
13576 			case ADMINISTER:
13577 			case BULK:
13578 			case OPERATIONS:
13579 			case UNSAFE:
13580 			case SHUTDOWN:
13581 			case SCOPED:
13582 			case CONFIGURATION:
13583 			case DATASPACE:
13584 			case SERVICE:
13585 			case CERTIFICATE:
13586 			case CONTRACT:
13587 			case ENCRYPTION:
13588 			case MASTER:
13589 			case DATA:
13590 			case SOURCE:
13591 			case FILE:
13592 			case FORMAT:
13593 			case LIBRARY:
13594 			case FULLTEXT:
13595 			case MASK:
13596 			case UNMASK:
13597 			case MESSAGE:
13598 			case REMOTE:
13599 			case BINDING:
13600 			case ROUTE:
13601 			case SECURITY:
13602 			case POLICY:
13603 			case AGGREGATE:
13604 			case QUEUE:
13605 			case RULE:
13606 			case SYNONYM:
13607 			case COLLECTION:
13608 			case SCRIPT:
13609 			case KILL:
13610 			case BACKUP:
13611 			case LOG:
13612 			case SHOWPLAN:
13613 			case SUBSCRIBE:
13614 			case QUERY:
13615 			case NOTIFICATIONS:
13616 			case CHECKPOINT:
13617 			case SEQUENCE:
13618 			case ABORT_AFTER_WAIT:
13619 			case ALLOW_PAGE_LOCKS:
13620 			case ALLOW_ROW_LOCKS:
13621 			case ALL_SPARSE_COLUMNS:
13622 			case BUCKET_COUNT:
13623 			case COLUMNSTORE_ARCHIVE:
13624 			case COLUMN_ENCRYPTION_KEY:
13625 			case COLUMN_SET:
13626 			case COMPRESSION_DELAY:
13627 			case DATABASE_DEAULT:
13628 			case DATA_COMPRESSION:
13629 			case DATA_CONSISTENCY_CHECK:
13630 			case ENCRYPTION_TYPE:
13631 			case SYSTEM_TIME:
13632 			case SYSTEM_VERSIONING:
13633 			case TEXTIMAGE_ON:
13634 			case WAIT_AT_LOW_PRIORITY:
13635 			case STATISTICS_INCREMENTAL:
13636 			case STATISTICS_NORECOMPUTE:
13637 			case ROUND_ROBIN:
13638 			case SCHEMA_AND_DATA:
13639 			case SCHEMA_ONLY:
13640 			case SORT_IN_TEMPDB:
13641 			case IGNORE_DUP_KEY:
13642 			case IMPLICIT_TRANSACTIONS:
13643 			case MAX_DURATION:
13644 			case MEMORY_OPTIMIZED:
13645 			case MIGRATION_STATE:
13646 			case PAD_INDEX:
13647 			case REMOTE_DATA_ARCHIVE:
13648 			case FILESTREAM_ON:
13649 			case FILETABLE_COLLATE_FILENAME:
13650 			case FILETABLE_DIRECTORY:
13651 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
13652 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
13653 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
13654 			case FILTER_PREDICATE:
13655 			case HISTORY_RETENTION_PERIOD:
13656 			case HISTORY_TABLE:
13657 			case LOCK_ESCALATION:
13658 			case DROP_EXISTING:
13659 			case ROW_NUMBER:
13660 			case FIRST:
13661 			case DATETIME2:
13662 			case OUTPUT:
13663 			case INSERTED:
13664 			case DELETED:
13665 			case FILENAME:
13666 			case SIZE:
13667 			case MAXSIZE:
13668 			case FILEGROWTH:
13669 			case UNLIMITED:
13670 			case KB:
13671 			case MB:
13672 			case GB:
13673 			case TB:
13674 			case CONTAINS:
13675 			case MEMORY_OPTIMIZED_DATA:
13676 			case FILEGROUP:
13677 			case NON_TRANSACTED_ACCESS:
13678 			case DB_CHAINING:
13679 			case TRUSTWORTHY:
13680 			case FORWARD_ONLY:
13681 			case KEYSET:
13682 			case FAST_FORWARD:
13683 			case SCROLL_LOCKS:
13684 			case OPTIMISTIC:
13685 			case TYPE_WARNING:
13686 			case SCHEMABINDING:
13687 			case CALLER:
13688 			case INPUT:
13689 			case OWNER:
13690 			case SNAPSHOT:
13691 			case REPEATABLE:
13692 			case SERIALIZABLE:
13693 			case NATIVE_COMPILATION:
13694 			case VIEW_METADATA:
13695 			case INSTEAD:
13696 			case APPEND:
13697 			case INCREMENT:
13698 			case CACHE:
13699 			case MINVALUE:
13700 			case MAXVALUE:
13701 			case RESTART:
13702 			case LOB_COMPACTION:
13703 			case COMPRESS_ALL_ROW_GROUPS:
13704 			case REORGANIZE:
13705 			case RESUME:
13706 			case PAUSE:
13707 			case ABORT:
13708 			case ACCELERATED_DATABASE_RECOVERY:
13709 			case PERSISTENT_VERSION_STORE_FILEGROUP:
13710 			case IMMEDIATE:
13711 			case NO_WAIT:
13712 			case TARGET_RECOVERY_TIME:
13713 			case SECONDS:
13714 			case HONOR_BROKER_PRIORITY:
13715 			case ERROR_BROKER_CONVERSATIONS:
13716 			case NEW_BROKER:
13717 			case DISABLE_BROKER:
13718 			case ENABLE_BROKER:
13719 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
13720 			case READ_COMMITTED_SNAPSHOT:
13721 			case ALLOW_SNAPSHOT_ISOLATION:
13722 			case RECURSIVE_TRIGGERS:
13723 			case QUOTED_IDENTIFIER:
13724 			case NUMERIC_ROUNDABORT:
13725 			case CONCAT_NULL_YIELDS_NULL:
13726 			case COMPATIBILITY_LEVEL:
13727 			case ARITHABORT:
13728 			case ANSI_WARNINGS:
13729 			case ANSI_PADDING:
13730 			case ANSI_NULLS:
13731 			case ANSI_NULL_DEFAULT:
13732 			case PAGE_VERIFY:
13733 			case CHECKSUM:
13734 			case TORN_PAGE_DETECTION:
13735 			case BULK_LOGGED:
13736 			case RECOVERY:
13737 			case TOTAL_EXECUTION_CPU_TIME_MS:
13738 			case TOTAL_COMPILE_CPU_TIME_MS:
13739 			case STALE_CAPTURE_POLICY_THRESHOLD:
13740 			case EXECUTION_COUNT:
13741 			case QUERY_CAPTURE_POLICY:
13742 			case WAIT_STATS_CAPTURE_MODE:
13743 			case MAX_PLANS_PER_QUERY:
13744 			case QUERY_CAPTURE_MODE:
13745 			case SIZE_BASED_CLEANUP_MODE:
13746 			case INTERVAL_LENGTH_MINUTES:
13747 			case MAX_STORAGE_SIZE_MB:
13748 			case DATA_FLUSH_INTERVAL_SECONDS:
13749 			case CLEANUP_POLICY:
13750 			case CUSTOM:
13751 			case STALE_QUERY_THRESHOLD_DAYS:
13752 			case OPERATION_MODE:
13753 			case QUERY_STORE:
13754 			case CURSOR_DEFAULT:
13755 			case GLOBAL:
13756 			case CURSOR_CLOSE_ON_COMMIT:
13757 			case HOURS:
13758 			case CHANGE_RETENTION:
13759 			case AUTO_CLEANUP:
13760 			case CHANGE_TRACKING:
13761 			case AUTOMATIC_TUNING:
13762 			case FORCE_LAST_GOOD_PLAN:
13763 			case AUTO_UPDATE_STATISTICS_ASYNC:
13764 			case AUTO_UPDATE_STATISTICS:
13765 			case AUTO_SHRINK:
13766 			case AUTO_CREATE_STATISTICS:
13767 			case INCREMENTAL:
13768 			case AUTO_CLOSE:
13769 			case DATA_RETENTION:
13770 			case TEMPORAL_HISTORY_RETENTION:
13771 			case EDITION:
13772 			case MIXED_PAGE_ALLOCATION:
13773 			case DISABLED:
13774 			case ALLOWED:
13775 			case HADR:
13776 			case MULTI_USER:
13777 			case RESTRICTED_USER:
13778 			case SINGLE_USER:
13779 			case OFFLINE:
13780 			case EMERGENCY:
13781 			case SUSPEND:
13782 			case DATE_CORRELATION_OPTIMIZATION:
13783 			case ELASTIC_POOL:
13784 			case SERVICE_OBJECTIVE:
13785 			case DATABASE_NAME:
13786 			case ALLOW_CONNECTIONS:
13787 			case GEO:
13788 			case NAMED:
13789 			case DATEFIRST:
13790 			case BACKUP_STORAGE_REDUNDANCY:
13791 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
13792 			case SECONDARY:
13793 			case FAILOVER:
13794 			case DEFAULT_FULLTEXT_LANGUAGE:
13795 			case DEFAULT_LANGUAGE:
13796 			case INLINE:
13797 			case NESTED_TRIGGERS:
13798 			case TRANSFORM_NOISE_WORDS:
13799 			case TWO_DIGIT_YEAR_CUTOFF:
13800 			case PERSISTENT_LOG_BUFFER:
13801 			case DIRECTORY_NAME:
13802 			case DATEFORMAT:
13803 			case DELAYED_DURABILITY:
13804 			case AUTHORIZATION:
13805 			case TRANSFER:
13806 			case PROVIDER:
13807 			case SID:
13808 			case SEARCH:
13809 			case MEMBER:
13810 			case JSON:
13811 			case IDENTIFIER_:
13812 			case DELIMITED_IDENTIFIER_:
13813 				{
13814 				setState(2242);
13815 				indexName();
13816 				}
13817 				break;
13818 			case ALL:
13819 				{
13820 				setState(2243);
13821 				match(ALL);
13822 				}
13823 				break;
13824 			default:
13825 				throw new NoViableAltException(this);
13826 			}
13827 			setState(2246);
13828 			match(ON);
13829 			setState(2247);
13830 			tableName();
13831 			setState(2248);
13832 			alterIndexClause();
13833 			}
13834 		}
13835 		catch (RecognitionException re) {
13836 			_localctx.exception = re;
13837 			_errHandler.reportError(this, re);
13838 			_errHandler.recover(this, re);
13839 		}
13840 		finally {
13841 			exitRule();
13842 		}
13843 		return _localctx;
13844 	}
13845 
13846 	public static class AlterDatabaseContext extends ParserRuleContext {
13847 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
13848 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
13849 		public DatabaseNameContext databaseName() {
13850 			return getRuleContext(DatabaseNameContext.class,0);
13851 		}
13852 		public TerminalNode CURRENT() { return getToken(SQLServerStatementParser.CURRENT, 0); }
13853 		public List<AlterDatabaseClauseContext> alterDatabaseClause() {
13854 			return getRuleContexts(AlterDatabaseClauseContext.class);
13855 		}
13856 		public AlterDatabaseClauseContext alterDatabaseClause(int i) {
13857 			return getRuleContext(AlterDatabaseClauseContext.class,i);
13858 		}
13859 		public AlterDatabaseContext(ParserRuleContext parent, int invokingState) {
13860 			super(parent, invokingState);
13861 		}
13862 		@Override public int getRuleIndex() { return RULE_alterDatabase; }
13863 		@Override
13864 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
13865 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDatabase(this);
13866 			else return visitor.visitChildren(this);
13867 		}
13868 	}
13869 
13870 	public final AlterDatabaseContext alterDatabase() throws RecognitionException {
13871 		AlterDatabaseContext _localctx = new AlterDatabaseContext(_ctx, getState());
13872 		enterRule(_localctx, 286, RULE_alterDatabase);
13873 		int _la;
13874 		try {
13875 			enterOuterAlt(_localctx, 1);
13876 			{
13877 			setState(2250);
13878 			match(ALTER);
13879 			setState(2251);
13880 			match(DATABASE);
13881 			setState(2254);
13882 			_errHandler.sync(this);
13883 			switch (_input.LA(1)) {
13884 			case TRUNCATE:
13885 			case SCHEMA:
13886 			case COLUMNS:
13887 			case PRECISION:
13888 			case FUNCTION:
13889 			case TRIGGER:
13890 			case CAST:
13891 			case TRIM:
13892 			case SUBSTRING:
13893 			case RIGHT:
13894 			case OFF:
13895 			case GROUP:
13896 			case LIMIT:
13897 			case OFFSET:
13898 			case SAVEPOINT:
13899 			case BOOLEAN:
13900 			case ARRAY:
13901 			case DATE:
13902 			case TIMESTAMP:
13903 			case LOCALTIME:
13904 			case LOCALTIMESTAMP:
13905 			case YEAR:
13906 			case QUARTER:
13907 			case MONTH:
13908 			case WEEK:
13909 			case DAY:
13910 			case SECOND:
13911 			case MICROSECOND:
13912 			case MAX:
13913 			case MIN:
13914 			case SUM:
13915 			case COUNT:
13916 			case AVG:
13917 			case ENABLE:
13918 			case DISABLE:
13919 			case INSTANCE:
13920 			case DO:
13921 			case DEFINER:
13922 			case SQL:
13923 			case CASCADED:
13924 			case LOCAL:
13925 			case NEXT:
13926 			case NAME:
13927 			case INTEGER:
13928 			case TYPE:
13929 			case TEXT:
13930 			case VIEWS:
13931 			case READ_ONLY:
13932 			case DATABASE:
13933 			case RETURNS:
13934 			case DATEPART:
13935 			case PASSWORD:
13936 			case BINARY:
13937 			case HIDDEN_:
13938 			case MOD:
13939 			case PARTITION:
13940 			case PARTITIONS:
13941 			case TOP:
13942 			case ROW:
13943 			case ROWS:
13944 			case XOR:
13945 			case ALWAYS:
13946 			case USER:
13947 			case ROLE:
13948 			case START:
13949 			case ALGORITHM:
13950 			case AUTO:
13951 			case BLOCKERS:
13952 			case CLUSTERED:
13953 			case NONCLUSTERED:
13954 			case COLUMNSTORE:
13955 			case CONTENT:
13956 			case YEARS:
13957 			case MONTHS:
13958 			case WEEKS:
13959 			case DAYS:
13960 			case MINUTES:
13961 			case DENY:
13962 			case DETERMINISTIC:
13963 			case DISTRIBUTION:
13964 			case DOCUMENT:
13965 			case DURABILITY:
13966 			case ENCRYPTED:
13967 			case FILESTREAM:
13968 			case FILETABLE:
13969 			case FILLFACTOR:
13970 			case FOLLOWING:
13971 			case HASH:
13972 			case HEAP:
13973 			case INBOUND:
13974 			case OUTBOUND:
13975 			case UNBOUNDED:
13976 			case INFINITE:
13977 			case LOGIN:
13978 			case MASKED:
13979 			case MAXDOP:
13980 			case MOVE:
13981 			case NOCHECK:
13982 			case OBJECT:
13983 			case ONLINE:
13984 			case OVER:
13985 			case PAGE:
13986 			case PAUSED:
13987 			case PERIOD:
13988 			case PERSISTED:
13989 			case PRECEDING:
13990 			case RANDOMIZED:
13991 			case RANGE:
13992 			case REBUILD:
13993 			case REPLICATE:
13994 			case REPLICATION:
13995 			case RESUMABLE:
13996 			case ROWGUIDCOL:
13997 			case SAVE:
13998 			case SELF:
13999 			case SPARSE:
14000 			case SWITCH:
14001 			case TRAN:
14002 			case TRANCOUNT:
14003 			case CONTROL:
14004 			case CONCAT:
14005 			case TAKE:
14006 			case OWNERSHIP:
14007 			case DEFINITION:
14008 			case APPLICATION:
14009 			case ASSEMBLY:
14010 			case SYMMETRIC:
14011 			case ASYMMETRIC:
14012 			case SERVER:
14013 			case RECEIVE:
14014 			case CHANGE:
14015 			case TRACE:
14016 			case TRACKING:
14017 			case RESOURCES:
14018 			case SETTINGS:
14019 			case STATE:
14020 			case AVAILABILITY:
14021 			case CREDENTIAL:
14022 			case ENDPOINT:
14023 			case EVENT:
14024 			case NOTIFICATION:
14025 			case LINKED:
14026 			case AUDIT:
14027 			case DDL:
14028 			case XML:
14029 			case IMPERSONATE:
14030 			case SECURABLES:
14031 			case AUTHENTICATE:
14032 			case EXTERNAL:
14033 			case ACCESS:
14034 			case ADMINISTER:
14035 			case BULK:
14036 			case OPERATIONS:
14037 			case UNSAFE:
14038 			case SHUTDOWN:
14039 			case SCOPED:
14040 			case CONFIGURATION:
14041 			case DATASPACE:
14042 			case SERVICE:
14043 			case CERTIFICATE:
14044 			case CONTRACT:
14045 			case ENCRYPTION:
14046 			case MASTER:
14047 			case DATA:
14048 			case SOURCE:
14049 			case FILE:
14050 			case FORMAT:
14051 			case LIBRARY:
14052 			case FULLTEXT:
14053 			case MASK:
14054 			case UNMASK:
14055 			case MESSAGE:
14056 			case REMOTE:
14057 			case BINDING:
14058 			case ROUTE:
14059 			case SECURITY:
14060 			case POLICY:
14061 			case AGGREGATE:
14062 			case QUEUE:
14063 			case RULE:
14064 			case SYNONYM:
14065 			case COLLECTION:
14066 			case SCRIPT:
14067 			case KILL:
14068 			case BACKUP:
14069 			case LOG:
14070 			case SHOWPLAN:
14071 			case SUBSCRIBE:
14072 			case QUERY:
14073 			case NOTIFICATIONS:
14074 			case CHECKPOINT:
14075 			case SEQUENCE:
14076 			case ABORT_AFTER_WAIT:
14077 			case ALLOW_PAGE_LOCKS:
14078 			case ALLOW_ROW_LOCKS:
14079 			case ALL_SPARSE_COLUMNS:
14080 			case BUCKET_COUNT:
14081 			case COLUMNSTORE_ARCHIVE:
14082 			case COLUMN_ENCRYPTION_KEY:
14083 			case COLUMN_SET:
14084 			case COMPRESSION_DELAY:
14085 			case DATABASE_DEAULT:
14086 			case DATA_COMPRESSION:
14087 			case DATA_CONSISTENCY_CHECK:
14088 			case ENCRYPTION_TYPE:
14089 			case SYSTEM_TIME:
14090 			case SYSTEM_VERSIONING:
14091 			case TEXTIMAGE_ON:
14092 			case WAIT_AT_LOW_PRIORITY:
14093 			case STATISTICS_INCREMENTAL:
14094 			case STATISTICS_NORECOMPUTE:
14095 			case ROUND_ROBIN:
14096 			case SCHEMA_AND_DATA:
14097 			case SCHEMA_ONLY:
14098 			case SORT_IN_TEMPDB:
14099 			case IGNORE_DUP_KEY:
14100 			case IMPLICIT_TRANSACTIONS:
14101 			case MAX_DURATION:
14102 			case MEMORY_OPTIMIZED:
14103 			case MIGRATION_STATE:
14104 			case PAD_INDEX:
14105 			case REMOTE_DATA_ARCHIVE:
14106 			case FILESTREAM_ON:
14107 			case FILETABLE_COLLATE_FILENAME:
14108 			case FILETABLE_DIRECTORY:
14109 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
14110 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
14111 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
14112 			case FILTER_PREDICATE:
14113 			case HISTORY_RETENTION_PERIOD:
14114 			case HISTORY_TABLE:
14115 			case LOCK_ESCALATION:
14116 			case DROP_EXISTING:
14117 			case ROW_NUMBER:
14118 			case FIRST:
14119 			case DATETIME2:
14120 			case OUTPUT:
14121 			case INSERTED:
14122 			case DELETED:
14123 			case FILENAME:
14124 			case SIZE:
14125 			case MAXSIZE:
14126 			case FILEGROWTH:
14127 			case UNLIMITED:
14128 			case KB:
14129 			case MB:
14130 			case GB:
14131 			case TB:
14132 			case CONTAINS:
14133 			case MEMORY_OPTIMIZED_DATA:
14134 			case FILEGROUP:
14135 			case NON_TRANSACTED_ACCESS:
14136 			case DB_CHAINING:
14137 			case TRUSTWORTHY:
14138 			case FORWARD_ONLY:
14139 			case KEYSET:
14140 			case FAST_FORWARD:
14141 			case SCROLL_LOCKS:
14142 			case OPTIMISTIC:
14143 			case TYPE_WARNING:
14144 			case SCHEMABINDING:
14145 			case CALLER:
14146 			case INPUT:
14147 			case OWNER:
14148 			case SNAPSHOT:
14149 			case REPEATABLE:
14150 			case SERIALIZABLE:
14151 			case NATIVE_COMPILATION:
14152 			case VIEW_METADATA:
14153 			case INSTEAD:
14154 			case APPEND:
14155 			case INCREMENT:
14156 			case CACHE:
14157 			case MINVALUE:
14158 			case MAXVALUE:
14159 			case RESTART:
14160 			case LOB_COMPACTION:
14161 			case COMPRESS_ALL_ROW_GROUPS:
14162 			case REORGANIZE:
14163 			case RESUME:
14164 			case PAUSE:
14165 			case ABORT:
14166 			case ACCELERATED_DATABASE_RECOVERY:
14167 			case PERSISTENT_VERSION_STORE_FILEGROUP:
14168 			case IMMEDIATE:
14169 			case NO_WAIT:
14170 			case TARGET_RECOVERY_TIME:
14171 			case SECONDS:
14172 			case HONOR_BROKER_PRIORITY:
14173 			case ERROR_BROKER_CONVERSATIONS:
14174 			case NEW_BROKER:
14175 			case DISABLE_BROKER:
14176 			case ENABLE_BROKER:
14177 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
14178 			case READ_COMMITTED_SNAPSHOT:
14179 			case ALLOW_SNAPSHOT_ISOLATION:
14180 			case RECURSIVE_TRIGGERS:
14181 			case QUOTED_IDENTIFIER:
14182 			case NUMERIC_ROUNDABORT:
14183 			case CONCAT_NULL_YIELDS_NULL:
14184 			case COMPATIBILITY_LEVEL:
14185 			case ARITHABORT:
14186 			case ANSI_WARNINGS:
14187 			case ANSI_PADDING:
14188 			case ANSI_NULLS:
14189 			case ANSI_NULL_DEFAULT:
14190 			case PAGE_VERIFY:
14191 			case CHECKSUM:
14192 			case TORN_PAGE_DETECTION:
14193 			case BULK_LOGGED:
14194 			case RECOVERY:
14195 			case TOTAL_EXECUTION_CPU_TIME_MS:
14196 			case TOTAL_COMPILE_CPU_TIME_MS:
14197 			case STALE_CAPTURE_POLICY_THRESHOLD:
14198 			case EXECUTION_COUNT:
14199 			case QUERY_CAPTURE_POLICY:
14200 			case WAIT_STATS_CAPTURE_MODE:
14201 			case MAX_PLANS_PER_QUERY:
14202 			case QUERY_CAPTURE_MODE:
14203 			case SIZE_BASED_CLEANUP_MODE:
14204 			case INTERVAL_LENGTH_MINUTES:
14205 			case MAX_STORAGE_SIZE_MB:
14206 			case DATA_FLUSH_INTERVAL_SECONDS:
14207 			case CLEANUP_POLICY:
14208 			case CUSTOM:
14209 			case STALE_QUERY_THRESHOLD_DAYS:
14210 			case OPERATION_MODE:
14211 			case QUERY_STORE:
14212 			case CURSOR_DEFAULT:
14213 			case GLOBAL:
14214 			case CURSOR_CLOSE_ON_COMMIT:
14215 			case HOURS:
14216 			case CHANGE_RETENTION:
14217 			case AUTO_CLEANUP:
14218 			case CHANGE_TRACKING:
14219 			case AUTOMATIC_TUNING:
14220 			case FORCE_LAST_GOOD_PLAN:
14221 			case AUTO_UPDATE_STATISTICS_ASYNC:
14222 			case AUTO_UPDATE_STATISTICS:
14223 			case AUTO_SHRINK:
14224 			case AUTO_CREATE_STATISTICS:
14225 			case INCREMENTAL:
14226 			case AUTO_CLOSE:
14227 			case DATA_RETENTION:
14228 			case TEMPORAL_HISTORY_RETENTION:
14229 			case EDITION:
14230 			case MIXED_PAGE_ALLOCATION:
14231 			case DISABLED:
14232 			case ALLOWED:
14233 			case HADR:
14234 			case MULTI_USER:
14235 			case RESTRICTED_USER:
14236 			case SINGLE_USER:
14237 			case OFFLINE:
14238 			case EMERGENCY:
14239 			case SUSPEND:
14240 			case DATE_CORRELATION_OPTIMIZATION:
14241 			case ELASTIC_POOL:
14242 			case SERVICE_OBJECTIVE:
14243 			case DATABASE_NAME:
14244 			case ALLOW_CONNECTIONS:
14245 			case GEO:
14246 			case NAMED:
14247 			case DATEFIRST:
14248 			case BACKUP_STORAGE_REDUNDANCY:
14249 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
14250 			case SECONDARY:
14251 			case FAILOVER:
14252 			case DEFAULT_FULLTEXT_LANGUAGE:
14253 			case DEFAULT_LANGUAGE:
14254 			case INLINE:
14255 			case NESTED_TRIGGERS:
14256 			case TRANSFORM_NOISE_WORDS:
14257 			case TWO_DIGIT_YEAR_CUTOFF:
14258 			case PERSISTENT_LOG_BUFFER:
14259 			case DIRECTORY_NAME:
14260 			case DATEFORMAT:
14261 			case DELAYED_DURABILITY:
14262 			case AUTHORIZATION:
14263 			case TRANSFER:
14264 			case PROVIDER:
14265 			case SID:
14266 			case SEARCH:
14267 			case MEMBER:
14268 			case JSON:
14269 			case IDENTIFIER_:
14270 			case DELIMITED_IDENTIFIER_:
14271 				{
14272 				setState(2252);
14273 				databaseName();
14274 				}
14275 				break;
14276 			case CURRENT:
14277 				{
14278 				setState(2253);
14279 				match(CURRENT);
14280 				}
14281 				break;
14282 			default:
14283 				throw new NoViableAltException(this);
14284 			}
14285 			setState(2259);
14286 			_errHandler.sync(this);
14287 			_la = _input.LA(1);
14288 			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << LP_) | (1L << ADD) | (1L << SET))) != 0) || ((((_la - 154)) & ~0x3f) == 0 && ((1L << (_la - 154)) & ((1L << (DEFAULT - 154)) | (1L << (NAME - 154)) | (1L << (READ_ONLY - 154)) | (1L << (READONLY - 154)))) != 0) || _la==COLLATE || ((((_la - 565)) & ~0x3f) == 0 && ((1L << (_la - 565)) & ((1L << (REMOVE - 565)) | (1L << (AUTOGROW_SINGLE_FILE - 565)) | (1L << (AUTOGROW_ALL_FILES - 565)) | (1L << (READWRITE - 565)) | (1L << (READ_WRITE - 565)) | (1L << (MODIFY - 565)))) != 0) || _la==FORCE_FAILOVER_ALLOW_DATA_LOSS || _la==FAILOVER) {
14289 				{
14290 				{
14291 				setState(2256);
14292 				alterDatabaseClause();
14293 				}
14294 				}
14295 				setState(2261);
14296 				_errHandler.sync(this);
14297 				_la = _input.LA(1);
14298 			}
14299 			}
14300 		}
14301 		catch (RecognitionException re) {
14302 			_localctx.exception = re;
14303 			_errHandler.reportError(this, re);
14304 			_errHandler.recover(this, re);
14305 		}
14306 		finally {
14307 			exitRule();
14308 		}
14309 		return _localctx;
14310 	}
14311 
14312 	public static class AlterProcedureContext extends ParserRuleContext {
14313 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
14314 		public ProcedureNameContext procedureName() {
14315 			return getRuleContext(ProcedureNameContext.class,0);
14316 		}
14317 		public ProcParametersContext procParameters() {
14318 			return getRuleContext(ProcParametersContext.class,0);
14319 		}
14320 		public CreateOrAlterProcClauseContext createOrAlterProcClause() {
14321 			return getRuleContext(CreateOrAlterProcClauseContext.class,0);
14322 		}
14323 		public TerminalNode PROC() { return getToken(SQLServerStatementParser.PROC, 0); }
14324 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
14325 		public AlterProcedureContext(ParserRuleContext parent, int invokingState) {
14326 			super(parent, invokingState);
14327 		}
14328 		@Override public int getRuleIndex() { return RULE_alterProcedure; }
14329 		@Override
14330 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14331 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterProcedure(this);
14332 			else return visitor.visitChildren(this);
14333 		}
14334 	}
14335 
14336 	public final AlterProcedureContext alterProcedure() throws RecognitionException {
14337 		AlterProcedureContext _localctx = new AlterProcedureContext(_ctx, getState());
14338 		enterRule(_localctx, 288, RULE_alterProcedure);
14339 		int _la;
14340 		try {
14341 			enterOuterAlt(_localctx, 1);
14342 			{
14343 			setState(2262);
14344 			match(ALTER);
14345 			setState(2263);
14346 			_la = _input.LA(1);
14347 			if ( !(_la==PROCEDURE || _la==PROC) ) {
14348 			_errHandler.recoverInline(this);
14349 			}
14350 			else {
14351 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
14352 				_errHandler.reportMatch(this);
14353 				consume();
14354 			}
14355 			setState(2264);
14356 			procedureName();
14357 			setState(2265);
14358 			procParameters();
14359 			setState(2266);
14360 			createOrAlterProcClause();
14361 			}
14362 		}
14363 		catch (RecognitionException re) {
14364 			_localctx.exception = re;
14365 			_errHandler.reportError(this, re);
14366 			_errHandler.recover(this, re);
14367 		}
14368 		finally {
14369 			exitRule();
14370 		}
14371 		return _localctx;
14372 	}
14373 
14374 	public static class AlterFunctionContext extends ParserRuleContext {
14375 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
14376 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
14377 		public FunctionNameContext functionName() {
14378 			return getRuleContext(FunctionNameContext.class,0);
14379 		}
14380 		public FuncParametersContext funcParameters() {
14381 			return getRuleContext(FuncParametersContext.class,0);
14382 		}
14383 		public FuncReturnsContext funcReturns() {
14384 			return getRuleContext(FuncReturnsContext.class,0);
14385 		}
14386 		public AlterFunctionContext(ParserRuleContext parent, int invokingState) {
14387 			super(parent, invokingState);
14388 		}
14389 		@Override public int getRuleIndex() { return RULE_alterFunction; }
14390 		@Override
14391 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14392 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterFunction(this);
14393 			else return visitor.visitChildren(this);
14394 		}
14395 	}
14396 
14397 	public final AlterFunctionContext alterFunction() throws RecognitionException {
14398 		AlterFunctionContext _localctx = new AlterFunctionContext(_ctx, getState());
14399 		enterRule(_localctx, 290, RULE_alterFunction);
14400 		try {
14401 			enterOuterAlt(_localctx, 1);
14402 			{
14403 			setState(2268);
14404 			match(ALTER);
14405 			setState(2269);
14406 			match(FUNCTION);
14407 			setState(2270);
14408 			functionName();
14409 			setState(2271);
14410 			funcParameters();
14411 			setState(2272);
14412 			funcReturns();
14413 			}
14414 		}
14415 		catch (RecognitionException re) {
14416 			_localctx.exception = re;
14417 			_errHandler.reportError(this, re);
14418 			_errHandler.recover(this, re);
14419 		}
14420 		finally {
14421 			exitRule();
14422 		}
14423 		return _localctx;
14424 	}
14425 
14426 	public static class AlterViewContext extends ParserRuleContext {
14427 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
14428 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
14429 		public ViewNameContext viewName() {
14430 			return getRuleContext(ViewNameContext.class,0);
14431 		}
14432 		public CreateOrAlterViewClauseContext createOrAlterViewClause() {
14433 			return getRuleContext(CreateOrAlterViewClauseContext.class,0);
14434 		}
14435 		public AlterViewContext(ParserRuleContext parent, int invokingState) {
14436 			super(parent, invokingState);
14437 		}
14438 		@Override public int getRuleIndex() { return RULE_alterView; }
14439 		@Override
14440 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14441 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterView(this);
14442 			else return visitor.visitChildren(this);
14443 		}
14444 	}
14445 
14446 	public final AlterViewContext alterView() throws RecognitionException {
14447 		AlterViewContext _localctx = new AlterViewContext(_ctx, getState());
14448 		enterRule(_localctx, 292, RULE_alterView);
14449 		try {
14450 			enterOuterAlt(_localctx, 1);
14451 			{
14452 			setState(2274);
14453 			match(ALTER);
14454 			setState(2275);
14455 			match(VIEW);
14456 			setState(2276);
14457 			viewName();
14458 			setState(2277);
14459 			createOrAlterViewClause();
14460 			}
14461 		}
14462 		catch (RecognitionException re) {
14463 			_localctx.exception = re;
14464 			_errHandler.reportError(this, re);
14465 			_errHandler.recover(this, re);
14466 		}
14467 		finally {
14468 			exitRule();
14469 		}
14470 		return _localctx;
14471 	}
14472 
14473 	public static class AlterTriggerContext extends ParserRuleContext {
14474 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
14475 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
14476 		public TriggerNameContext triggerName() {
14477 			return getRuleContext(TriggerNameContext.class,0);
14478 		}
14479 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
14480 		public TriggerTargetContext triggerTarget() {
14481 			return getRuleContext(TriggerTargetContext.class,0);
14482 		}
14483 		public CreateTriggerClauseContext createTriggerClause() {
14484 			return getRuleContext(CreateTriggerClauseContext.class,0);
14485 		}
14486 		public AlterTriggerContext(ParserRuleContext parent, int invokingState) {
14487 			super(parent, invokingState);
14488 		}
14489 		@Override public int getRuleIndex() { return RULE_alterTrigger; }
14490 		@Override
14491 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14492 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTrigger(this);
14493 			else return visitor.visitChildren(this);
14494 		}
14495 	}
14496 
14497 	public final AlterTriggerContext alterTrigger() throws RecognitionException {
14498 		AlterTriggerContext _localctx = new AlterTriggerContext(_ctx, getState());
14499 		enterRule(_localctx, 294, RULE_alterTrigger);
14500 		try {
14501 			enterOuterAlt(_localctx, 1);
14502 			{
14503 			setState(2279);
14504 			match(ALTER);
14505 			setState(2280);
14506 			match(TRIGGER);
14507 			setState(2281);
14508 			triggerName();
14509 			setState(2282);
14510 			match(ON);
14511 			setState(2283);
14512 			triggerTarget();
14513 			setState(2284);
14514 			createTriggerClause();
14515 			}
14516 		}
14517 		catch (RecognitionException re) {
14518 			_localctx.exception = re;
14519 			_errHandler.reportError(this, re);
14520 			_errHandler.recover(this, re);
14521 		}
14522 		finally {
14523 			exitRule();
14524 		}
14525 		return _localctx;
14526 	}
14527 
14528 	public static class AlterSequenceContext extends ParserRuleContext {
14529 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
14530 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
14531 		public SequenceNameContext sequenceName() {
14532 			return getRuleContext(SequenceNameContext.class,0);
14533 		}
14534 		public List<CreateOrAlterSequenceClauseContext> createOrAlterSequenceClause() {
14535 			return getRuleContexts(CreateOrAlterSequenceClauseContext.class);
14536 		}
14537 		public CreateOrAlterSequenceClauseContext createOrAlterSequenceClause(int i) {
14538 			return getRuleContext(CreateOrAlterSequenceClauseContext.class,i);
14539 		}
14540 		public AlterSequenceContext(ParserRuleContext parent, int invokingState) {
14541 			super(parent, invokingState);
14542 		}
14543 		@Override public int getRuleIndex() { return RULE_alterSequence; }
14544 		@Override
14545 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14546 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSequence(this);
14547 			else return visitor.visitChildren(this);
14548 		}
14549 	}
14550 
14551 	public final AlterSequenceContext alterSequence() throws RecognitionException {
14552 		AlterSequenceContext _localctx = new AlterSequenceContext(_ctx, getState());
14553 		enterRule(_localctx, 296, RULE_alterSequence);
14554 		int _la;
14555 		try {
14556 			enterOuterAlt(_localctx, 1);
14557 			{
14558 			setState(2286);
14559 			match(ALTER);
14560 			setState(2287);
14561 			match(SEQUENCE);
14562 			setState(2288);
14563 			sequenceName();
14564 			setState(2292);
14565 			_errHandler.sync(this);
14566 			_la = _input.LA(1);
14567 			while (_la==AS || _la==NO || _la==START || ((((_la - 549)) & ~0x3f) == 0 && ((1L << (_la - 549)) & ((1L << (INCREMENT - 549)) | (1L << (CYCLE - 549)) | (1L << (CACHE - 549)) | (1L << (MINVALUE - 549)) | (1L << (MAXVALUE - 549)) | (1L << (RESTART - 549)))) != 0)) {
14568 				{
14569 				{
14570 				setState(2289);
14571 				createOrAlterSequenceClause();
14572 				}
14573 				}
14574 				setState(2294);
14575 				_errHandler.sync(this);
14576 				_la = _input.LA(1);
14577 			}
14578 			}
14579 		}
14580 		catch (RecognitionException re) {
14581 			_localctx.exception = re;
14582 			_errHandler.reportError(this, re);
14583 			_errHandler.recover(this, re);
14584 		}
14585 		finally {
14586 			exitRule();
14587 		}
14588 		return _localctx;
14589 	}
14590 
14591 	public static class AlterServiceContext extends ParserRuleContext {
14592 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
14593 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
14594 		public ServiceNameContext serviceName() {
14595 			return getRuleContext(ServiceNameContext.class,0);
14596 		}
14597 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
14598 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
14599 		public QueueNameContext queueName() {
14600 			return getRuleContext(QueueNameContext.class,0);
14601 		}
14602 		public AlterServiceClauseContext alterServiceClause() {
14603 			return getRuleContext(AlterServiceClauseContext.class,0);
14604 		}
14605 		public AlterServiceContext(ParserRuleContext parent, int invokingState) {
14606 			super(parent, invokingState);
14607 		}
14608 		@Override public int getRuleIndex() { return RULE_alterService; }
14609 		@Override
14610 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14611 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterService(this);
14612 			else return visitor.visitChildren(this);
14613 		}
14614 	}
14615 
14616 	public final AlterServiceContext alterService() throws RecognitionException {
14617 		AlterServiceContext _localctx = new AlterServiceContext(_ctx, getState());
14618 		enterRule(_localctx, 298, RULE_alterService);
14619 		int _la;
14620 		try {
14621 			enterOuterAlt(_localctx, 1);
14622 			{
14623 			setState(2295);
14624 			match(ALTER);
14625 			setState(2296);
14626 			match(SERVICE);
14627 			setState(2297);
14628 			serviceName();
14629 			setState(2301);
14630 			_errHandler.sync(this);
14631 			_la = _input.LA(1);
14632 			if (_la==ON) {
14633 				{
14634 				setState(2298);
14635 				match(ON);
14636 				setState(2299);
14637 				match(QUEUE);
14638 				setState(2300);
14639 				queueName();
14640 				}
14641 			}
14642 
14643 			setState(2304);
14644 			_errHandler.sync(this);
14645 			_la = _input.LA(1);
14646 			if (_la==LP_) {
14647 				{
14648 				setState(2303);
14649 				alterServiceClause();
14650 				}
14651 			}
14652 
14653 			}
14654 		}
14655 		catch (RecognitionException re) {
14656 			_localctx.exception = re;
14657 			_errHandler.reportError(this, re);
14658 			_errHandler.recover(this, re);
14659 		}
14660 		finally {
14661 			exitRule();
14662 		}
14663 		return _localctx;
14664 	}
14665 
14666 	public static class AlterSchemaContext extends ParserRuleContext {
14667 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
14668 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
14669 		public SchemaNameContext schemaName() {
14670 			return getRuleContext(SchemaNameContext.class,0);
14671 		}
14672 		public TerminalNode TRANSFER() { return getToken(SQLServerStatementParser.TRANSFER, 0); }
14673 		public IgnoredIdentifierContext ignoredIdentifier() {
14674 			return getRuleContext(IgnoredIdentifierContext.class,0);
14675 		}
14676 		public Class_Context class_() {
14677 			return getRuleContext(Class_Context.class,0);
14678 		}
14679 		public AlterSchemaContext(ParserRuleContext parent, int invokingState) {
14680 			super(parent, invokingState);
14681 		}
14682 		@Override public int getRuleIndex() { return RULE_alterSchema; }
14683 		@Override
14684 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14685 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSchema(this);
14686 			else return visitor.visitChildren(this);
14687 		}
14688 	}
14689 
14690 	public final AlterSchemaContext alterSchema() throws RecognitionException {
14691 		AlterSchemaContext _localctx = new AlterSchemaContext(_ctx, getState());
14692 		enterRule(_localctx, 300, RULE_alterSchema);
14693 		try {
14694 			enterOuterAlt(_localctx, 1);
14695 			{
14696 			setState(2306);
14697 			match(ALTER);
14698 			setState(2307);
14699 			match(SCHEMA);
14700 			setState(2308);
14701 			schemaName();
14702 			setState(2309);
14703 			match(TRANSFER);
14704 			setState(2311);
14705 			_errHandler.sync(this);
14706 			switch ( getInterpreter().adaptivePredict(_input,152,_ctx) ) {
14707 			case 1:
14708 				{
14709 				setState(2310);
14710 				class_();
14711 				}
14712 				break;
14713 			}
14714 			setState(2313);
14715 			ignoredIdentifier();
14716 			}
14717 		}
14718 		catch (RecognitionException re) {
14719 			_localctx.exception = re;
14720 			_errHandler.reportError(this, re);
14721 			_errHandler.recover(this, re);
14722 		}
14723 		finally {
14724 			exitRule();
14725 		}
14726 		return _localctx;
14727 	}
14728 
14729 	public static class DropTableContext extends ParserRuleContext {
14730 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14731 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
14732 		public TableNamesContext tableNames() {
14733 			return getRuleContext(TableNamesContext.class,0);
14734 		}
14735 		public IfExistsContext ifExists() {
14736 			return getRuleContext(IfExistsContext.class,0);
14737 		}
14738 		public DropTableContext(ParserRuleContext parent, int invokingState) {
14739 			super(parent, invokingState);
14740 		}
14741 		@Override public int getRuleIndex() { return RULE_dropTable; }
14742 		@Override
14743 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14744 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropTable(this);
14745 			else return visitor.visitChildren(this);
14746 		}
14747 	}
14748 
14749 	public final DropTableContext dropTable() throws RecognitionException {
14750 		DropTableContext _localctx = new DropTableContext(_ctx, getState());
14751 		enterRule(_localctx, 302, RULE_dropTable);
14752 		int _la;
14753 		try {
14754 			enterOuterAlt(_localctx, 1);
14755 			{
14756 			setState(2315);
14757 			match(DROP);
14758 			setState(2316);
14759 			match(TABLE);
14760 			setState(2318);
14761 			_errHandler.sync(this);
14762 			_la = _input.LA(1);
14763 			if (_la==IF) {
14764 				{
14765 				setState(2317);
14766 				ifExists();
14767 				}
14768 			}
14769 
14770 			setState(2320);
14771 			tableNames();
14772 			}
14773 		}
14774 		catch (RecognitionException re) {
14775 			_localctx.exception = re;
14776 			_errHandler.reportError(this, re);
14777 			_errHandler.recover(this, re);
14778 		}
14779 		finally {
14780 			exitRule();
14781 		}
14782 		return _localctx;
14783 	}
14784 
14785 	public static class DropIndexContext extends ParserRuleContext {
14786 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14787 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
14788 		public IndexNameContext indexName() {
14789 			return getRuleContext(IndexNameContext.class,0);
14790 		}
14791 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
14792 		public TableNameContext tableName() {
14793 			return getRuleContext(TableNameContext.class,0);
14794 		}
14795 		public IfExistsContext ifExists() {
14796 			return getRuleContext(IfExistsContext.class,0);
14797 		}
14798 		public DropIndexContext(ParserRuleContext parent, int invokingState) {
14799 			super(parent, invokingState);
14800 		}
14801 		@Override public int getRuleIndex() { return RULE_dropIndex; }
14802 		@Override
14803 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14804 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropIndex(this);
14805 			else return visitor.visitChildren(this);
14806 		}
14807 	}
14808 
14809 	public final DropIndexContext dropIndex() throws RecognitionException {
14810 		DropIndexContext _localctx = new DropIndexContext(_ctx, getState());
14811 		enterRule(_localctx, 304, RULE_dropIndex);
14812 		int _la;
14813 		try {
14814 			enterOuterAlt(_localctx, 1);
14815 			{
14816 			setState(2322);
14817 			match(DROP);
14818 			setState(2323);
14819 			match(INDEX);
14820 			setState(2325);
14821 			_errHandler.sync(this);
14822 			_la = _input.LA(1);
14823 			if (_la==IF) {
14824 				{
14825 				setState(2324);
14826 				ifExists();
14827 				}
14828 			}
14829 
14830 			setState(2327);
14831 			indexName();
14832 			setState(2328);
14833 			match(ON);
14834 			setState(2329);
14835 			tableName();
14836 			}
14837 		}
14838 		catch (RecognitionException re) {
14839 			_localctx.exception = re;
14840 			_errHandler.reportError(this, re);
14841 			_errHandler.recover(this, re);
14842 		}
14843 		finally {
14844 			exitRule();
14845 		}
14846 		return _localctx;
14847 	}
14848 
14849 	public static class DropDatabaseContext extends ParserRuleContext {
14850 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14851 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
14852 		public List<DatabaseNameContext> databaseName() {
14853 			return getRuleContexts(DatabaseNameContext.class);
14854 		}
14855 		public DatabaseNameContext databaseName(int i) {
14856 			return getRuleContext(DatabaseNameContext.class,i);
14857 		}
14858 		public IfExistsContext ifExists() {
14859 			return getRuleContext(IfExistsContext.class,0);
14860 		}
14861 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14862 		public TerminalNode COMMA_(int i) {
14863 			return getToken(SQLServerStatementParser.COMMA_, i);
14864 		}
14865 		public DropDatabaseContext(ParserRuleContext parent, int invokingState) {
14866 			super(parent, invokingState);
14867 		}
14868 		@Override public int getRuleIndex() { return RULE_dropDatabase; }
14869 		@Override
14870 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14871 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropDatabase(this);
14872 			else return visitor.visitChildren(this);
14873 		}
14874 	}
14875 
14876 	public final DropDatabaseContext dropDatabase() throws RecognitionException {
14877 		DropDatabaseContext _localctx = new DropDatabaseContext(_ctx, getState());
14878 		enterRule(_localctx, 306, RULE_dropDatabase);
14879 		int _la;
14880 		try {
14881 			enterOuterAlt(_localctx, 1);
14882 			{
14883 			setState(2331);
14884 			match(DROP);
14885 			setState(2332);
14886 			match(DATABASE);
14887 			setState(2334);
14888 			_errHandler.sync(this);
14889 			_la = _input.LA(1);
14890 			if (_la==IF) {
14891 				{
14892 				setState(2333);
14893 				ifExists();
14894 				}
14895 			}
14896 
14897 			setState(2336);
14898 			databaseName();
14899 			setState(2341);
14900 			_errHandler.sync(this);
14901 			_la = _input.LA(1);
14902 			while (_la==COMMA_) {
14903 				{
14904 				{
14905 				setState(2337);
14906 				match(COMMA_);
14907 				setState(2338);
14908 				databaseName();
14909 				}
14910 				}
14911 				setState(2343);
14912 				_errHandler.sync(this);
14913 				_la = _input.LA(1);
14914 			}
14915 			}
14916 		}
14917 		catch (RecognitionException re) {
14918 			_localctx.exception = re;
14919 			_errHandler.reportError(this, re);
14920 			_errHandler.recover(this, re);
14921 		}
14922 		finally {
14923 			exitRule();
14924 		}
14925 		return _localctx;
14926 	}
14927 
14928 	public static class DropFunctionContext extends ParserRuleContext {
14929 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
14930 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
14931 		public List<FunctionNameContext> functionName() {
14932 			return getRuleContexts(FunctionNameContext.class);
14933 		}
14934 		public FunctionNameContext functionName(int i) {
14935 			return getRuleContext(FunctionNameContext.class,i);
14936 		}
14937 		public IfExistsContext ifExists() {
14938 			return getRuleContext(IfExistsContext.class,0);
14939 		}
14940 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
14941 		public TerminalNode COMMA_(int i) {
14942 			return getToken(SQLServerStatementParser.COMMA_, i);
14943 		}
14944 		public DropFunctionContext(ParserRuleContext parent, int invokingState) {
14945 			super(parent, invokingState);
14946 		}
14947 		@Override public int getRuleIndex() { return RULE_dropFunction; }
14948 		@Override
14949 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
14950 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropFunction(this);
14951 			else return visitor.visitChildren(this);
14952 		}
14953 	}
14954 
14955 	public final DropFunctionContext dropFunction() throws RecognitionException {
14956 		DropFunctionContext _localctx = new DropFunctionContext(_ctx, getState());
14957 		enterRule(_localctx, 308, RULE_dropFunction);
14958 		int _la;
14959 		try {
14960 			enterOuterAlt(_localctx, 1);
14961 			{
14962 			setState(2344);
14963 			match(DROP);
14964 			setState(2345);
14965 			match(FUNCTION);
14966 			setState(2347);
14967 			_errHandler.sync(this);
14968 			_la = _input.LA(1);
14969 			if (_la==IF) {
14970 				{
14971 				setState(2346);
14972 				ifExists();
14973 				}
14974 			}
14975 
14976 			setState(2349);
14977 			functionName();
14978 			setState(2354);
14979 			_errHandler.sync(this);
14980 			_la = _input.LA(1);
14981 			while (_la==COMMA_) {
14982 				{
14983 				{
14984 				setState(2350);
14985 				match(COMMA_);
14986 				setState(2351);
14987 				functionName();
14988 				}
14989 				}
14990 				setState(2356);
14991 				_errHandler.sync(this);
14992 				_la = _input.LA(1);
14993 			}
14994 			}
14995 		}
14996 		catch (RecognitionException re) {
14997 			_localctx.exception = re;
14998 			_errHandler.reportError(this, re);
14999 			_errHandler.recover(this, re);
15000 		}
15001 		finally {
15002 			exitRule();
15003 		}
15004 		return _localctx;
15005 	}
15006 
15007 	public static class DropProcedureContext extends ParserRuleContext {
15008 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
15009 		public List<ProcedureNameContext> procedureName() {
15010 			return getRuleContexts(ProcedureNameContext.class);
15011 		}
15012 		public ProcedureNameContext procedureName(int i) {
15013 			return getRuleContext(ProcedureNameContext.class,i);
15014 		}
15015 		public TerminalNode PROC() { return getToken(SQLServerStatementParser.PROC, 0); }
15016 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
15017 		public IfExistsContext ifExists() {
15018 			return getRuleContext(IfExistsContext.class,0);
15019 		}
15020 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15021 		public TerminalNode COMMA_(int i) {
15022 			return getToken(SQLServerStatementParser.COMMA_, i);
15023 		}
15024 		public DropProcedureContext(ParserRuleContext parent, int invokingState) {
15025 			super(parent, invokingState);
15026 		}
15027 		@Override public int getRuleIndex() { return RULE_dropProcedure; }
15028 		@Override
15029 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15030 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropProcedure(this);
15031 			else return visitor.visitChildren(this);
15032 		}
15033 	}
15034 
15035 	public final DropProcedureContext dropProcedure() throws RecognitionException {
15036 		DropProcedureContext _localctx = new DropProcedureContext(_ctx, getState());
15037 		enterRule(_localctx, 310, RULE_dropProcedure);
15038 		int _la;
15039 		try {
15040 			enterOuterAlt(_localctx, 1);
15041 			{
15042 			setState(2357);
15043 			match(DROP);
15044 			setState(2358);
15045 			_la = _input.LA(1);
15046 			if ( !(_la==PROCEDURE || _la==PROC) ) {
15047 			_errHandler.recoverInline(this);
15048 			}
15049 			else {
15050 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
15051 				_errHandler.reportMatch(this);
15052 				consume();
15053 			}
15054 			setState(2360);
15055 			_errHandler.sync(this);
15056 			_la = _input.LA(1);
15057 			if (_la==IF) {
15058 				{
15059 				setState(2359);
15060 				ifExists();
15061 				}
15062 			}
15063 
15064 			setState(2362);
15065 			procedureName();
15066 			setState(2367);
15067 			_errHandler.sync(this);
15068 			_la = _input.LA(1);
15069 			while (_la==COMMA_) {
15070 				{
15071 				{
15072 				setState(2363);
15073 				match(COMMA_);
15074 				setState(2364);
15075 				procedureName();
15076 				}
15077 				}
15078 				setState(2369);
15079 				_errHandler.sync(this);
15080 				_la = _input.LA(1);
15081 			}
15082 			}
15083 		}
15084 		catch (RecognitionException re) {
15085 			_localctx.exception = re;
15086 			_errHandler.reportError(this, re);
15087 			_errHandler.recover(this, re);
15088 		}
15089 		finally {
15090 			exitRule();
15091 		}
15092 		return _localctx;
15093 	}
15094 
15095 	public static class DropViewContext extends ParserRuleContext {
15096 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
15097 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
15098 		public List<ViewNameContext> viewName() {
15099 			return getRuleContexts(ViewNameContext.class);
15100 		}
15101 		public ViewNameContext viewName(int i) {
15102 			return getRuleContext(ViewNameContext.class,i);
15103 		}
15104 		public IfExistsContext ifExists() {
15105 			return getRuleContext(IfExistsContext.class,0);
15106 		}
15107 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15108 		public TerminalNode COMMA_(int i) {
15109 			return getToken(SQLServerStatementParser.COMMA_, i);
15110 		}
15111 		public DropViewContext(ParserRuleContext parent, int invokingState) {
15112 			super(parent, invokingState);
15113 		}
15114 		@Override public int getRuleIndex() { return RULE_dropView; }
15115 		@Override
15116 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15117 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropView(this);
15118 			else return visitor.visitChildren(this);
15119 		}
15120 	}
15121 
15122 	public final DropViewContext dropView() throws RecognitionException {
15123 		DropViewContext _localctx = new DropViewContext(_ctx, getState());
15124 		enterRule(_localctx, 312, RULE_dropView);
15125 		int _la;
15126 		try {
15127 			enterOuterAlt(_localctx, 1);
15128 			{
15129 			setState(2370);
15130 			match(DROP);
15131 			setState(2371);
15132 			match(VIEW);
15133 			setState(2373);
15134 			_errHandler.sync(this);
15135 			_la = _input.LA(1);
15136 			if (_la==IF) {
15137 				{
15138 				setState(2372);
15139 				ifExists();
15140 				}
15141 			}
15142 
15143 			setState(2375);
15144 			viewName();
15145 			setState(2380);
15146 			_errHandler.sync(this);
15147 			_la = _input.LA(1);
15148 			while (_la==COMMA_) {
15149 				{
15150 				{
15151 				setState(2376);
15152 				match(COMMA_);
15153 				setState(2377);
15154 				viewName();
15155 				}
15156 				}
15157 				setState(2382);
15158 				_errHandler.sync(this);
15159 				_la = _input.LA(1);
15160 			}
15161 			}
15162 		}
15163 		catch (RecognitionException re) {
15164 			_localctx.exception = re;
15165 			_errHandler.reportError(this, re);
15166 			_errHandler.recover(this, re);
15167 		}
15168 		finally {
15169 			exitRule();
15170 		}
15171 		return _localctx;
15172 	}
15173 
15174 	public static class DropTriggerContext extends ParserRuleContext {
15175 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
15176 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
15177 		public List<TriggerNameContext> triggerName() {
15178 			return getRuleContexts(TriggerNameContext.class);
15179 		}
15180 		public TriggerNameContext triggerName(int i) {
15181 			return getRuleContext(TriggerNameContext.class,i);
15182 		}
15183 		public IfExistsContext ifExists() {
15184 			return getRuleContext(IfExistsContext.class,0);
15185 		}
15186 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15187 		public TerminalNode COMMA_(int i) {
15188 			return getToken(SQLServerStatementParser.COMMA_, i);
15189 		}
15190 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
15191 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
15192 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
15193 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
15194 		public DropTriggerContext(ParserRuleContext parent, int invokingState) {
15195 			super(parent, invokingState);
15196 		}
15197 		@Override public int getRuleIndex() { return RULE_dropTrigger; }
15198 		@Override
15199 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15200 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropTrigger(this);
15201 			else return visitor.visitChildren(this);
15202 		}
15203 	}
15204 
15205 	public final DropTriggerContext dropTrigger() throws RecognitionException {
15206 		DropTriggerContext _localctx = new DropTriggerContext(_ctx, getState());
15207 		enterRule(_localctx, 314, RULE_dropTrigger);
15208 		int _la;
15209 		try {
15210 			enterOuterAlt(_localctx, 1);
15211 			{
15212 			setState(2383);
15213 			match(DROP);
15214 			setState(2384);
15215 			match(TRIGGER);
15216 			setState(2386);
15217 			_errHandler.sync(this);
15218 			_la = _input.LA(1);
15219 			if (_la==IF) {
15220 				{
15221 				setState(2385);
15222 				ifExists();
15223 				}
15224 			}
15225 
15226 			setState(2388);
15227 			triggerName();
15228 			setState(2393);
15229 			_errHandler.sync(this);
15230 			_la = _input.LA(1);
15231 			while (_la==COMMA_) {
15232 				{
15233 				{
15234 				setState(2389);
15235 				match(COMMA_);
15236 				setState(2390);
15237 				triggerName();
15238 				}
15239 				}
15240 				setState(2395);
15241 				_errHandler.sync(this);
15242 				_la = _input.LA(1);
15243 			}
15244 			setState(2402);
15245 			_errHandler.sync(this);
15246 			_la = _input.LA(1);
15247 			if (_la==ON) {
15248 				{
15249 				setState(2396);
15250 				match(ON);
15251 				setState(2400);
15252 				_errHandler.sync(this);
15253 				switch (_input.LA(1)) {
15254 				case DATABASE:
15255 					{
15256 					setState(2397);
15257 					match(DATABASE);
15258 					}
15259 					break;
15260 				case ALL:
15261 					{
15262 					setState(2398);
15263 					match(ALL);
15264 					setState(2399);
15265 					match(SERVER);
15266 					}
15267 					break;
15268 				default:
15269 					throw new NoViableAltException(this);
15270 				}
15271 				}
15272 			}
15273 
15274 			}
15275 		}
15276 		catch (RecognitionException re) {
15277 			_localctx.exception = re;
15278 			_errHandler.reportError(this, re);
15279 			_errHandler.recover(this, re);
15280 		}
15281 		finally {
15282 			exitRule();
15283 		}
15284 		return _localctx;
15285 	}
15286 
15287 	public static class DropSequenceContext extends ParserRuleContext {
15288 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
15289 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
15290 		public List<SequenceNameContext> sequenceName() {
15291 			return getRuleContexts(SequenceNameContext.class);
15292 		}
15293 		public SequenceNameContext sequenceName(int i) {
15294 			return getRuleContext(SequenceNameContext.class,i);
15295 		}
15296 		public IfExistsContext ifExists() {
15297 			return getRuleContext(IfExistsContext.class,0);
15298 		}
15299 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15300 		public TerminalNode COMMA_(int i) {
15301 			return getToken(SQLServerStatementParser.COMMA_, i);
15302 		}
15303 		public DropSequenceContext(ParserRuleContext parent, int invokingState) {
15304 			super(parent, invokingState);
15305 		}
15306 		@Override public int getRuleIndex() { return RULE_dropSequence; }
15307 		@Override
15308 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15309 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropSequence(this);
15310 			else return visitor.visitChildren(this);
15311 		}
15312 	}
15313 
15314 	public final DropSequenceContext dropSequence() throws RecognitionException {
15315 		DropSequenceContext _localctx = new DropSequenceContext(_ctx, getState());
15316 		enterRule(_localctx, 316, RULE_dropSequence);
15317 		int _la;
15318 		try {
15319 			enterOuterAlt(_localctx, 1);
15320 			{
15321 			setState(2404);
15322 			match(DROP);
15323 			setState(2405);
15324 			match(SEQUENCE);
15325 			setState(2407);
15326 			_errHandler.sync(this);
15327 			_la = _input.LA(1);
15328 			if (_la==IF) {
15329 				{
15330 				setState(2406);
15331 				ifExists();
15332 				}
15333 			}
15334 
15335 			setState(2409);
15336 			sequenceName();
15337 			setState(2414);
15338 			_errHandler.sync(this);
15339 			_la = _input.LA(1);
15340 			while (_la==COMMA_) {
15341 				{
15342 				{
15343 				setState(2410);
15344 				match(COMMA_);
15345 				setState(2411);
15346 				sequenceName();
15347 				}
15348 				}
15349 				setState(2416);
15350 				_errHandler.sync(this);
15351 				_la = _input.LA(1);
15352 			}
15353 			}
15354 		}
15355 		catch (RecognitionException re) {
15356 			_localctx.exception = re;
15357 			_errHandler.reportError(this, re);
15358 			_errHandler.recover(this, re);
15359 		}
15360 		finally {
15361 			exitRule();
15362 		}
15363 		return _localctx;
15364 	}
15365 
15366 	public static class DropServiceContext extends ParserRuleContext {
15367 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
15368 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
15369 		public ServiceNameContext serviceName() {
15370 			return getRuleContext(ServiceNameContext.class,0);
15371 		}
15372 		public DropServiceContext(ParserRuleContext parent, int invokingState) {
15373 			super(parent, invokingState);
15374 		}
15375 		@Override public int getRuleIndex() { return RULE_dropService; }
15376 		@Override
15377 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15378 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropService(this);
15379 			else return visitor.visitChildren(this);
15380 		}
15381 	}
15382 
15383 	public final DropServiceContext dropService() throws RecognitionException {
15384 		DropServiceContext _localctx = new DropServiceContext(_ctx, getState());
15385 		enterRule(_localctx, 318, RULE_dropService);
15386 		try {
15387 			enterOuterAlt(_localctx, 1);
15388 			{
15389 			setState(2417);
15390 			match(DROP);
15391 			setState(2418);
15392 			match(SERVICE);
15393 			setState(2419);
15394 			serviceName();
15395 			}
15396 		}
15397 		catch (RecognitionException re) {
15398 			_localctx.exception = re;
15399 			_errHandler.reportError(this, re);
15400 			_errHandler.recover(this, re);
15401 		}
15402 		finally {
15403 			exitRule();
15404 		}
15405 		return _localctx;
15406 	}
15407 
15408 	public static class DropSchemaContext extends ParserRuleContext {
15409 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
15410 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
15411 		public SchemaNameContext schemaName() {
15412 			return getRuleContext(SchemaNameContext.class,0);
15413 		}
15414 		public IfExistsContext ifExists() {
15415 			return getRuleContext(IfExistsContext.class,0);
15416 		}
15417 		public DropSchemaContext(ParserRuleContext parent, int invokingState) {
15418 			super(parent, invokingState);
15419 		}
15420 		@Override public int getRuleIndex() { return RULE_dropSchema; }
15421 		@Override
15422 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15423 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropSchema(this);
15424 			else return visitor.visitChildren(this);
15425 		}
15426 	}
15427 
15428 	public final DropSchemaContext dropSchema() throws RecognitionException {
15429 		DropSchemaContext _localctx = new DropSchemaContext(_ctx, getState());
15430 		enterRule(_localctx, 320, RULE_dropSchema);
15431 		int _la;
15432 		try {
15433 			enterOuterAlt(_localctx, 1);
15434 			{
15435 			setState(2421);
15436 			match(DROP);
15437 			setState(2422);
15438 			match(SCHEMA);
15439 			setState(2424);
15440 			_errHandler.sync(this);
15441 			_la = _input.LA(1);
15442 			if (_la==IF) {
15443 				{
15444 				setState(2423);
15445 				ifExists();
15446 				}
15447 			}
15448 
15449 			setState(2426);
15450 			schemaName();
15451 			}
15452 		}
15453 		catch (RecognitionException re) {
15454 			_localctx.exception = re;
15455 			_errHandler.reportError(this, re);
15456 			_errHandler.recover(this, re);
15457 		}
15458 		finally {
15459 			exitRule();
15460 		}
15461 		return _localctx;
15462 	}
15463 
15464 	public static class TruncateTableContext extends ParserRuleContext {
15465 		public TerminalNode TRUNCATE() { return getToken(SQLServerStatementParser.TRUNCATE, 0); }
15466 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
15467 		public TableNameContext tableName() {
15468 			return getRuleContext(TableNameContext.class,0);
15469 		}
15470 		public TruncateTableContext(ParserRuleContext parent, int invokingState) {
15471 			super(parent, invokingState);
15472 		}
15473 		@Override public int getRuleIndex() { return RULE_truncateTable; }
15474 		@Override
15475 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15476 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTruncateTable(this);
15477 			else return visitor.visitChildren(this);
15478 		}
15479 	}
15480 
15481 	public final TruncateTableContext truncateTable() throws RecognitionException {
15482 		TruncateTableContext _localctx = new TruncateTableContext(_ctx, getState());
15483 		enterRule(_localctx, 322, RULE_truncateTable);
15484 		try {
15485 			enterOuterAlt(_localctx, 1);
15486 			{
15487 			setState(2428);
15488 			match(TRUNCATE);
15489 			setState(2429);
15490 			match(TABLE);
15491 			setState(2430);
15492 			tableName();
15493 			}
15494 		}
15495 		catch (RecognitionException re) {
15496 			_localctx.exception = re;
15497 			_errHandler.reportError(this, re);
15498 			_errHandler.recover(this, re);
15499 		}
15500 		finally {
15501 			exitRule();
15502 		}
15503 		return _localctx;
15504 	}
15505 
15506 	public static class UpdateStatisticsContext extends ParserRuleContext {
15507 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
15508 		public TerminalNode STATISTICS() { return getToken(SQLServerStatementParser.STATISTICS, 0); }
15509 		public TableNameContext tableName() {
15510 			return getRuleContext(TableNameContext.class,0);
15511 		}
15512 		public List<IndexNameContext> indexName() {
15513 			return getRuleContexts(IndexNameContext.class);
15514 		}
15515 		public IndexNameContext indexName(int i) {
15516 			return getRuleContext(IndexNameContext.class,i);
15517 		}
15518 		public StatisticsWithClauseContext statisticsWithClause() {
15519 			return getRuleContext(StatisticsWithClauseContext.class,0);
15520 		}
15521 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
15522 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15523 		public TerminalNode COMMA_(int i) {
15524 			return getToken(SQLServerStatementParser.COMMA_, i);
15525 		}
15526 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
15527 		public UpdateStatisticsContext(ParserRuleContext parent, int invokingState) {
15528 			super(parent, invokingState);
15529 		}
15530 		@Override public int getRuleIndex() { return RULE_updateStatistics; }
15531 		@Override
15532 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15533 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUpdateStatistics(this);
15534 			else return visitor.visitChildren(this);
15535 		}
15536 	}
15537 
15538 	public final UpdateStatisticsContext updateStatistics() throws RecognitionException {
15539 		UpdateStatisticsContext _localctx = new UpdateStatisticsContext(_ctx, getState());
15540 		enterRule(_localctx, 324, RULE_updateStatistics);
15541 		int _la;
15542 		try {
15543 			enterOuterAlt(_localctx, 1);
15544 			{
15545 			setState(2432);
15546 			match(UPDATE);
15547 			setState(2433);
15548 			match(STATISTICS);
15549 			setState(2434);
15550 			tableName();
15551 			setState(2449);
15552 			_errHandler.sync(this);
15553 			_la = _input.LA(1);
15554 			if (((((_la - 31)) & ~0x3f) == 0 && ((1L << (_la - 31)) & ((1L << (LP_ - 31)) | (1L << (TRUNCATE - 31)) | (1L << (SCHEMA - 31)) | (1L << (COLUMNS - 31)) | (1L << (PRECISION - 31)) | (1L << (FUNCTION - 31)) | (1L << (TRIGGER - 31)) | (1L << (CAST - 31)) | (1L << (TRIM - 31)) | (1L << (SUBSTRING - 31)) | (1L << (RIGHT - 31)))) != 0) || ((((_la - 98)) & ~0x3f) == 0 && ((1L << (_la - 98)) & ((1L << (OFF - 98)) | (1L << (GROUP - 98)) | (1L << (LIMIT - 98)) | (1L << (OFFSET - 98)) | (1L << (SAVEPOINT - 98)) | (1L << (BOOLEAN - 98)) | (1L << (ARRAY - 98)) | (1L << (DATE - 98)) | (1L << (TIMESTAMP - 98)) | (1L << (LOCALTIME - 98)) | (1L << (LOCALTIMESTAMP - 98)) | (1L << (YEAR - 98)) | (1L << (QUARTER - 98)) | (1L << (MONTH - 98)) | (1L << (WEEK - 98)) | (1L << (DAY - 98)) | (1L << (SECOND - 98)) | (1L << (MICROSECOND - 98)) | (1L << (MAX - 98)) | (1L << (MIN - 98)) | (1L << (SUM - 98)) | (1L << (COUNT - 98)) | (1L << (AVG - 98)) | (1L << (ENABLE - 98)) | (1L << (DISABLE - 98)) | (1L << (INSTANCE - 98)) | (1L << (DO - 98)))) != 0) || ((((_la - 162)) & ~0x3f) == 0 && ((1L << (_la - 162)) & ((1L << (DEFINER - 162)) | (1L << (SQL - 162)) | (1L << (CASCADED - 162)) | (1L << (LOCAL - 162)) | (1L << (NEXT - 162)) | (1L << (NAME - 162)) | (1L << (INTEGER - 162)) | (1L << (TYPE - 162)) | (1L << (TEXT - 162)) | (1L << (VIEWS - 162)) | (1L << (READ_ONLY - 162)) | (1L << (DATABASE - 162)) | (1L << (RETURNS - 162)) | (1L << (DATEPART - 162)) | (1L << (PASSWORD - 162)))) != 0) || ((((_la - 242)) & ~0x3f) == 0 && ((1L << (_la - 242)) & ((1L << (BINARY - 242)) | (1L << (HIDDEN_ - 242)) | (1L << (MOD - 242)) | (1L << (PARTITION - 242)) | (1L << (PARTITIONS - 242)) | (1L << (TOP - 242)) | (1L << (ROW - 242)) | (1L << (ROWS - 242)) | (1L << (XOR - 242)) | (1L << (ALWAYS - 242)) | (1L << (USER - 242)) | (1L << (ROLE - 242)) | (1L << (START - 242)) | (1L << (ALGORITHM - 242)) | (1L << (AUTO - 242)) | (1L << (BLOCKERS - 242)) | (1L << (CLUSTERED - 242)) | (1L << (NONCLUSTERED - 242)) | (1L << (COLUMNSTORE - 242)) | (1L << (CONTENT - 242)) | (1L << (YEARS - 242)) | (1L << (MONTHS - 242)) | (1L << (WEEKS - 242)) | (1L << (DAYS - 242)) | (1L << (MINUTES - 242)) | (1L << (DENY - 242)) | (1L << (DETERMINISTIC - 242)) | (1L << (DISTRIBUTION - 242)) | (1L << (DOCUMENT - 242)) | (1L << (DURABILITY - 242)) | (1L << (ENCRYPTED - 242)) | (1L << (FILESTREAM - 242)) | (1L << (FILETABLE - 242)) | (1L << (FILLFACTOR - 242)) | (1L << (FOLLOWING - 242)) | (1L << (HASH - 242)) | (1L << (HEAP - 242)) | (1L << (INBOUND - 242)) | (1L << (OUTBOUND - 242)) | (1L << (UNBOUNDED - 242)) | (1L << (INFINITE - 242)) | (1L << (LOGIN - 242)) | (1L << (MASKED - 242)) | (1L << (MAXDOP - 242)) | (1L << (MOVE - 242)) | (1L << (NOCHECK - 242)) | (1L << (OBJECT - 242)) | (1L << (ONLINE - 242)))) != 0) || ((((_la - 306)) & ~0x3f) == 0 && ((1L << (_la - 306)) & ((1L << (OVER - 306)) | (1L << (PAGE - 306)) | (1L << (PAUSED - 306)) | (1L << (PERIOD - 306)) | (1L << (PERSISTED - 306)) | (1L << (PRECEDING - 306)) | (1L << (RANDOMIZED - 306)) | (1L << (RANGE - 306)) | (1L << (REBUILD - 306)) | (1L << (REPLICATE - 306)) | (1L << (REPLICATION - 306)) | (1L << (RESUMABLE - 306)) | (1L << (ROWGUIDCOL - 306)) | (1L << (SAVE - 306)) | (1L << (SELF - 306)) | (1L << (SPARSE - 306)) | (1L << (SWITCH - 306)) | (1L << (TRAN - 306)) | (1L << (TRANCOUNT - 306)) | (1L << (CONTROL - 306)) | (1L << (CONCAT - 306)) | (1L << (TAKE - 306)) | (1L << (OWNERSHIP - 306)) | (1L << (DEFINITION - 306)) | (1L << (APPLICATION - 306)) | (1L << (ASSEMBLY - 306)) | (1L << (SYMMETRIC - 306)) | (1L << (ASYMMETRIC - 306)) | (1L << (SERVER - 306)) | (1L << (RECEIVE - 306)) | (1L << (CHANGE - 306)) | (1L << (TRACE - 306)) | (1L << (TRACKING - 306)) | (1L << (RESOURCES - 306)) | (1L << (SETTINGS - 306)) | (1L << (STATE - 306)) | (1L << (AVAILABILITY - 306)) | (1L << (CREDENTIAL - 306)) | (1L << (ENDPOINT - 306)) | (1L << (EVENT - 306)) | (1L << (NOTIFICATION - 306)) | (1L << (LINKED - 306)) | (1L << (AUDIT - 306)) | (1L << (DDL - 306)) | (1L << (XML - 306)) | (1L << (IMPERSONATE - 306)) | (1L << (SECURABLES - 306)) | (1L << (AUTHENTICATE - 306)) | (1L << (EXTERNAL - 306)) | (1L << (ACCESS - 306)) | (1L << (ADMINISTER - 306)) | (1L << (BULK - 306)) | (1L << (OPERATIONS - 306)) | (1L << (UNSAFE - 306)) | (1L << (SHUTDOWN - 306)) | (1L << (SCOPED - 306)) | (1L << (CONFIGURATION - 306)))) != 0) || ((((_la - 370)) & ~0x3f) == 0 && ((1L << (_la - 370)) & ((1L << (DATASPACE - 370)) | (1L << (SERVICE - 370)) | (1L << (CERTIFICATE - 370)) | (1L << (CONTRACT - 370)) | (1L << (ENCRYPTION - 370)) | (1L << (MASTER - 370)) | (1L << (DATA - 370)) | (1L << (SOURCE - 370)) | (1L << (FILE - 370)) | (1L << (FORMAT - 370)) | (1L << (LIBRARY - 370)) | (1L << (FULLTEXT - 370)) | (1L << (MASK - 370)) | (1L << (UNMASK - 370)) | (1L << (MESSAGE - 370)) | (1L << (REMOTE - 370)) | (1L << (BINDING - 370)) | (1L << (ROUTE - 370)) | (1L << (SECURITY - 370)) | (1L << (POLICY - 370)) | (1L << (AGGREGATE - 370)) | (1L << (QUEUE - 370)) | (1L << (RULE - 370)) | (1L << (SYNONYM - 370)) | (1L << (COLLECTION - 370)) | (1L << (SCRIPT - 370)) | (1L << (KILL - 370)) | (1L << (BACKUP - 370)) | (1L << (LOG - 370)) | (1L << (SHOWPLAN - 370)) | (1L << (SUBSCRIBE - 370)) | (1L << (QUERY - 370)) | (1L << (NOTIFICATIONS - 370)) | (1L << (CHECKPOINT - 370)) | (1L << (SEQUENCE - 370)) | (1L << (ABORT_AFTER_WAIT - 370)) | (1L << (ALLOW_PAGE_LOCKS - 370)) | (1L << (ALLOW_ROW_LOCKS - 370)) | (1L << (ALL_SPARSE_COLUMNS - 370)) | (1L << (BUCKET_COUNT - 370)) | (1L << (COLUMNSTORE_ARCHIVE - 370)) | (1L << (COLUMN_ENCRYPTION_KEY - 370)) | (1L << (COLUMN_SET - 370)) | (1L << (COMPRESSION_DELAY - 370)) | (1L << (DATABASE_DEAULT - 370)) | (1L << (DATA_COMPRESSION - 370)) | (1L << (DATA_CONSISTENCY_CHECK - 370)) | (1L << (ENCRYPTION_TYPE - 370)) | (1L << (SYSTEM_TIME - 370)) | (1L << (SYSTEM_VERSIONING - 370)) | (1L << (TEXTIMAGE_ON - 370)) | (1L << (WAIT_AT_LOW_PRIORITY - 370)) | (1L << (STATISTICS_INCREMENTAL - 370)) | (1L << (STATISTICS_NORECOMPUTE - 370)) | (1L << (ROUND_ROBIN - 370)) | (1L << (SCHEMA_AND_DATA - 370)) | (1L << (SCHEMA_ONLY - 370)) | (1L << (SORT_IN_TEMPDB - 370)) | (1L << (IGNORE_DUP_KEY - 370)) | (1L << (IMPLICIT_TRANSACTIONS - 370)) | (1L << (MAX_DURATION - 370)) | (1L << (MEMORY_OPTIMIZED - 370)) | (1L << (MIGRATION_STATE - 370)) | (1L << (PAD_INDEX - 370)))) != 0) || ((((_la - 434)) & ~0x3f) == 0 && ((1L << (_la - 434)) & ((1L << (REMOTE_DATA_ARCHIVE - 434)) | (1L << (FILESTREAM_ON - 434)) | (1L << (FILETABLE_COLLATE_FILENAME - 434)) | (1L << (FILETABLE_DIRECTORY - 434)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 434)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 434)) | (1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 434)) | (1L << (FILTER_PREDICATE - 434)) | (1L << (HISTORY_RETENTION_PERIOD - 434)) | (1L << (HISTORY_TABLE - 434)) | (1L << (LOCK_ESCALATION - 434)) | (1L << (DROP_EXISTING - 434)) | (1L << (ROW_NUMBER - 434)) | (1L << (FIRST - 434)) | (1L << (DATETIME2 - 434)) | (1L << (OUTPUT - 434)) | (1L << (INSERTED - 434)) | (1L << (DELETED - 434)))) != 0) || ((((_la - 505)) & ~0x3f) == 0 && ((1L << (_la - 505)) & ((1L << (FILENAME - 505)) | (1L << (SIZE - 505)) | (1L << (MAXSIZE - 505)) | (1L << (FILEGROWTH - 505)) | (1L << (UNLIMITED - 505)) | (1L << (KB - 505)) | (1L << (MB - 505)) | (1L << (GB - 505)) | (1L << (TB - 505)) | (1L << (CONTAINS - 505)) | (1L << (MEMORY_OPTIMIZED_DATA - 505)) | (1L << (FILEGROUP - 505)) | (1L << (NON_TRANSACTED_ACCESS - 505)) | (1L << (DB_CHAINING - 505)) | (1L << (TRUSTWORTHY - 505)) | (1L << (FORWARD_ONLY - 505)) | (1L << (KEYSET - 505)) | (1L << (FAST_FORWARD - 505)) | (1L << (SCROLL_LOCKS - 505)) | (1L << (OPTIMISTIC - 505)) | (1L << (TYPE_WARNING - 505)) | (1L << (SCHEMABINDING - 505)) | (1L << (CALLER - 505)) | (1L << (INPUT - 505)) | (1L << (OWNER - 505)) | (1L << (SNAPSHOT - 505)) | (1L << (REPEATABLE - 505)) | (1L << (SERIALIZABLE - 505)) | (1L << (NATIVE_COMPILATION - 505)) | (1L << (VIEW_METADATA - 505)) | (1L << (INSTEAD - 505)) | (1L << (APPEND - 505)) | (1L << (INCREMENT - 505)) | (1L << (CACHE - 505)) | (1L << (MINVALUE - 505)) | (1L << (MAXVALUE - 505)) | (1L << (RESTART - 505)) | (1L << (LOB_COMPACTION - 505)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 505)) | (1L << (REORGANIZE - 505)) | (1L << (RESUME - 505)) | (1L << (PAUSE - 505)) | (1L << (ABORT - 505)))) != 0) || ((((_la - 571)) & ~0x3f) == 0 && ((1L << (_la - 571)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 571)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 571)) | (1L << (IMMEDIATE - 571)) | (1L << (NO_WAIT - 571)) | (1L << (TARGET_RECOVERY_TIME - 571)) | (1L << (SECONDS - 571)) | (1L << (HONOR_BROKER_PRIORITY - 571)) | (1L << (ERROR_BROKER_CONVERSATIONS - 571)) | (1L << (NEW_BROKER - 571)) | (1L << (DISABLE_BROKER - 571)) | (1L << (ENABLE_BROKER - 571)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 571)) | (1L << (READ_COMMITTED_SNAPSHOT - 571)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 571)) | (1L << (RECURSIVE_TRIGGERS - 571)) | (1L << (QUOTED_IDENTIFIER - 571)) | (1L << (NUMERIC_ROUNDABORT - 571)) | (1L << (CONCAT_NULL_YIELDS_NULL - 571)) | (1L << (COMPATIBILITY_LEVEL - 571)) | (1L << (ARITHABORT - 571)) | (1L << (ANSI_WARNINGS - 571)) | (1L << (ANSI_PADDING - 571)) | (1L << (ANSI_NULLS - 571)) | (1L << (ANSI_NULL_DEFAULT - 571)) | (1L << (PAGE_VERIFY - 571)) | (1L << (CHECKSUM - 571)) | (1L << (TORN_PAGE_DETECTION - 571)) | (1L << (BULK_LOGGED - 571)) | (1L << (RECOVERY - 571)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 571)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 571)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 571)) | (1L << (EXECUTION_COUNT - 571)) | (1L << (QUERY_CAPTURE_POLICY - 571)) | (1L << (WAIT_STATS_CAPTURE_MODE - 571)) | (1L << (MAX_PLANS_PER_QUERY - 571)) | (1L << (QUERY_CAPTURE_MODE - 571)) | (1L << (SIZE_BASED_CLEANUP_MODE - 571)) | (1L << (INTERVAL_LENGTH_MINUTES - 571)) | (1L << (MAX_STORAGE_SIZE_MB - 571)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 571)) | (1L << (CLEANUP_POLICY - 571)) | (1L << (CUSTOM - 571)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 571)) | (1L << (OPERATION_MODE - 571)) | (1L << (QUERY_STORE - 571)) | (1L << (CURSOR_DEFAULT - 571)) | (1L << (GLOBAL - 571)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 571)) | (1L << (HOURS - 571)) | (1L << (CHANGE_RETENTION - 571)) | (1L << (AUTO_CLEANUP - 571)) | (1L << (CHANGE_TRACKING - 571)) | (1L << (AUTOMATIC_TUNING - 571)) | (1L << (FORCE_LAST_GOOD_PLAN - 571)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 571)) | (1L << (AUTO_UPDATE_STATISTICS - 571)) | (1L << (AUTO_SHRINK - 571)) | (1L << (AUTO_CREATE_STATISTICS - 571)) | (1L << (INCREMENTAL - 571)) | (1L << (AUTO_CLOSE - 571)) | (1L << (DATA_RETENTION - 571)) | (1L << (TEMPORAL_HISTORY_RETENTION - 571)) | (1L << (EDITION - 571)))) != 0) || ((((_la - 635)) & ~0x3f) == 0 && ((1L << (_la - 635)) & ((1L << (MIXED_PAGE_ALLOCATION - 635)) | (1L << (DISABLED - 635)) | (1L << (ALLOWED - 635)) | (1L << (HADR - 635)) | (1L << (MULTI_USER - 635)) | (1L << (RESTRICTED_USER - 635)) | (1L << (SINGLE_USER - 635)) | (1L << (OFFLINE - 635)) | (1L << (EMERGENCY - 635)) | (1L << (SUSPEND - 635)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 635)) | (1L << (ELASTIC_POOL - 635)) | (1L << (SERVICE_OBJECTIVE - 635)) | (1L << (DATABASE_NAME - 635)) | (1L << (ALLOW_CONNECTIONS - 635)) | (1L << (GEO - 635)) | (1L << (NAMED - 635)) | (1L << (DATEFIRST - 635)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 635)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 635)) | (1L << (SECONDARY - 635)) | (1L << (FAILOVER - 635)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 635)) | (1L << (DEFAULT_LANGUAGE - 635)) | (1L << (INLINE - 635)) | (1L << (NESTED_TRIGGERS - 635)) | (1L << (TRANSFORM_NOISE_WORDS - 635)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 635)) | (1L << (PERSISTENT_LOG_BUFFER - 635)) | (1L << (DIRECTORY_NAME - 635)) | (1L << (DATEFORMAT - 635)) | (1L << (DELAYED_DURABILITY - 635)) | (1L << (AUTHORIZATION - 635)) | (1L << (TRANSFER - 635)) | (1L << (PROVIDER - 635)) | (1L << (SID - 635)) | (1L << (SEARCH - 635)) | (1L << (MEMBER - 635)))) != 0) || ((((_la - 707)) & ~0x3f) == 0 && ((1L << (_la - 707)) & ((1L << (JSON - 707)) | (1L << (IDENTIFIER_ - 707)) | (1L << (DELIMITED_IDENTIFIER_ - 707)))) != 0)) {
15555 				{
15556 				setState(2436);
15557 				_errHandler.sync(this);
15558 				_la = _input.LA(1);
15559 				if (_la==LP_) {
15560 					{
15561 					setState(2435);
15562 					match(LP_);
15563 					}
15564 				}
15565 
15566 				setState(2438);
15567 				indexName();
15568 				setState(2443);
15569 				_errHandler.sync(this);
15570 				_la = _input.LA(1);
15571 				while (_la==COMMA_) {
15572 					{
15573 					{
15574 					setState(2439);
15575 					match(COMMA_);
15576 					setState(2440);
15577 					indexName();
15578 					}
15579 					}
15580 					setState(2445);
15581 					_errHandler.sync(this);
15582 					_la = _input.LA(1);
15583 				}
15584 				setState(2447);
15585 				_errHandler.sync(this);
15586 				_la = _input.LA(1);
15587 				if (_la==RP_) {
15588 					{
15589 					setState(2446);
15590 					match(RP_);
15591 					}
15592 				}
15593 
15594 				}
15595 			}
15596 
15597 			setState(2452);
15598 			_errHandler.sync(this);
15599 			_la = _input.LA(1);
15600 			if (_la==WITH) {
15601 				{
15602 				setState(2451);
15603 				statisticsWithClause();
15604 				}
15605 			}
15606 
15607 			}
15608 		}
15609 		catch (RecognitionException re) {
15610 			_localctx.exception = re;
15611 			_errHandler.reportError(this, re);
15612 			_errHandler.recover(this, re);
15613 		}
15614 		finally {
15615 			exitRule();
15616 		}
15617 		return _localctx;
15618 	}
15619 
15620 	public static class StatisticsWithClauseContext extends ParserRuleContext {
15621 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
15622 		public SampleOptionContext sampleOption() {
15623 			return getRuleContext(SampleOptionContext.class,0);
15624 		}
15625 		public StatisticsOptionsContext statisticsOptions() {
15626 			return getRuleContext(StatisticsOptionsContext.class,0);
15627 		}
15628 		public StatisticsWithClauseContext(ParserRuleContext parent, int invokingState) {
15629 			super(parent, invokingState);
15630 		}
15631 		@Override public int getRuleIndex() { return RULE_statisticsWithClause; }
15632 		@Override
15633 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15634 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatisticsWithClause(this);
15635 			else return visitor.visitChildren(this);
15636 		}
15637 	}
15638 
15639 	public final StatisticsWithClauseContext statisticsWithClause() throws RecognitionException {
15640 		StatisticsWithClauseContext _localctx = new StatisticsWithClauseContext(_ctx, getState());
15641 		enterRule(_localctx, 326, RULE_statisticsWithClause);
15642 		int _la;
15643 		try {
15644 			enterOuterAlt(_localctx, 1);
15645 			{
15646 			setState(2454);
15647 			match(WITH);
15648 			setState(2456);
15649 			_errHandler.sync(this);
15650 			_la = _input.LA(1);
15651 			if (((((_la - 712)) & ~0x3f) == 0 && ((1L << (_la - 712)) & ((1L << (FULLSCAN - 712)) | (1L << (SAMPLE - 712)) | (1L << (RESAMPLE - 712)))) != 0)) {
15652 				{
15653 				setState(2455);
15654 				sampleOption();
15655 				}
15656 			}
15657 
15658 			setState(2459);
15659 			_errHandler.sync(this);
15660 			_la = _input.LA(1);
15661 			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << COMMA_) | (1L << COLUMNS) | (1L << INDEX))) != 0) || _la==ALL || _la==MAXDOP || _la==INCREMENTAL || _la==NORECOMPUTE || _la==AUTO_DROP) {
15662 				{
15663 				setState(2458);
15664 				statisticsOptions();
15665 				}
15666 			}
15667 
15668 			}
15669 		}
15670 		catch (RecognitionException re) {
15671 			_localctx.exception = re;
15672 			_errHandler.reportError(this, re);
15673 			_errHandler.recover(this, re);
15674 		}
15675 		finally {
15676 			exitRule();
15677 		}
15678 		return _localctx;
15679 	}
15680 
15681 	public static class SampleOptionContext extends ParserRuleContext {
15682 		public TerminalNode FULLSCAN() { return getToken(SQLServerStatementParser.FULLSCAN, 0); }
15683 		public TerminalNode PERSIST_SAMPLE_PERCENT() { return getToken(SQLServerStatementParser.PERSIST_SAMPLE_PERCENT, 0); }
15684 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
15685 		public TerminalNode SAMPLE() { return getToken(SQLServerStatementParser.SAMPLE, 0); }
15686 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
15687 		public TerminalNode NUMBER_(int i) {
15688 			return getToken(SQLServerStatementParser.NUMBER_, i);
15689 		}
15690 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
15691 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
15692 		public TerminalNode PERCENT() { return getToken(SQLServerStatementParser.PERCENT, 0); }
15693 		public TerminalNode ROWS() { return getToken(SQLServerStatementParser.ROWS, 0); }
15694 		public TerminalNode RESAMPLE() { return getToken(SQLServerStatementParser.RESAMPLE, 0); }
15695 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
15696 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
15697 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
15698 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15699 		public TerminalNode COMMA_(int i) {
15700 			return getToken(SQLServerStatementParser.COMMA_, i);
15701 		}
15702 		public SampleOptionContext(ParserRuleContext parent, int invokingState) {
15703 			super(parent, invokingState);
15704 		}
15705 		@Override public int getRuleIndex() { return RULE_sampleOption; }
15706 		@Override
15707 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15708 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSampleOption(this);
15709 			else return visitor.visitChildren(this);
15710 		}
15711 	}
15712 
15713 	public final SampleOptionContext sampleOption() throws RecognitionException {
15714 		SampleOptionContext _localctx = new SampleOptionContext(_ctx, getState());
15715 		enterRule(_localctx, 328, RULE_sampleOption);
15716 		int _la;
15717 		try {
15718 			setState(2487);
15719 			_errHandler.sync(this);
15720 			switch (_input.LA(1)) {
15721 			case FULLSCAN:
15722 			case SAMPLE:
15723 				enterOuterAlt(_localctx, 1);
15724 				{
15725 				setState(2465);
15726 				_errHandler.sync(this);
15727 				switch (_input.LA(1)) {
15728 				case FULLSCAN:
15729 					{
15730 					setState(2461);
15731 					match(FULLSCAN);
15732 					}
15733 					break;
15734 				case SAMPLE:
15735 					{
15736 					{
15737 					setState(2462);
15738 					match(SAMPLE);
15739 					setState(2463);
15740 					match(NUMBER_);
15741 					setState(2464);
15742 					_la = _input.LA(1);
15743 					if ( !(_la==PERCENT || _la==ROWS) ) {
15744 					_errHandler.recoverInline(this);
15745 					}
15746 					else {
15747 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
15748 						_errHandler.reportMatch(this);
15749 						consume();
15750 					}
15751 					}
15752 					}
15753 					break;
15754 				default:
15755 					throw new NoViableAltException(this);
15756 				}
15757 				setState(2470);
15758 				_errHandler.sync(this);
15759 				_la = _input.LA(1);
15760 				if (_la==PERSIST_SAMPLE_PERCENT) {
15761 					{
15762 					setState(2467);
15763 					match(PERSIST_SAMPLE_PERCENT);
15764 					setState(2468);
15765 					match(EQ_);
15766 					setState(2469);
15767 					_la = _input.LA(1);
15768 					if ( !(_la==ON || _la==OFF) ) {
15769 					_errHandler.recoverInline(this);
15770 					}
15771 					else {
15772 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
15773 						_errHandler.reportMatch(this);
15774 						consume();
15775 					}
15776 					}
15777 				}
15778 
15779 				}
15780 				break;
15781 			case RESAMPLE:
15782 				enterOuterAlt(_localctx, 2);
15783 				{
15784 				setState(2472);
15785 				match(RESAMPLE);
15786 				setState(2485);
15787 				_errHandler.sync(this);
15788 				_la = _input.LA(1);
15789 				if (_la==ON) {
15790 					{
15791 					setState(2473);
15792 					match(ON);
15793 					setState(2474);
15794 					match(PARTITIONS);
15795 					setState(2475);
15796 					match(LP_);
15797 					setState(2476);
15798 					match(NUMBER_);
15799 					setState(2481);
15800 					_errHandler.sync(this);
15801 					_la = _input.LA(1);
15802 					while (_la==COMMA_) {
15803 						{
15804 						{
15805 						setState(2477);
15806 						match(COMMA_);
15807 						setState(2478);
15808 						match(NUMBER_);
15809 						}
15810 						}
15811 						setState(2483);
15812 						_errHandler.sync(this);
15813 						_la = _input.LA(1);
15814 					}
15815 					setState(2484);
15816 					match(RP_);
15817 					}
15818 				}
15819 
15820 				}
15821 				break;
15822 			default:
15823 				throw new NoViableAltException(this);
15824 			}
15825 		}
15826 		catch (RecognitionException re) {
15827 			_localctx.exception = re;
15828 			_errHandler.reportError(this, re);
15829 			_errHandler.recover(this, re);
15830 		}
15831 		finally {
15832 			exitRule();
15833 		}
15834 		return _localctx;
15835 	}
15836 
15837 	public static class StatisticsOptionsContext extends ParserRuleContext {
15838 		public List<StatisticsOptionContext> statisticsOption() {
15839 			return getRuleContexts(StatisticsOptionContext.class);
15840 		}
15841 		public StatisticsOptionContext statisticsOption(int i) {
15842 			return getRuleContext(StatisticsOptionContext.class,i);
15843 		}
15844 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
15845 		public TerminalNode COMMA_(int i) {
15846 			return getToken(SQLServerStatementParser.COMMA_, i);
15847 		}
15848 		public StatisticsOptionsContext(ParserRuleContext parent, int invokingState) {
15849 			super(parent, invokingState);
15850 		}
15851 		@Override public int getRuleIndex() { return RULE_statisticsOptions; }
15852 		@Override
15853 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15854 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatisticsOptions(this);
15855 			else return visitor.visitChildren(this);
15856 		}
15857 	}
15858 
15859 	public final StatisticsOptionsContext statisticsOptions() throws RecognitionException {
15860 		StatisticsOptionsContext _localctx = new StatisticsOptionsContext(_ctx, getState());
15861 		enterRule(_localctx, 330, RULE_statisticsOptions);
15862 		int _la;
15863 		try {
15864 			enterOuterAlt(_localctx, 1);
15865 			{
15866 			setState(2493); 
15867 			_errHandler.sync(this);
15868 			_la = _input.LA(1);
15869 			do {
15870 				{
15871 				{
15872 				setState(2490);
15873 				_errHandler.sync(this);
15874 				_la = _input.LA(1);
15875 				if (_la==COMMA_) {
15876 					{
15877 					setState(2489);
15878 					match(COMMA_);
15879 					}
15880 				}
15881 
15882 				setState(2492);
15883 				statisticsOption();
15884 				}
15885 				}
15886 				setState(2495); 
15887 				_errHandler.sync(this);
15888 				_la = _input.LA(1);
15889 			} while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << COMMA_) | (1L << COLUMNS) | (1L << INDEX))) != 0) || _la==ALL || _la==MAXDOP || _la==INCREMENTAL || _la==NORECOMPUTE || _la==AUTO_DROP );
15890 			}
15891 		}
15892 		catch (RecognitionException re) {
15893 			_localctx.exception = re;
15894 			_errHandler.reportError(this, re);
15895 			_errHandler.recover(this, re);
15896 		}
15897 		finally {
15898 			exitRule();
15899 		}
15900 		return _localctx;
15901 	}
15902 
15903 	public static class StatisticsOptionContext extends ParserRuleContext {
15904 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
15905 		public TerminalNode COLUMNS() { return getToken(SQLServerStatementParser.COLUMNS, 0); }
15906 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
15907 		public TerminalNode NORECOMPUTE() { return getToken(SQLServerStatementParser.NORECOMPUTE, 0); }
15908 		public TerminalNode INCREMENTAL() { return getToken(SQLServerStatementParser.INCREMENTAL, 0); }
15909 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
15910 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
15911 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
15912 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
15913 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
15914 		public TerminalNode AUTO_DROP() { return getToken(SQLServerStatementParser.AUTO_DROP, 0); }
15915 		public StatisticsOptionContext(ParserRuleContext parent, int invokingState) {
15916 			super(parent, invokingState);
15917 		}
15918 		@Override public int getRuleIndex() { return RULE_statisticsOption; }
15919 		@Override
15920 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
15921 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatisticsOption(this);
15922 			else return visitor.visitChildren(this);
15923 		}
15924 	}
15925 
15926 	public final StatisticsOptionContext statisticsOption() throws RecognitionException {
15927 		StatisticsOptionContext _localctx = new StatisticsOptionContext(_ctx, getState());
15928 		enterRule(_localctx, 332, RULE_statisticsOption);
15929 		int _la;
15930 		try {
15931 			setState(2510);
15932 			_errHandler.sync(this);
15933 			switch (_input.LA(1)) {
15934 			case ALL:
15935 				enterOuterAlt(_localctx, 1);
15936 				{
15937 				setState(2497);
15938 				match(ALL);
15939 				}
15940 				break;
15941 			case COLUMNS:
15942 				enterOuterAlt(_localctx, 2);
15943 				{
15944 				setState(2498);
15945 				match(COLUMNS);
15946 				}
15947 				break;
15948 			case INDEX:
15949 				enterOuterAlt(_localctx, 3);
15950 				{
15951 				setState(2499);
15952 				match(INDEX);
15953 				}
15954 				break;
15955 			case NORECOMPUTE:
15956 				enterOuterAlt(_localctx, 4);
15957 				{
15958 				setState(2500);
15959 				match(NORECOMPUTE);
15960 				}
15961 				break;
15962 			case INCREMENTAL:
15963 				enterOuterAlt(_localctx, 5);
15964 				{
15965 				setState(2501);
15966 				match(INCREMENTAL);
15967 				setState(2502);
15968 				match(EQ_);
15969 				setState(2503);
15970 				_la = _input.LA(1);
15971 				if ( !(_la==ON || _la==OFF) ) {
15972 				_errHandler.recoverInline(this);
15973 				}
15974 				else {
15975 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
15976 					_errHandler.reportMatch(this);
15977 					consume();
15978 				}
15979 				}
15980 				break;
15981 			case MAXDOP:
15982 				enterOuterAlt(_localctx, 6);
15983 				{
15984 				setState(2504);
15985 				match(MAXDOP);
15986 				setState(2505);
15987 				match(EQ_);
15988 				setState(2506);
15989 				match(NUMBER_);
15990 				}
15991 				break;
15992 			case AUTO_DROP:
15993 				enterOuterAlt(_localctx, 7);
15994 				{
15995 				setState(2507);
15996 				match(AUTO_DROP);
15997 				setState(2508);
15998 				match(EQ_);
15999 				setState(2509);
16000 				_la = _input.LA(1);
16001 				if ( !(_la==ON || _la==OFF) ) {
16002 				_errHandler.recoverInline(this);
16003 				}
16004 				else {
16005 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
16006 					_errHandler.reportMatch(this);
16007 					consume();
16008 				}
16009 				}
16010 				break;
16011 			default:
16012 				throw new NoViableAltException(this);
16013 			}
16014 		}
16015 		catch (RecognitionException re) {
16016 			_localctx.exception = re;
16017 			_errHandler.reportError(this, re);
16018 			_errHandler.recover(this, re);
16019 		}
16020 		finally {
16021 			exitRule();
16022 		}
16023 		return _localctx;
16024 	}
16025 
16026 	public static class FileTableClauseContext extends ParserRuleContext {
16027 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
16028 		public TerminalNode FILETABLE() { return getToken(SQLServerStatementParser.FILETABLE, 0); }
16029 		public FileTableClauseContext(ParserRuleContext parent, int invokingState) {
16030 			super(parent, invokingState);
16031 		}
16032 		@Override public int getRuleIndex() { return RULE_fileTableClause; }
16033 		@Override
16034 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16035 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileTableClause(this);
16036 			else return visitor.visitChildren(this);
16037 		}
16038 	}
16039 
16040 	public final FileTableClauseContext fileTableClause() throws RecognitionException {
16041 		FileTableClauseContext _localctx = new FileTableClauseContext(_ctx, getState());
16042 		enterRule(_localctx, 334, RULE_fileTableClause);
16043 		int _la;
16044 		try {
16045 			enterOuterAlt(_localctx, 1);
16046 			{
16047 			setState(2514);
16048 			_errHandler.sync(this);
16049 			_la = _input.LA(1);
16050 			if (_la==AS) {
16051 				{
16052 				setState(2512);
16053 				match(AS);
16054 				setState(2513);
16055 				match(FILETABLE);
16056 				}
16057 			}
16058 
16059 			}
16060 		}
16061 		catch (RecognitionException re) {
16062 			_localctx.exception = re;
16063 			_errHandler.reportError(this, re);
16064 			_errHandler.recover(this, re);
16065 		}
16066 		finally {
16067 			exitRule();
16068 		}
16069 		return _localctx;
16070 	}
16071 
16072 	public static class CreateDefinitionClauseContext extends ParserRuleContext {
16073 		public CreateTableDefinitionsContext createTableDefinitions() {
16074 			return getRuleContext(CreateTableDefinitionsContext.class,0);
16075 		}
16076 		public PartitionSchemeContext partitionScheme() {
16077 			return getRuleContext(PartitionSchemeContext.class,0);
16078 		}
16079 		public FileGroupContext fileGroup() {
16080 			return getRuleContext(FileGroupContext.class,0);
16081 		}
16082 		public CreateDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
16083 			super(parent, invokingState);
16084 		}
16085 		@Override public int getRuleIndex() { return RULE_createDefinitionClause; }
16086 		@Override
16087 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16088 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateDefinitionClause(this);
16089 			else return visitor.visitChildren(this);
16090 		}
16091 	}
16092 
16093 	public final CreateDefinitionClauseContext createDefinitionClause() throws RecognitionException {
16094 		CreateDefinitionClauseContext _localctx = new CreateDefinitionClauseContext(_ctx, getState());
16095 		enterRule(_localctx, 336, RULE_createDefinitionClause);
16096 		try {
16097 			enterOuterAlt(_localctx, 1);
16098 			{
16099 			setState(2516);
16100 			createTableDefinitions();
16101 			setState(2517);
16102 			partitionScheme();
16103 			setState(2518);
16104 			fileGroup();
16105 			}
16106 		}
16107 		catch (RecognitionException re) {
16108 			_localctx.exception = re;
16109 			_errHandler.reportError(this, re);
16110 			_errHandler.recover(this, re);
16111 		}
16112 		finally {
16113 			exitRule();
16114 		}
16115 		return _localctx;
16116 	}
16117 
16118 	public static class CreateTableDefinitionsContext extends ParserRuleContext {
16119 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
16120 		public List<CreateTableDefinitionContext> createTableDefinition() {
16121 			return getRuleContexts(CreateTableDefinitionContext.class);
16122 		}
16123 		public CreateTableDefinitionContext createTableDefinition(int i) {
16124 			return getRuleContext(CreateTableDefinitionContext.class,i);
16125 		}
16126 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
16127 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
16128 		public TerminalNode COMMA_(int i) {
16129 			return getToken(SQLServerStatementParser.COMMA_, i);
16130 		}
16131 		public PeriodClauseContext periodClause() {
16132 			return getRuleContext(PeriodClauseContext.class,0);
16133 		}
16134 		public CreateTableDefinitionsContext(ParserRuleContext parent, int invokingState) {
16135 			super(parent, invokingState);
16136 		}
16137 		@Override public int getRuleIndex() { return RULE_createTableDefinitions; }
16138 		@Override
16139 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16140 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableDefinitions(this);
16141 			else return visitor.visitChildren(this);
16142 		}
16143 	}
16144 
16145 	public final CreateTableDefinitionsContext createTableDefinitions() throws RecognitionException {
16146 		CreateTableDefinitionsContext _localctx = new CreateTableDefinitionsContext(_ctx, getState());
16147 		enterRule(_localctx, 338, RULE_createTableDefinitions);
16148 		int _la;
16149 		try {
16150 			int _alt;
16151 			enterOuterAlt(_localctx, 1);
16152 			{
16153 			setState(2520);
16154 			match(LP_);
16155 			setState(2521);
16156 			createTableDefinition();
16157 			setState(2526);
16158 			_errHandler.sync(this);
16159 			_alt = getInterpreter().adaptivePredict(_input,186,_ctx);
16160 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
16161 				if ( _alt==1 ) {
16162 					{
16163 					{
16164 					setState(2522);
16165 					match(COMMA_);
16166 					setState(2523);
16167 					createTableDefinition();
16168 					}
16169 					} 
16170 				}
16171 				setState(2528);
16172 				_errHandler.sync(this);
16173 				_alt = getInterpreter().adaptivePredict(_input,186,_ctx);
16174 			}
16175 			setState(2531);
16176 			_errHandler.sync(this);
16177 			_la = _input.LA(1);
16178 			if (_la==COMMA_) {
16179 				{
16180 				setState(2529);
16181 				match(COMMA_);
16182 				setState(2530);
16183 				periodClause();
16184 				}
16185 			}
16186 
16187 			setState(2533);
16188 			match(RP_);
16189 			}
16190 		}
16191 		catch (RecognitionException re) {
16192 			_localctx.exception = re;
16193 			_errHandler.reportError(this, re);
16194 			_errHandler.recover(this, re);
16195 		}
16196 		finally {
16197 			exitRule();
16198 		}
16199 		return _localctx;
16200 	}
16201 
16202 	public static class CreateTableDefinitionContext extends ParserRuleContext {
16203 		public ColumnDefinitionContext columnDefinition() {
16204 			return getRuleContext(ColumnDefinitionContext.class,0);
16205 		}
16206 		public ComputedColumnDefinitionContext computedColumnDefinition() {
16207 			return getRuleContext(ComputedColumnDefinitionContext.class,0);
16208 		}
16209 		public ColumnSetDefinitionContext columnSetDefinition() {
16210 			return getRuleContext(ColumnSetDefinitionContext.class,0);
16211 		}
16212 		public TableConstraintContext tableConstraint() {
16213 			return getRuleContext(TableConstraintContext.class,0);
16214 		}
16215 		public TableIndexContext tableIndex() {
16216 			return getRuleContext(TableIndexContext.class,0);
16217 		}
16218 		public CreateTableDefinitionContext(ParserRuleContext parent, int invokingState) {
16219 			super(parent, invokingState);
16220 		}
16221 		@Override public int getRuleIndex() { return RULE_createTableDefinition; }
16222 		@Override
16223 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16224 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableDefinition(this);
16225 			else return visitor.visitChildren(this);
16226 		}
16227 	}
16228 
16229 	public final CreateTableDefinitionContext createTableDefinition() throws RecognitionException {
16230 		CreateTableDefinitionContext _localctx = new CreateTableDefinitionContext(_ctx, getState());
16231 		enterRule(_localctx, 340, RULE_createTableDefinition);
16232 		try {
16233 			setState(2540);
16234 			_errHandler.sync(this);
16235 			switch ( getInterpreter().adaptivePredict(_input,188,_ctx) ) {
16236 			case 1:
16237 				enterOuterAlt(_localctx, 1);
16238 				{
16239 				setState(2535);
16240 				columnDefinition();
16241 				}
16242 				break;
16243 			case 2:
16244 				enterOuterAlt(_localctx, 2);
16245 				{
16246 				setState(2536);
16247 				computedColumnDefinition();
16248 				}
16249 				break;
16250 			case 3:
16251 				enterOuterAlt(_localctx, 3);
16252 				{
16253 				setState(2537);
16254 				columnSetDefinition();
16255 				}
16256 				break;
16257 			case 4:
16258 				enterOuterAlt(_localctx, 4);
16259 				{
16260 				setState(2538);
16261 				tableConstraint();
16262 				}
16263 				break;
16264 			case 5:
16265 				enterOuterAlt(_localctx, 5);
16266 				{
16267 				setState(2539);
16268 				tableIndex();
16269 				}
16270 				break;
16271 			}
16272 		}
16273 		catch (RecognitionException re) {
16274 			_localctx.exception = re;
16275 			_errHandler.reportError(this, re);
16276 			_errHandler.recover(this, re);
16277 		}
16278 		finally {
16279 			exitRule();
16280 		}
16281 		return _localctx;
16282 	}
16283 
16284 	public static class ColumnDefinitionContext extends ParserRuleContext {
16285 		public ColumnNameContext columnName() {
16286 			return getRuleContext(ColumnNameContext.class,0);
16287 		}
16288 		public DataTypeContext dataType() {
16289 			return getRuleContext(DataTypeContext.class,0);
16290 		}
16291 		public ColumnConstraintsContext columnConstraints() {
16292 			return getRuleContext(ColumnConstraintsContext.class,0);
16293 		}
16294 		public List<ColumnDefinitionOptionContext> columnDefinitionOption() {
16295 			return getRuleContexts(ColumnDefinitionOptionContext.class);
16296 		}
16297 		public ColumnDefinitionOptionContext columnDefinitionOption(int i) {
16298 			return getRuleContext(ColumnDefinitionOptionContext.class,i);
16299 		}
16300 		public ColumnIndexContext columnIndex() {
16301 			return getRuleContext(ColumnIndexContext.class,0);
16302 		}
16303 		public ColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
16304 			super(parent, invokingState);
16305 		}
16306 		@Override public int getRuleIndex() { return RULE_columnDefinition; }
16307 		@Override
16308 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16309 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnDefinition(this);
16310 			else return visitor.visitChildren(this);
16311 		}
16312 	}
16313 
16314 	public final ColumnDefinitionContext columnDefinition() throws RecognitionException {
16315 		ColumnDefinitionContext _localctx = new ColumnDefinitionContext(_ctx, getState());
16316 		enterRule(_localctx, 342, RULE_columnDefinition);
16317 		int _la;
16318 		try {
16319 			int _alt;
16320 			enterOuterAlt(_localctx, 1);
16321 			{
16322 			setState(2542);
16323 			columnName();
16324 			setState(2543);
16325 			dataType();
16326 			setState(2547);
16327 			_errHandler.sync(this);
16328 			_alt = getInterpreter().adaptivePredict(_input,189,_ctx);
16329 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
16330 				if ( _alt==1 ) {
16331 					{
16332 					{
16333 					setState(2544);
16334 					columnDefinitionOption();
16335 					}
16336 					} 
16337 				}
16338 				setState(2549);
16339 				_errHandler.sync(this);
16340 				_alt = getInterpreter().adaptivePredict(_input,189,_ctx);
16341 			}
16342 			setState(2550);
16343 			columnConstraints();
16344 			setState(2552);
16345 			_errHandler.sync(this);
16346 			_la = _input.LA(1);
16347 			if (_la==INDEX) {
16348 				{
16349 				setState(2551);
16350 				columnIndex();
16351 				}
16352 			}
16353 
16354 			}
16355 		}
16356 		catch (RecognitionException re) {
16357 			_localctx.exception = re;
16358 			_errHandler.reportError(this, re);
16359 			_errHandler.recover(this, re);
16360 		}
16361 		finally {
16362 			exitRule();
16363 		}
16364 		return _localctx;
16365 	}
16366 
16367 	public static class ColumnDefinitionOptionContext extends ParserRuleContext {
16368 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
16369 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
16370 		public CollationNameContext collationName() {
16371 			return getRuleContext(CollationNameContext.class,0);
16372 		}
16373 		public TerminalNode SPARSE() { return getToken(SQLServerStatementParser.SPARSE, 0); }
16374 		public TerminalNode MASKED() { return getToken(SQLServerStatementParser.MASKED, 0); }
16375 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
16376 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
16377 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
16378 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
16379 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
16380 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
16381 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
16382 		public ExprContext expr() {
16383 			return getRuleContext(ExprContext.class,0);
16384 		}
16385 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
16386 		public IgnoredIdentifierContext ignoredIdentifier() {
16387 			return getRuleContext(IgnoredIdentifierContext.class,0);
16388 		}
16389 		public TerminalNode IDENTITY() { return getToken(SQLServerStatementParser.IDENTITY, 0); }
16390 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
16391 		public TerminalNode NUMBER_(int i) {
16392 			return getToken(SQLServerStatementParser.NUMBER_, i);
16393 		}
16394 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
16395 		public TerminalNode COMMA_(int i) {
16396 			return getToken(SQLServerStatementParser.COMMA_, i);
16397 		}
16398 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
16399 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
16400 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
16401 		public TerminalNode GENERATED() { return getToken(SQLServerStatementParser.GENERATED, 0); }
16402 		public TerminalNode ALWAYS() { return getToken(SQLServerStatementParser.ALWAYS, 0); }
16403 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
16404 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
16405 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
16406 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
16407 		public TerminalNode HIDDEN_() { return getToken(SQLServerStatementParser.HIDDEN_, 0); }
16408 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
16409 		public TerminalNode ROWGUIDCOL() { return getToken(SQLServerStatementParser.ROWGUIDCOL, 0); }
16410 		public TerminalNode ENCRYPTED() { return getToken(SQLServerStatementParser.ENCRYPTED, 0); }
16411 		public EncryptedOptionsContext encryptedOptions() {
16412 			return getRuleContext(EncryptedOptionsContext.class,0);
16413 		}
16414 		public List<ColumnConstraintContext> columnConstraint() {
16415 			return getRuleContexts(ColumnConstraintContext.class);
16416 		}
16417 		public ColumnConstraintContext columnConstraint(int i) {
16418 			return getRuleContext(ColumnConstraintContext.class,i);
16419 		}
16420 		public ColumnIndexContext columnIndex() {
16421 			return getRuleContext(ColumnIndexContext.class,0);
16422 		}
16423 		public ColumnDefinitionOptionContext(ParserRuleContext parent, int invokingState) {
16424 			super(parent, invokingState);
16425 		}
16426 		@Override public int getRuleIndex() { return RULE_columnDefinitionOption; }
16427 		@Override
16428 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16429 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnDefinitionOption(this);
16430 			else return visitor.visitChildren(this);
16431 		}
16432 	}
16433 
16434 	public final ColumnDefinitionOptionContext columnDefinitionOption() throws RecognitionException {
16435 		ColumnDefinitionOptionContext _localctx = new ColumnDefinitionOptionContext(_ctx, getState());
16436 		enterRule(_localctx, 344, RULE_columnDefinitionOption);
16437 		int _la;
16438 		try {
16439 			int _alt;
16440 			setState(2607);
16441 			_errHandler.sync(this);
16442 			switch ( getInterpreter().adaptivePredict(_input,196,_ctx) ) {
16443 			case 1:
16444 				enterOuterAlt(_localctx, 1);
16445 				{
16446 				setState(2554);
16447 				match(FILESTREAM);
16448 				}
16449 				break;
16450 			case 2:
16451 				enterOuterAlt(_localctx, 2);
16452 				{
16453 				setState(2555);
16454 				match(COLLATE);
16455 				setState(2556);
16456 				collationName();
16457 				}
16458 				break;
16459 			case 3:
16460 				enterOuterAlt(_localctx, 3);
16461 				{
16462 				setState(2557);
16463 				match(SPARSE);
16464 				}
16465 				break;
16466 			case 4:
16467 				enterOuterAlt(_localctx, 4);
16468 				{
16469 				setState(2558);
16470 				match(MASKED);
16471 				setState(2559);
16472 				match(WITH);
16473 				setState(2560);
16474 				match(LP_);
16475 				setState(2561);
16476 				match(FUNCTION);
16477 				setState(2562);
16478 				match(EQ_);
16479 				setState(2563);
16480 				match(STRING_);
16481 				setState(2564);
16482 				match(RP_);
16483 				}
16484 				break;
16485 			case 5:
16486 				enterOuterAlt(_localctx, 5);
16487 				{
16488 				setState(2567);
16489 				_errHandler.sync(this);
16490 				_la = _input.LA(1);
16491 				if (_la==CONSTRAINT) {
16492 					{
16493 					setState(2565);
16494 					match(CONSTRAINT);
16495 					setState(2566);
16496 					ignoredIdentifier();
16497 					}
16498 				}
16499 
16500 				setState(2569);
16501 				match(DEFAULT);
16502 				setState(2570);
16503 				expr(0);
16504 				}
16505 				break;
16506 			case 6:
16507 				enterOuterAlt(_localctx, 6);
16508 				{
16509 				setState(2571);
16510 				match(IDENTITY);
16511 				setState(2577);
16512 				_errHandler.sync(this);
16513 				_la = _input.LA(1);
16514 				if (_la==LP_) {
16515 					{
16516 					setState(2572);
16517 					match(LP_);
16518 					setState(2573);
16519 					match(NUMBER_);
16520 					setState(2574);
16521 					match(COMMA_);
16522 					setState(2575);
16523 					match(NUMBER_);
16524 					setState(2576);
16525 					match(RP_);
16526 					}
16527 				}
16528 
16529 				}
16530 				break;
16531 			case 7:
16532 				enterOuterAlt(_localctx, 7);
16533 				{
16534 				setState(2579);
16535 				match(NOT);
16536 				setState(2580);
16537 				match(FOR);
16538 				setState(2581);
16539 				match(REPLICATION);
16540 				}
16541 				break;
16542 			case 8:
16543 				enterOuterAlt(_localctx, 8);
16544 				{
16545 				setState(2582);
16546 				match(GENERATED);
16547 				setState(2583);
16548 				match(ALWAYS);
16549 				setState(2584);
16550 				match(AS);
16551 				setState(2585);
16552 				match(ROW);
16553 				setState(2586);
16554 				_la = _input.LA(1);
16555 				if ( !(_la==START || _la==END) ) {
16556 				_errHandler.recoverInline(this);
16557 				}
16558 				else {
16559 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
16560 					_errHandler.reportMatch(this);
16561 					consume();
16562 				}
16563 				setState(2588);
16564 				_errHandler.sync(this);
16565 				_la = _input.LA(1);
16566 				if (_la==HIDDEN_) {
16567 					{
16568 					setState(2587);
16569 					match(HIDDEN_);
16570 					}
16571 				}
16572 
16573 				}
16574 				break;
16575 			case 9:
16576 				enterOuterAlt(_localctx, 9);
16577 				{
16578 				setState(2591);
16579 				_errHandler.sync(this);
16580 				_la = _input.LA(1);
16581 				if (_la==NOT) {
16582 					{
16583 					setState(2590);
16584 					match(NOT);
16585 					}
16586 				}
16587 
16588 				setState(2593);
16589 				match(NULL);
16590 				}
16591 				break;
16592 			case 10:
16593 				enterOuterAlt(_localctx, 10);
16594 				{
16595 				setState(2594);
16596 				match(ROWGUIDCOL);
16597 				}
16598 				break;
16599 			case 11:
16600 				enterOuterAlt(_localctx, 11);
16601 				{
16602 				setState(2595);
16603 				match(ENCRYPTED);
16604 				setState(2596);
16605 				match(WITH);
16606 				setState(2597);
16607 				encryptedOptions();
16608 				}
16609 				break;
16610 			case 12:
16611 				enterOuterAlt(_localctx, 12);
16612 				{
16613 				setState(2598);
16614 				columnConstraint();
16615 				setState(2603);
16616 				_errHandler.sync(this);
16617 				_alt = getInterpreter().adaptivePredict(_input,195,_ctx);
16618 				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
16619 					if ( _alt==1 ) {
16620 						{
16621 						{
16622 						setState(2599);
16623 						match(COMMA_);
16624 						setState(2600);
16625 						columnConstraint();
16626 						}
16627 						} 
16628 					}
16629 					setState(2605);
16630 					_errHandler.sync(this);
16631 					_alt = getInterpreter().adaptivePredict(_input,195,_ctx);
16632 				}
16633 				}
16634 				break;
16635 			case 13:
16636 				enterOuterAlt(_localctx, 13);
16637 				{
16638 				setState(2606);
16639 				columnIndex();
16640 				}
16641 				break;
16642 			}
16643 		}
16644 		catch (RecognitionException re) {
16645 			_localctx.exception = re;
16646 			_errHandler.reportError(this, re);
16647 			_errHandler.recover(this, re);
16648 		}
16649 		finally {
16650 			exitRule();
16651 		}
16652 		return _localctx;
16653 	}
16654 
16655 	public static class EncryptedOptionsContext extends ParserRuleContext {
16656 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
16657 		public TerminalNode COLUMN_ENCRYPTION_KEY() { return getToken(SQLServerStatementParser.COLUMN_ENCRYPTION_KEY, 0); }
16658 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
16659 		public TerminalNode EQ_(int i) {
16660 			return getToken(SQLServerStatementParser.EQ_, i);
16661 		}
16662 		public IgnoredIdentifierContext ignoredIdentifier() {
16663 			return getRuleContext(IgnoredIdentifierContext.class,0);
16664 		}
16665 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
16666 		public TerminalNode COMMA_(int i) {
16667 			return getToken(SQLServerStatementParser.COMMA_, i);
16668 		}
16669 		public TerminalNode ENCRYPTION_TYPE() { return getToken(SQLServerStatementParser.ENCRYPTION_TYPE, 0); }
16670 		public TerminalNode ALGORITHM() { return getToken(SQLServerStatementParser.ALGORITHM, 0); }
16671 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
16672 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
16673 		public TerminalNode DETERMINISTIC() { return getToken(SQLServerStatementParser.DETERMINISTIC, 0); }
16674 		public TerminalNode RANDOMIZED() { return getToken(SQLServerStatementParser.RANDOMIZED, 0); }
16675 		public EncryptedOptionsContext(ParserRuleContext parent, int invokingState) {
16676 			super(parent, invokingState);
16677 		}
16678 		@Override public int getRuleIndex() { return RULE_encryptedOptions; }
16679 		@Override
16680 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16681 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEncryptedOptions(this);
16682 			else return visitor.visitChildren(this);
16683 		}
16684 	}
16685 
16686 	public final EncryptedOptionsContext encryptedOptions() throws RecognitionException {
16687 		EncryptedOptionsContext _localctx = new EncryptedOptionsContext(_ctx, getState());
16688 		enterRule(_localctx, 346, RULE_encryptedOptions);
16689 		int _la;
16690 		try {
16691 			enterOuterAlt(_localctx, 1);
16692 			{
16693 			setState(2609);
16694 			match(LP_);
16695 			setState(2610);
16696 			match(COLUMN_ENCRYPTION_KEY);
16697 			setState(2611);
16698 			match(EQ_);
16699 			setState(2612);
16700 			ignoredIdentifier();
16701 			setState(2613);
16702 			match(COMMA_);
16703 			setState(2614);
16704 			match(ENCRYPTION_TYPE);
16705 			setState(2615);
16706 			match(EQ_);
16707 			setState(2616);
16708 			_la = _input.LA(1);
16709 			if ( !(_la==DETERMINISTIC || _la==RANDOMIZED) ) {
16710 			_errHandler.recoverInline(this);
16711 			}
16712 			else {
16713 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
16714 				_errHandler.reportMatch(this);
16715 				consume();
16716 			}
16717 			setState(2617);
16718 			match(COMMA_);
16719 			setState(2618);
16720 			match(ALGORITHM);
16721 			setState(2619);
16722 			match(EQ_);
16723 			setState(2620);
16724 			match(STRING_);
16725 			setState(2621);
16726 			match(RP_);
16727 			}
16728 		}
16729 		catch (RecognitionException re) {
16730 			_localctx.exception = re;
16731 			_errHandler.reportError(this, re);
16732 			_errHandler.recover(this, re);
16733 		}
16734 		finally {
16735 			exitRule();
16736 		}
16737 		return _localctx;
16738 	}
16739 
16740 	public static class ColumnConstraintContext extends ParserRuleContext {
16741 		public PrimaryKeyConstraintContext primaryKeyConstraint() {
16742 			return getRuleContext(PrimaryKeyConstraintContext.class,0);
16743 		}
16744 		public ColumnForeignKeyConstraintContext columnForeignKeyConstraint() {
16745 			return getRuleContext(ColumnForeignKeyConstraintContext.class,0);
16746 		}
16747 		public CheckConstraintContext checkConstraint() {
16748 			return getRuleContext(CheckConstraintContext.class,0);
16749 		}
16750 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
16751 		public ConstraintNameContext constraintName() {
16752 			return getRuleContext(ConstraintNameContext.class,0);
16753 		}
16754 		public ColumnConstraintContext(ParserRuleContext parent, int invokingState) {
16755 			super(parent, invokingState);
16756 		}
16757 		@Override public int getRuleIndex() { return RULE_columnConstraint; }
16758 		@Override
16759 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16760 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnConstraint(this);
16761 			else return visitor.visitChildren(this);
16762 		}
16763 	}
16764 
16765 	public final ColumnConstraintContext columnConstraint() throws RecognitionException {
16766 		ColumnConstraintContext _localctx = new ColumnConstraintContext(_ctx, getState());
16767 		enterRule(_localctx, 348, RULE_columnConstraint);
16768 		int _la;
16769 		try {
16770 			enterOuterAlt(_localctx, 1);
16771 			{
16772 			setState(2625);
16773 			_errHandler.sync(this);
16774 			_la = _input.LA(1);
16775 			if (_la==CONSTRAINT) {
16776 				{
16777 				setState(2623);
16778 				match(CONSTRAINT);
16779 				setState(2624);
16780 				constraintName();
16781 				}
16782 			}
16783 
16784 			setState(2630);
16785 			_errHandler.sync(this);
16786 			switch (_input.LA(1)) {
16787 			case PRIMARY:
16788 			case UNIQUE:
16789 			case KEY:
16790 				{
16791 				setState(2627);
16792 				primaryKeyConstraint();
16793 				}
16794 				break;
16795 			case FOREIGN:
16796 			case REFERENCES:
16797 				{
16798 				setState(2628);
16799 				columnForeignKeyConstraint();
16800 				}
16801 				break;
16802 			case CHECK:
16803 				{
16804 				setState(2629);
16805 				checkConstraint();
16806 				}
16807 				break;
16808 			default:
16809 				throw new NoViableAltException(this);
16810 			}
16811 			}
16812 		}
16813 		catch (RecognitionException re) {
16814 			_localctx.exception = re;
16815 			_errHandler.reportError(this, re);
16816 			_errHandler.recover(this, re);
16817 		}
16818 		finally {
16819 			exitRule();
16820 		}
16821 		return _localctx;
16822 	}
16823 
16824 	public static class ComputedColumnConstraintContext extends ParserRuleContext {
16825 		public PrimaryKeyConstraintContext primaryKeyConstraint() {
16826 			return getRuleContext(PrimaryKeyConstraintContext.class,0);
16827 		}
16828 		public ComputedColumnForeignKeyConstraintContext computedColumnForeignKeyConstraint() {
16829 			return getRuleContext(ComputedColumnForeignKeyConstraintContext.class,0);
16830 		}
16831 		public CheckConstraintContext checkConstraint() {
16832 			return getRuleContext(CheckConstraintContext.class,0);
16833 		}
16834 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
16835 		public ConstraintNameContext constraintName() {
16836 			return getRuleContext(ConstraintNameContext.class,0);
16837 		}
16838 		public ComputedColumnConstraintContext(ParserRuleContext parent, int invokingState) {
16839 			super(parent, invokingState);
16840 		}
16841 		@Override public int getRuleIndex() { return RULE_computedColumnConstraint; }
16842 		@Override
16843 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
16844 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnConstraint(this);
16845 			else return visitor.visitChildren(this);
16846 		}
16847 	}
16848 
16849 	public final ComputedColumnConstraintContext computedColumnConstraint() throws RecognitionException {
16850 		ComputedColumnConstraintContext _localctx = new ComputedColumnConstraintContext(_ctx, getState());
16851 		enterRule(_localctx, 350, RULE_computedColumnConstraint);
16852 		int _la;
16853 		try {
16854 			enterOuterAlt(_localctx, 1);
16855 			{
16856 			setState(2634);
16857 			_errHandler.sync(this);
16858 			_la = _input.LA(1);
16859 			if (_la==CONSTRAINT) {
16860 				{
16861 				setState(2632);
16862 				match(CONSTRAINT);
16863 				setState(2633);
16864 				constraintName();
16865 				}
16866 			}
16867 
16868 			setState(2639);
16869 			_errHandler.sync(this);
16870 			switch (_input.LA(1)) {
16871 			case PRIMARY:
16872 			case UNIQUE:
16873 			case KEY:
16874 				{
16875 				setState(2636);
16876 				primaryKeyConstraint();
16877 				}
16878 				break;
16879 			case DOT_:
16880 			case TRUNCATE:
16881 			case SCHEMA:
16882 			case COLUMNS:
16883 			case FOREIGN:
16884 			case PRECISION:
16885 			case FUNCTION:
16886 			case TRIGGER:
16887 			case CAST:
16888 			case TRIM:
16889 			case SUBSTRING:
16890 			case RIGHT:
16891 			case OFF:
16892 			case GROUP:
16893 			case LIMIT:
16894 			case OFFSET:
16895 			case SAVEPOINT:
16896 			case BOOLEAN:
16897 			case ARRAY:
16898 			case DATE:
16899 			case TIMESTAMP:
16900 			case LOCALTIME:
16901 			case LOCALTIMESTAMP:
16902 			case YEAR:
16903 			case QUARTER:
16904 			case MONTH:
16905 			case WEEK:
16906 			case DAY:
16907 			case SECOND:
16908 			case MICROSECOND:
16909 			case MAX:
16910 			case MIN:
16911 			case SUM:
16912 			case COUNT:
16913 			case AVG:
16914 			case ENABLE:
16915 			case DISABLE:
16916 			case INSTANCE:
16917 			case DO:
16918 			case DEFINER:
16919 			case SQL:
16920 			case CASCADED:
16921 			case LOCAL:
16922 			case NEXT:
16923 			case NAME:
16924 			case INTEGER:
16925 			case TYPE:
16926 			case TEXT:
16927 			case VIEWS:
16928 			case READ_ONLY:
16929 			case DATABASE:
16930 			case RETURNS:
16931 			case DATEPART:
16932 			case PASSWORD:
16933 			case BINARY:
16934 			case HIDDEN_:
16935 			case MOD:
16936 			case PARTITION:
16937 			case PARTITIONS:
16938 			case TOP:
16939 			case ROW:
16940 			case ROWS:
16941 			case XOR:
16942 			case ALWAYS:
16943 			case USER:
16944 			case ROLE:
16945 			case START:
16946 			case ALGORITHM:
16947 			case AUTO:
16948 			case BLOCKERS:
16949 			case CLUSTERED:
16950 			case NONCLUSTERED:
16951 			case COLUMNSTORE:
16952 			case CONTENT:
16953 			case YEARS:
16954 			case MONTHS:
16955 			case WEEKS:
16956 			case DAYS:
16957 			case MINUTES:
16958 			case DENY:
16959 			case DETERMINISTIC:
16960 			case DISTRIBUTION:
16961 			case DOCUMENT:
16962 			case DURABILITY:
16963 			case ENCRYPTED:
16964 			case FILESTREAM:
16965 			case FILETABLE:
16966 			case FILLFACTOR:
16967 			case FOLLOWING:
16968 			case HASH:
16969 			case HEAP:
16970 			case INBOUND:
16971 			case OUTBOUND:
16972 			case UNBOUNDED:
16973 			case INFINITE:
16974 			case LOGIN:
16975 			case MASKED:
16976 			case MAXDOP:
16977 			case MOVE:
16978 			case NOCHECK:
16979 			case OBJECT:
16980 			case ONLINE:
16981 			case OVER:
16982 			case PAGE:
16983 			case PAUSED:
16984 			case PERIOD:
16985 			case PERSISTED:
16986 			case PRECEDING:
16987 			case RANDOMIZED:
16988 			case RANGE:
16989 			case REBUILD:
16990 			case REPLICATE:
16991 			case REPLICATION:
16992 			case RESUMABLE:
16993 			case ROWGUIDCOL:
16994 			case SAVE:
16995 			case SELF:
16996 			case SPARSE:
16997 			case SWITCH:
16998 			case TRAN:
16999 			case TRANCOUNT:
17000 			case CONTROL:
17001 			case CONCAT:
17002 			case TAKE:
17003 			case OWNERSHIP:
17004 			case DEFINITION:
17005 			case APPLICATION:
17006 			case ASSEMBLY:
17007 			case SYMMETRIC:
17008 			case ASYMMETRIC:
17009 			case SERVER:
17010 			case RECEIVE:
17011 			case CHANGE:
17012 			case TRACE:
17013 			case TRACKING:
17014 			case RESOURCES:
17015 			case SETTINGS:
17016 			case STATE:
17017 			case AVAILABILITY:
17018 			case CREDENTIAL:
17019 			case ENDPOINT:
17020 			case EVENT:
17021 			case NOTIFICATION:
17022 			case LINKED:
17023 			case AUDIT:
17024 			case DDL:
17025 			case XML:
17026 			case IMPERSONATE:
17027 			case SECURABLES:
17028 			case AUTHENTICATE:
17029 			case EXTERNAL:
17030 			case ACCESS:
17031 			case ADMINISTER:
17032 			case BULK:
17033 			case OPERATIONS:
17034 			case UNSAFE:
17035 			case SHUTDOWN:
17036 			case SCOPED:
17037 			case CONFIGURATION:
17038 			case DATASPACE:
17039 			case SERVICE:
17040 			case CERTIFICATE:
17041 			case CONTRACT:
17042 			case ENCRYPTION:
17043 			case MASTER:
17044 			case DATA:
17045 			case SOURCE:
17046 			case FILE:
17047 			case FORMAT:
17048 			case LIBRARY:
17049 			case FULLTEXT:
17050 			case MASK:
17051 			case UNMASK:
17052 			case MESSAGE:
17053 			case REMOTE:
17054 			case BINDING:
17055 			case ROUTE:
17056 			case SECURITY:
17057 			case POLICY:
17058 			case AGGREGATE:
17059 			case QUEUE:
17060 			case RULE:
17061 			case SYNONYM:
17062 			case COLLECTION:
17063 			case SCRIPT:
17064 			case KILL:
17065 			case BACKUP:
17066 			case LOG:
17067 			case SHOWPLAN:
17068 			case SUBSCRIBE:
17069 			case QUERY:
17070 			case NOTIFICATIONS:
17071 			case CHECKPOINT:
17072 			case SEQUENCE:
17073 			case ABORT_AFTER_WAIT:
17074 			case ALLOW_PAGE_LOCKS:
17075 			case ALLOW_ROW_LOCKS:
17076 			case ALL_SPARSE_COLUMNS:
17077 			case BUCKET_COUNT:
17078 			case COLUMNSTORE_ARCHIVE:
17079 			case COLUMN_ENCRYPTION_KEY:
17080 			case COLUMN_SET:
17081 			case COMPRESSION_DELAY:
17082 			case DATABASE_DEAULT:
17083 			case DATA_COMPRESSION:
17084 			case DATA_CONSISTENCY_CHECK:
17085 			case ENCRYPTION_TYPE:
17086 			case SYSTEM_TIME:
17087 			case SYSTEM_VERSIONING:
17088 			case TEXTIMAGE_ON:
17089 			case WAIT_AT_LOW_PRIORITY:
17090 			case STATISTICS_INCREMENTAL:
17091 			case STATISTICS_NORECOMPUTE:
17092 			case ROUND_ROBIN:
17093 			case SCHEMA_AND_DATA:
17094 			case SCHEMA_ONLY:
17095 			case SORT_IN_TEMPDB:
17096 			case IGNORE_DUP_KEY:
17097 			case IMPLICIT_TRANSACTIONS:
17098 			case MAX_DURATION:
17099 			case MEMORY_OPTIMIZED:
17100 			case MIGRATION_STATE:
17101 			case PAD_INDEX:
17102 			case REMOTE_DATA_ARCHIVE:
17103 			case FILESTREAM_ON:
17104 			case FILETABLE_COLLATE_FILENAME:
17105 			case FILETABLE_DIRECTORY:
17106 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
17107 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
17108 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
17109 			case FILTER_PREDICATE:
17110 			case HISTORY_RETENTION_PERIOD:
17111 			case HISTORY_TABLE:
17112 			case LOCK_ESCALATION:
17113 			case DROP_EXISTING:
17114 			case ROW_NUMBER:
17115 			case FIRST:
17116 			case DATETIME2:
17117 			case OUTPUT:
17118 			case INSERTED:
17119 			case DELETED:
17120 			case FILENAME:
17121 			case SIZE:
17122 			case MAXSIZE:
17123 			case FILEGROWTH:
17124 			case UNLIMITED:
17125 			case KB:
17126 			case MB:
17127 			case GB:
17128 			case TB:
17129 			case CONTAINS:
17130 			case MEMORY_OPTIMIZED_DATA:
17131 			case FILEGROUP:
17132 			case NON_TRANSACTED_ACCESS:
17133 			case DB_CHAINING:
17134 			case TRUSTWORTHY:
17135 			case FORWARD_ONLY:
17136 			case KEYSET:
17137 			case FAST_FORWARD:
17138 			case SCROLL_LOCKS:
17139 			case OPTIMISTIC:
17140 			case TYPE_WARNING:
17141 			case SCHEMABINDING:
17142 			case CALLER:
17143 			case INPUT:
17144 			case OWNER:
17145 			case SNAPSHOT:
17146 			case REPEATABLE:
17147 			case SERIALIZABLE:
17148 			case NATIVE_COMPILATION:
17149 			case VIEW_METADATA:
17150 			case INSTEAD:
17151 			case APPEND:
17152 			case INCREMENT:
17153 			case CACHE:
17154 			case MINVALUE:
17155 			case MAXVALUE:
17156 			case RESTART:
17157 			case LOB_COMPACTION:
17158 			case COMPRESS_ALL_ROW_GROUPS:
17159 			case REORGANIZE:
17160 			case RESUME:
17161 			case PAUSE:
17162 			case ABORT:
17163 			case ACCELERATED_DATABASE_RECOVERY:
17164 			case PERSISTENT_VERSION_STORE_FILEGROUP:
17165 			case IMMEDIATE:
17166 			case NO_WAIT:
17167 			case TARGET_RECOVERY_TIME:
17168 			case SECONDS:
17169 			case HONOR_BROKER_PRIORITY:
17170 			case ERROR_BROKER_CONVERSATIONS:
17171 			case NEW_BROKER:
17172 			case DISABLE_BROKER:
17173 			case ENABLE_BROKER:
17174 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
17175 			case READ_COMMITTED_SNAPSHOT:
17176 			case ALLOW_SNAPSHOT_ISOLATION:
17177 			case RECURSIVE_TRIGGERS:
17178 			case QUOTED_IDENTIFIER:
17179 			case NUMERIC_ROUNDABORT:
17180 			case CONCAT_NULL_YIELDS_NULL:
17181 			case COMPATIBILITY_LEVEL:
17182 			case ARITHABORT:
17183 			case ANSI_WARNINGS:
17184 			case ANSI_PADDING:
17185 			case ANSI_NULLS:
17186 			case ANSI_NULL_DEFAULT:
17187 			case PAGE_VERIFY:
17188 			case CHECKSUM:
17189 			case TORN_PAGE_DETECTION:
17190 			case BULK_LOGGED:
17191 			case RECOVERY:
17192 			case TOTAL_EXECUTION_CPU_TIME_MS:
17193 			case TOTAL_COMPILE_CPU_TIME_MS:
17194 			case STALE_CAPTURE_POLICY_THRESHOLD:
17195 			case EXECUTION_COUNT:
17196 			case QUERY_CAPTURE_POLICY:
17197 			case WAIT_STATS_CAPTURE_MODE:
17198 			case MAX_PLANS_PER_QUERY:
17199 			case QUERY_CAPTURE_MODE:
17200 			case SIZE_BASED_CLEANUP_MODE:
17201 			case INTERVAL_LENGTH_MINUTES:
17202 			case MAX_STORAGE_SIZE_MB:
17203 			case DATA_FLUSH_INTERVAL_SECONDS:
17204 			case CLEANUP_POLICY:
17205 			case CUSTOM:
17206 			case STALE_QUERY_THRESHOLD_DAYS:
17207 			case OPERATION_MODE:
17208 			case QUERY_STORE:
17209 			case CURSOR_DEFAULT:
17210 			case GLOBAL:
17211 			case CURSOR_CLOSE_ON_COMMIT:
17212 			case HOURS:
17213 			case CHANGE_RETENTION:
17214 			case AUTO_CLEANUP:
17215 			case CHANGE_TRACKING:
17216 			case AUTOMATIC_TUNING:
17217 			case FORCE_LAST_GOOD_PLAN:
17218 			case AUTO_UPDATE_STATISTICS_ASYNC:
17219 			case AUTO_UPDATE_STATISTICS:
17220 			case AUTO_SHRINK:
17221 			case AUTO_CREATE_STATISTICS:
17222 			case INCREMENTAL:
17223 			case AUTO_CLOSE:
17224 			case DATA_RETENTION:
17225 			case TEMPORAL_HISTORY_RETENTION:
17226 			case EDITION:
17227 			case MIXED_PAGE_ALLOCATION:
17228 			case DISABLED:
17229 			case ALLOWED:
17230 			case HADR:
17231 			case MULTI_USER:
17232 			case RESTRICTED_USER:
17233 			case SINGLE_USER:
17234 			case OFFLINE:
17235 			case EMERGENCY:
17236 			case SUSPEND:
17237 			case DATE_CORRELATION_OPTIMIZATION:
17238 			case ELASTIC_POOL:
17239 			case SERVICE_OBJECTIVE:
17240 			case DATABASE_NAME:
17241 			case ALLOW_CONNECTIONS:
17242 			case GEO:
17243 			case NAMED:
17244 			case DATEFIRST:
17245 			case BACKUP_STORAGE_REDUNDANCY:
17246 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
17247 			case SECONDARY:
17248 			case FAILOVER:
17249 			case DEFAULT_FULLTEXT_LANGUAGE:
17250 			case DEFAULT_LANGUAGE:
17251 			case INLINE:
17252 			case NESTED_TRIGGERS:
17253 			case TRANSFORM_NOISE_WORDS:
17254 			case TWO_DIGIT_YEAR_CUTOFF:
17255 			case PERSISTENT_LOG_BUFFER:
17256 			case DIRECTORY_NAME:
17257 			case DATEFORMAT:
17258 			case DELAYED_DURABILITY:
17259 			case AUTHORIZATION:
17260 			case TRANSFER:
17261 			case PROVIDER:
17262 			case SID:
17263 			case SEARCH:
17264 			case MEMBER:
17265 			case JSON:
17266 			case IDENTIFIER_:
17267 			case DELIMITED_IDENTIFIER_:
17268 				{
17269 				setState(2637);
17270 				computedColumnForeignKeyConstraint();
17271 				}
17272 				break;
17273 			case CHECK:
17274 				{
17275 				setState(2638);
17276 				checkConstraint();
17277 				}
17278 				break;
17279 			default:
17280 				throw new NoViableAltException(this);
17281 			}
17282 			}
17283 		}
17284 		catch (RecognitionException re) {
17285 			_localctx.exception = re;
17286 			_errHandler.reportError(this, re);
17287 			_errHandler.recover(this, re);
17288 		}
17289 		finally {
17290 			exitRule();
17291 		}
17292 		return _localctx;
17293 	}
17294 
17295 	public static class ComputedColumnForeignKeyConstraintContext extends ParserRuleContext {
17296 		public TableNameContext tableName() {
17297 			return getRuleContext(TableNameContext.class,0);
17298 		}
17299 		public TerminalNode FOREIGN() { return getToken(SQLServerStatementParser.FOREIGN, 0); }
17300 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
17301 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17302 		public ColumnNameContext columnName() {
17303 			return getRuleContext(ColumnNameContext.class,0);
17304 		}
17305 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17306 		public List<ComputedColumnForeignKeyOnActionContext> computedColumnForeignKeyOnAction() {
17307 			return getRuleContexts(ComputedColumnForeignKeyOnActionContext.class);
17308 		}
17309 		public ComputedColumnForeignKeyOnActionContext computedColumnForeignKeyOnAction(int i) {
17310 			return getRuleContext(ComputedColumnForeignKeyOnActionContext.class,i);
17311 		}
17312 		public ComputedColumnForeignKeyConstraintContext(ParserRuleContext parent, int invokingState) {
17313 			super(parent, invokingState);
17314 		}
17315 		@Override public int getRuleIndex() { return RULE_computedColumnForeignKeyConstraint; }
17316 		@Override
17317 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17318 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnForeignKeyConstraint(this);
17319 			else return visitor.visitChildren(this);
17320 		}
17321 	}
17322 
17323 	public final ComputedColumnForeignKeyConstraintContext computedColumnForeignKeyConstraint() throws RecognitionException {
17324 		ComputedColumnForeignKeyConstraintContext _localctx = new ComputedColumnForeignKeyConstraintContext(_ctx, getState());
17325 		enterRule(_localctx, 352, RULE_computedColumnForeignKeyConstraint);
17326 		int _la;
17327 		try {
17328 			enterOuterAlt(_localctx, 1);
17329 			{
17330 			setState(2643);
17331 			_errHandler.sync(this);
17332 			_la = _input.LA(1);
17333 			if (_la==FOREIGN) {
17334 				{
17335 				setState(2641);
17336 				match(FOREIGN);
17337 				setState(2642);
17338 				match(KEY);
17339 				}
17340 			}
17341 
17342 			setState(2645);
17343 			tableName();
17344 			setState(2650);
17345 			_errHandler.sync(this);
17346 			switch ( getInterpreter().adaptivePredict(_input,202,_ctx) ) {
17347 			case 1:
17348 				{
17349 				setState(2646);
17350 				match(LP_);
17351 				setState(2647);
17352 				columnName();
17353 				setState(2648);
17354 				match(RP_);
17355 				}
17356 				break;
17357 			}
17358 			setState(2655);
17359 			_errHandler.sync(this);
17360 			_la = _input.LA(1);
17361 			while (_la==ON || _la==NOT) {
17362 				{
17363 				{
17364 				setState(2652);
17365 				computedColumnForeignKeyOnAction();
17366 				}
17367 				}
17368 				setState(2657);
17369 				_errHandler.sync(this);
17370 				_la = _input.LA(1);
17371 			}
17372 			}
17373 		}
17374 		catch (RecognitionException re) {
17375 			_localctx.exception = re;
17376 			_errHandler.reportError(this, re);
17377 			_errHandler.recover(this, re);
17378 		}
17379 		finally {
17380 			exitRule();
17381 		}
17382 		return _localctx;
17383 	}
17384 
17385 	public static class ComputedColumnForeignKeyOnActionContext extends ParserRuleContext {
17386 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
17387 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
17388 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
17389 		public TerminalNode ACTION() { return getToken(SQLServerStatementParser.ACTION, 0); }
17390 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
17391 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
17392 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
17393 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
17394 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
17395 		public ComputedColumnForeignKeyOnActionContext(ParserRuleContext parent, int invokingState) {
17396 			super(parent, invokingState);
17397 		}
17398 		@Override public int getRuleIndex() { return RULE_computedColumnForeignKeyOnAction; }
17399 		@Override
17400 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17401 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnForeignKeyOnAction(this);
17402 			else return visitor.visitChildren(this);
17403 		}
17404 	}
17405 
17406 	public final ComputedColumnForeignKeyOnActionContext computedColumnForeignKeyOnAction() throws RecognitionException {
17407 		ComputedColumnForeignKeyOnActionContext _localctx = new ComputedColumnForeignKeyOnActionContext(_ctx, getState());
17408 		enterRule(_localctx, 354, RULE_computedColumnForeignKeyOnAction);
17409 		try {
17410 			setState(2672);
17411 			_errHandler.sync(this);
17412 			switch ( getInterpreter().adaptivePredict(_input,205,_ctx) ) {
17413 			case 1:
17414 				enterOuterAlt(_localctx, 1);
17415 				{
17416 				setState(2658);
17417 				match(ON);
17418 				setState(2659);
17419 				match(DELETE);
17420 				setState(2663);
17421 				_errHandler.sync(this);
17422 				switch (_input.LA(1)) {
17423 				case NO:
17424 					{
17425 					setState(2660);
17426 					match(NO);
17427 					setState(2661);
17428 					match(ACTION);
17429 					}
17430 					break;
17431 				case CASCADE:
17432 					{
17433 					setState(2662);
17434 					match(CASCADE);
17435 					}
17436 					break;
17437 				default:
17438 					throw new NoViableAltException(this);
17439 				}
17440 				}
17441 				break;
17442 			case 2:
17443 				enterOuterAlt(_localctx, 2);
17444 				{
17445 				setState(2665);
17446 				match(ON);
17447 				setState(2666);
17448 				match(UPDATE);
17449 				setState(2667);
17450 				match(NO);
17451 				setState(2668);
17452 				match(ACTION);
17453 				}
17454 				break;
17455 			case 3:
17456 				enterOuterAlt(_localctx, 3);
17457 				{
17458 				setState(2669);
17459 				match(NOT);
17460 				setState(2670);
17461 				match(FOR);
17462 				setState(2671);
17463 				match(REPLICATION);
17464 				}
17465 				break;
17466 			}
17467 		}
17468 		catch (RecognitionException re) {
17469 			_localctx.exception = re;
17470 			_errHandler.reportError(this, re);
17471 			_errHandler.recover(this, re);
17472 		}
17473 		finally {
17474 			exitRule();
17475 		}
17476 		return _localctx;
17477 	}
17478 
17479 	public static class PrimaryKeyConstraintContext extends ParserRuleContext {
17480 		public PrimaryKeyContext primaryKey() {
17481 			return getRuleContext(PrimaryKeyContext.class,0);
17482 		}
17483 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
17484 		public DiskTablePrimaryKeyConstraintOptionContext diskTablePrimaryKeyConstraintOption() {
17485 			return getRuleContext(DiskTablePrimaryKeyConstraintOptionContext.class,0);
17486 		}
17487 		public MemoryTablePrimaryKeyConstraintOptionContext memoryTablePrimaryKeyConstraintOption() {
17488 			return getRuleContext(MemoryTablePrimaryKeyConstraintOptionContext.class,0);
17489 		}
17490 		public PrimaryKeyConstraintContext(ParserRuleContext parent, int invokingState) {
17491 			super(parent, invokingState);
17492 		}
17493 		@Override public int getRuleIndex() { return RULE_primaryKeyConstraint; }
17494 		@Override
17495 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17496 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyConstraint(this);
17497 			else return visitor.visitChildren(this);
17498 		}
17499 	}
17500 
17501 	public final PrimaryKeyConstraintContext primaryKeyConstraint() throws RecognitionException {
17502 		PrimaryKeyConstraintContext _localctx = new PrimaryKeyConstraintContext(_ctx, getState());
17503 		enterRule(_localctx, 356, RULE_primaryKeyConstraint);
17504 		try {
17505 			enterOuterAlt(_localctx, 1);
17506 			{
17507 			setState(2676);
17508 			_errHandler.sync(this);
17509 			switch (_input.LA(1)) {
17510 			case PRIMARY:
17511 			case KEY:
17512 				{
17513 				setState(2674);
17514 				primaryKey();
17515 				}
17516 				break;
17517 			case UNIQUE:
17518 				{
17519 				setState(2675);
17520 				match(UNIQUE);
17521 				}
17522 				break;
17523 			default:
17524 				throw new NoViableAltException(this);
17525 			}
17526 			setState(2680);
17527 			_errHandler.sync(this);
17528 			switch ( getInterpreter().adaptivePredict(_input,207,_ctx) ) {
17529 			case 1:
17530 				{
17531 				setState(2678);
17532 				diskTablePrimaryKeyConstraintOption();
17533 				}
17534 				break;
17535 			case 2:
17536 				{
17537 				setState(2679);
17538 				memoryTablePrimaryKeyConstraintOption();
17539 				}
17540 				break;
17541 			}
17542 			}
17543 		}
17544 		catch (RecognitionException re) {
17545 			_localctx.exception = re;
17546 			_errHandler.reportError(this, re);
17547 			_errHandler.recover(this, re);
17548 		}
17549 		finally {
17550 			exitRule();
17551 		}
17552 		return _localctx;
17553 	}
17554 
17555 	public static class DiskTablePrimaryKeyConstraintOptionContext extends ParserRuleContext {
17556 		public ClusterOptionContext clusterOption() {
17557 			return getRuleContext(ClusterOptionContext.class,0);
17558 		}
17559 		public PrimaryKeyWithClauseContext primaryKeyWithClause() {
17560 			return getRuleContext(PrimaryKeyWithClauseContext.class,0);
17561 		}
17562 		public PrimaryKeyOnClauseContext primaryKeyOnClause() {
17563 			return getRuleContext(PrimaryKeyOnClauseContext.class,0);
17564 		}
17565 		public DiskTablePrimaryKeyConstraintOptionContext(ParserRuleContext parent, int invokingState) {
17566 			super(parent, invokingState);
17567 		}
17568 		@Override public int getRuleIndex() { return RULE_diskTablePrimaryKeyConstraintOption; }
17569 		@Override
17570 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17571 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDiskTablePrimaryKeyConstraintOption(this);
17572 			else return visitor.visitChildren(this);
17573 		}
17574 	}
17575 
17576 	public final DiskTablePrimaryKeyConstraintOptionContext diskTablePrimaryKeyConstraintOption() throws RecognitionException {
17577 		DiskTablePrimaryKeyConstraintOptionContext _localctx = new DiskTablePrimaryKeyConstraintOptionContext(_ctx, getState());
17578 		enterRule(_localctx, 358, RULE_diskTablePrimaryKeyConstraintOption);
17579 		int _la;
17580 		try {
17581 			enterOuterAlt(_localctx, 1);
17582 			{
17583 			setState(2683);
17584 			_errHandler.sync(this);
17585 			_la = _input.LA(1);
17586 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
17587 				{
17588 				setState(2682);
17589 				clusterOption();
17590 				}
17591 			}
17592 
17593 			setState(2686);
17594 			_errHandler.sync(this);
17595 			switch ( getInterpreter().adaptivePredict(_input,209,_ctx) ) {
17596 			case 1:
17597 				{
17598 				setState(2685);
17599 				primaryKeyWithClause();
17600 				}
17601 				break;
17602 			}
17603 			setState(2689);
17604 			_errHandler.sync(this);
17605 			_la = _input.LA(1);
17606 			if (_la==ON) {
17607 				{
17608 				setState(2688);
17609 				primaryKeyOnClause();
17610 				}
17611 			}
17612 
17613 			}
17614 		}
17615 		catch (RecognitionException re) {
17616 			_localctx.exception = re;
17617 			_errHandler.reportError(this, re);
17618 			_errHandler.recover(this, re);
17619 		}
17620 		finally {
17621 			exitRule();
17622 		}
17623 		return _localctx;
17624 	}
17625 
17626 	public static class ClusterOptionContext extends ParserRuleContext {
17627 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
17628 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
17629 		public ClusterOptionContext(ParserRuleContext parent, int invokingState) {
17630 			super(parent, invokingState);
17631 		}
17632 		@Override public int getRuleIndex() { return RULE_clusterOption; }
17633 		@Override
17634 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17635 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClusterOption(this);
17636 			else return visitor.visitChildren(this);
17637 		}
17638 	}
17639 
17640 	public final ClusterOptionContext clusterOption() throws RecognitionException {
17641 		ClusterOptionContext _localctx = new ClusterOptionContext(_ctx, getState());
17642 		enterRule(_localctx, 360, RULE_clusterOption);
17643 		int _la;
17644 		try {
17645 			enterOuterAlt(_localctx, 1);
17646 			{
17647 			setState(2691);
17648 			_la = _input.LA(1);
17649 			if ( !(_la==CLUSTERED || _la==NONCLUSTERED) ) {
17650 			_errHandler.recoverInline(this);
17651 			}
17652 			else {
17653 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
17654 				_errHandler.reportMatch(this);
17655 				consume();
17656 			}
17657 			}
17658 		}
17659 		catch (RecognitionException re) {
17660 			_localctx.exception = re;
17661 			_errHandler.reportError(this, re);
17662 			_errHandler.recover(this, re);
17663 		}
17664 		finally {
17665 			exitRule();
17666 		}
17667 		return _localctx;
17668 	}
17669 
17670 	public static class PrimaryKeyWithClauseContext extends ParserRuleContext {
17671 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
17672 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
17673 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
17674 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
17675 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17676 		public List<IndexOptionContext> indexOption() {
17677 			return getRuleContexts(IndexOptionContext.class);
17678 		}
17679 		public IndexOptionContext indexOption(int i) {
17680 			return getRuleContext(IndexOptionContext.class,i);
17681 		}
17682 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17683 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
17684 		public TerminalNode COMMA_(int i) {
17685 			return getToken(SQLServerStatementParser.COMMA_, i);
17686 		}
17687 		public PrimaryKeyWithClauseContext(ParserRuleContext parent, int invokingState) {
17688 			super(parent, invokingState);
17689 		}
17690 		@Override public int getRuleIndex() { return RULE_primaryKeyWithClause; }
17691 		@Override
17692 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17693 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyWithClause(this);
17694 			else return visitor.visitChildren(this);
17695 		}
17696 	}
17697 
17698 	public final PrimaryKeyWithClauseContext primaryKeyWithClause() throws RecognitionException {
17699 		PrimaryKeyWithClauseContext _localctx = new PrimaryKeyWithClauseContext(_ctx, getState());
17700 		enterRule(_localctx, 362, RULE_primaryKeyWithClause);
17701 		int _la;
17702 		try {
17703 			enterOuterAlt(_localctx, 1);
17704 			{
17705 			setState(2693);
17706 			match(WITH);
17707 			setState(2708);
17708 			_errHandler.sync(this);
17709 			switch (_input.LA(1)) {
17710 			case FILLFACTOR:
17711 				{
17712 				setState(2694);
17713 				match(FILLFACTOR);
17714 				setState(2695);
17715 				match(EQ_);
17716 				setState(2696);
17717 				match(NUMBER_);
17718 				}
17719 				break;
17720 			case LP_:
17721 				{
17722 				setState(2697);
17723 				match(LP_);
17724 				setState(2698);
17725 				indexOption();
17726 				setState(2703);
17727 				_errHandler.sync(this);
17728 				_la = _input.LA(1);
17729 				while (_la==COMMA_) {
17730 					{
17731 					{
17732 					setState(2699);
17733 					match(COMMA_);
17734 					setState(2700);
17735 					indexOption();
17736 					}
17737 					}
17738 					setState(2705);
17739 					_errHandler.sync(this);
17740 					_la = _input.LA(1);
17741 				}
17742 				setState(2706);
17743 				match(RP_);
17744 				}
17745 				break;
17746 			default:
17747 				throw new NoViableAltException(this);
17748 			}
17749 			}
17750 		}
17751 		catch (RecognitionException re) {
17752 			_localctx.exception = re;
17753 			_errHandler.reportError(this, re);
17754 			_errHandler.recover(this, re);
17755 		}
17756 		finally {
17757 			exitRule();
17758 		}
17759 		return _localctx;
17760 	}
17761 
17762 	public static class PrimaryKeyOnClauseContext extends ParserRuleContext {
17763 		public OnSchemaColumnContext onSchemaColumn() {
17764 			return getRuleContext(OnSchemaColumnContext.class,0);
17765 		}
17766 		public OnFileGroupContext onFileGroup() {
17767 			return getRuleContext(OnFileGroupContext.class,0);
17768 		}
17769 		public OnStringContext onString() {
17770 			return getRuleContext(OnStringContext.class,0);
17771 		}
17772 		public PrimaryKeyOnClauseContext(ParserRuleContext parent, int invokingState) {
17773 			super(parent, invokingState);
17774 		}
17775 		@Override public int getRuleIndex() { return RULE_primaryKeyOnClause; }
17776 		@Override
17777 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17778 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyOnClause(this);
17779 			else return visitor.visitChildren(this);
17780 		}
17781 	}
17782 
17783 	public final PrimaryKeyOnClauseContext primaryKeyOnClause() throws RecognitionException {
17784 		PrimaryKeyOnClauseContext _localctx = new PrimaryKeyOnClauseContext(_ctx, getState());
17785 		enterRule(_localctx, 364, RULE_primaryKeyOnClause);
17786 		try {
17787 			setState(2713);
17788 			_errHandler.sync(this);
17789 			switch ( getInterpreter().adaptivePredict(_input,213,_ctx) ) {
17790 			case 1:
17791 				enterOuterAlt(_localctx, 1);
17792 				{
17793 				setState(2710);
17794 				onSchemaColumn();
17795 				}
17796 				break;
17797 			case 2:
17798 				enterOuterAlt(_localctx, 2);
17799 				{
17800 				setState(2711);
17801 				onFileGroup();
17802 				}
17803 				break;
17804 			case 3:
17805 				enterOuterAlt(_localctx, 3);
17806 				{
17807 				setState(2712);
17808 				onString();
17809 				}
17810 				break;
17811 			}
17812 		}
17813 		catch (RecognitionException re) {
17814 			_localctx.exception = re;
17815 			_errHandler.reportError(this, re);
17816 			_errHandler.recover(this, re);
17817 		}
17818 		finally {
17819 			exitRule();
17820 		}
17821 		return _localctx;
17822 	}
17823 
17824 	public static class OnSchemaColumnContext extends ParserRuleContext {
17825 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
17826 		public SchemaNameContext schemaName() {
17827 			return getRuleContext(SchemaNameContext.class,0);
17828 		}
17829 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
17830 		public ColumnNameContext columnName() {
17831 			return getRuleContext(ColumnNameContext.class,0);
17832 		}
17833 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
17834 		public OnSchemaColumnContext(ParserRuleContext parent, int invokingState) {
17835 			super(parent, invokingState);
17836 		}
17837 		@Override public int getRuleIndex() { return RULE_onSchemaColumn; }
17838 		@Override
17839 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17840 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnSchemaColumn(this);
17841 			else return visitor.visitChildren(this);
17842 		}
17843 	}
17844 
17845 	public final OnSchemaColumnContext onSchemaColumn() throws RecognitionException {
17846 		OnSchemaColumnContext _localctx = new OnSchemaColumnContext(_ctx, getState());
17847 		enterRule(_localctx, 366, RULE_onSchemaColumn);
17848 		try {
17849 			enterOuterAlt(_localctx, 1);
17850 			{
17851 			setState(2715);
17852 			match(ON);
17853 			setState(2716);
17854 			schemaName();
17855 			setState(2717);
17856 			match(LP_);
17857 			setState(2718);
17858 			columnName();
17859 			setState(2719);
17860 			match(RP_);
17861 			}
17862 		}
17863 		catch (RecognitionException re) {
17864 			_localctx.exception = re;
17865 			_errHandler.reportError(this, re);
17866 			_errHandler.recover(this, re);
17867 		}
17868 		finally {
17869 			exitRule();
17870 		}
17871 		return _localctx;
17872 	}
17873 
17874 	public static class OnFileGroupContext extends ParserRuleContext {
17875 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
17876 		public IgnoredIdentifierContext ignoredIdentifier() {
17877 			return getRuleContext(IgnoredIdentifierContext.class,0);
17878 		}
17879 		public OnFileGroupContext(ParserRuleContext parent, int invokingState) {
17880 			super(parent, invokingState);
17881 		}
17882 		@Override public int getRuleIndex() { return RULE_onFileGroup; }
17883 		@Override
17884 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17885 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnFileGroup(this);
17886 			else return visitor.visitChildren(this);
17887 		}
17888 	}
17889 
17890 	public final OnFileGroupContext onFileGroup() throws RecognitionException {
17891 		OnFileGroupContext _localctx = new OnFileGroupContext(_ctx, getState());
17892 		enterRule(_localctx, 368, RULE_onFileGroup);
17893 		try {
17894 			enterOuterAlt(_localctx, 1);
17895 			{
17896 			setState(2721);
17897 			match(ON);
17898 			setState(2722);
17899 			ignoredIdentifier();
17900 			}
17901 		}
17902 		catch (RecognitionException re) {
17903 			_localctx.exception = re;
17904 			_errHandler.reportError(this, re);
17905 			_errHandler.recover(this, re);
17906 		}
17907 		finally {
17908 			exitRule();
17909 		}
17910 		return _localctx;
17911 	}
17912 
17913 	public static class OnStringContext extends ParserRuleContext {
17914 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
17915 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
17916 		public OnStringContext(ParserRuleContext parent, int invokingState) {
17917 			super(parent, invokingState);
17918 		}
17919 		@Override public int getRuleIndex() { return RULE_onString; }
17920 		@Override
17921 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17922 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnString(this);
17923 			else return visitor.visitChildren(this);
17924 		}
17925 	}
17926 
17927 	public final OnStringContext onString() throws RecognitionException {
17928 		OnStringContext _localctx = new OnStringContext(_ctx, getState());
17929 		enterRule(_localctx, 370, RULE_onString);
17930 		try {
17931 			enterOuterAlt(_localctx, 1);
17932 			{
17933 			setState(2724);
17934 			match(ON);
17935 			setState(2725);
17936 			match(STRING_);
17937 			}
17938 		}
17939 		catch (RecognitionException re) {
17940 			_localctx.exception = re;
17941 			_errHandler.reportError(this, re);
17942 			_errHandler.recover(this, re);
17943 		}
17944 		finally {
17945 			exitRule();
17946 		}
17947 		return _localctx;
17948 	}
17949 
17950 	public static class MemoryTablePrimaryKeyConstraintOptionContext extends ParserRuleContext {
17951 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
17952 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
17953 		public WithBucketContext withBucket() {
17954 			return getRuleContext(WithBucketContext.class,0);
17955 		}
17956 		public MemoryTablePrimaryKeyConstraintOptionContext(ParserRuleContext parent, int invokingState) {
17957 			super(parent, invokingState);
17958 		}
17959 		@Override public int getRuleIndex() { return RULE_memoryTablePrimaryKeyConstraintOption; }
17960 		@Override
17961 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
17962 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMemoryTablePrimaryKeyConstraintOption(this);
17963 			else return visitor.visitChildren(this);
17964 		}
17965 	}
17966 
17967 	public final MemoryTablePrimaryKeyConstraintOptionContext memoryTablePrimaryKeyConstraintOption() throws RecognitionException {
17968 		MemoryTablePrimaryKeyConstraintOptionContext _localctx = new MemoryTablePrimaryKeyConstraintOptionContext(_ctx, getState());
17969 		enterRule(_localctx, 372, RULE_memoryTablePrimaryKeyConstraintOption);
17970 		try {
17971 			setState(2733);
17972 			_errHandler.sync(this);
17973 			switch ( getInterpreter().adaptivePredict(_input,215,_ctx) ) {
17974 			case 1:
17975 				enterOuterAlt(_localctx, 1);
17976 				{
17977 				setState(2727);
17978 				match(NONCLUSTERED);
17979 				}
17980 				break;
17981 			case 2:
17982 				enterOuterAlt(_localctx, 2);
17983 				{
17984 				setState(2728);
17985 				match(NONCLUSTERED);
17986 				setState(2729);
17987 				match(HASH);
17988 				setState(2731);
17989 				_errHandler.sync(this);
17990 				switch ( getInterpreter().adaptivePredict(_input,214,_ctx) ) {
17991 				case 1:
17992 					{
17993 					setState(2730);
17994 					withBucket();
17995 					}
17996 					break;
17997 				}
17998 				}
17999 				break;
18000 			}
18001 		}
18002 		catch (RecognitionException re) {
18003 			_localctx.exception = re;
18004 			_errHandler.reportError(this, re);
18005 			_errHandler.recover(this, re);
18006 		}
18007 		finally {
18008 			exitRule();
18009 		}
18010 		return _localctx;
18011 	}
18012 
18013 	public static class WithBucketContext extends ParserRuleContext {
18014 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
18015 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18016 		public TerminalNode BUCKET_COUNT() { return getToken(SQLServerStatementParser.BUCKET_COUNT, 0); }
18017 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
18018 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
18019 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18020 		public WithBucketContext(ParserRuleContext parent, int invokingState) {
18021 			super(parent, invokingState);
18022 		}
18023 		@Override public int getRuleIndex() { return RULE_withBucket; }
18024 		@Override
18025 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18026 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithBucket(this);
18027 			else return visitor.visitChildren(this);
18028 		}
18029 	}
18030 
18031 	public final WithBucketContext withBucket() throws RecognitionException {
18032 		WithBucketContext _localctx = new WithBucketContext(_ctx, getState());
18033 		enterRule(_localctx, 374, RULE_withBucket);
18034 		try {
18035 			enterOuterAlt(_localctx, 1);
18036 			{
18037 			setState(2735);
18038 			match(WITH);
18039 			setState(2736);
18040 			match(LP_);
18041 			setState(2737);
18042 			match(BUCKET_COUNT);
18043 			setState(2738);
18044 			match(EQ_);
18045 			setState(2739);
18046 			match(NUMBER_);
18047 			setState(2740);
18048 			match(RP_);
18049 			}
18050 		}
18051 		catch (RecognitionException re) {
18052 			_localctx.exception = re;
18053 			_errHandler.reportError(this, re);
18054 			_errHandler.recover(this, re);
18055 		}
18056 		finally {
18057 			exitRule();
18058 		}
18059 		return _localctx;
18060 	}
18061 
18062 	public static class ColumnForeignKeyConstraintContext extends ParserRuleContext {
18063 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
18064 		public TableNameContext tableName() {
18065 			return getRuleContext(TableNameContext.class,0);
18066 		}
18067 		public TerminalNode FOREIGN() { return getToken(SQLServerStatementParser.FOREIGN, 0); }
18068 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
18069 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18070 		public ColumnNameContext columnName() {
18071 			return getRuleContext(ColumnNameContext.class,0);
18072 		}
18073 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18074 		public List<ForeignKeyOnActionContext> foreignKeyOnAction() {
18075 			return getRuleContexts(ForeignKeyOnActionContext.class);
18076 		}
18077 		public ForeignKeyOnActionContext foreignKeyOnAction(int i) {
18078 			return getRuleContext(ForeignKeyOnActionContext.class,i);
18079 		}
18080 		public ColumnForeignKeyConstraintContext(ParserRuleContext parent, int invokingState) {
18081 			super(parent, invokingState);
18082 		}
18083 		@Override public int getRuleIndex() { return RULE_columnForeignKeyConstraint; }
18084 		@Override
18085 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18086 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnForeignKeyConstraint(this);
18087 			else return visitor.visitChildren(this);
18088 		}
18089 	}
18090 
18091 	public final ColumnForeignKeyConstraintContext columnForeignKeyConstraint() throws RecognitionException {
18092 		ColumnForeignKeyConstraintContext _localctx = new ColumnForeignKeyConstraintContext(_ctx, getState());
18093 		enterRule(_localctx, 376, RULE_columnForeignKeyConstraint);
18094 		int _la;
18095 		try {
18096 			int _alt;
18097 			enterOuterAlt(_localctx, 1);
18098 			{
18099 			setState(2744);
18100 			_errHandler.sync(this);
18101 			_la = _input.LA(1);
18102 			if (_la==FOREIGN) {
18103 				{
18104 				setState(2742);
18105 				match(FOREIGN);
18106 				setState(2743);
18107 				match(KEY);
18108 				}
18109 			}
18110 
18111 			setState(2746);
18112 			match(REFERENCES);
18113 			setState(2747);
18114 			tableName();
18115 			setState(2752);
18116 			_errHandler.sync(this);
18117 			switch ( getInterpreter().adaptivePredict(_input,217,_ctx) ) {
18118 			case 1:
18119 				{
18120 				setState(2748);
18121 				match(LP_);
18122 				setState(2749);
18123 				columnName();
18124 				setState(2750);
18125 				match(RP_);
18126 				}
18127 				break;
18128 			}
18129 			setState(2757);
18130 			_errHandler.sync(this);
18131 			_alt = getInterpreter().adaptivePredict(_input,218,_ctx);
18132 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
18133 				if ( _alt==1 ) {
18134 					{
18135 					{
18136 					setState(2754);
18137 					foreignKeyOnAction();
18138 					}
18139 					} 
18140 				}
18141 				setState(2759);
18142 				_errHandler.sync(this);
18143 				_alt = getInterpreter().adaptivePredict(_input,218,_ctx);
18144 			}
18145 			}
18146 		}
18147 		catch (RecognitionException re) {
18148 			_localctx.exception = re;
18149 			_errHandler.reportError(this, re);
18150 			_errHandler.recover(this, re);
18151 		}
18152 		finally {
18153 			exitRule();
18154 		}
18155 		return _localctx;
18156 	}
18157 
18158 	public static class ForeignKeyOnActionContext extends ParserRuleContext {
18159 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
18160 		public ForeignKeyOnContext foreignKeyOn() {
18161 			return getRuleContext(ForeignKeyOnContext.class,0);
18162 		}
18163 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
18164 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
18165 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
18166 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
18167 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
18168 		public ForeignKeyOnActionContext(ParserRuleContext parent, int invokingState) {
18169 			super(parent, invokingState);
18170 		}
18171 		@Override public int getRuleIndex() { return RULE_foreignKeyOnAction; }
18172 		@Override
18173 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18174 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForeignKeyOnAction(this);
18175 			else return visitor.visitChildren(this);
18176 		}
18177 	}
18178 
18179 	public final ForeignKeyOnActionContext foreignKeyOnAction() throws RecognitionException {
18180 		ForeignKeyOnActionContext _localctx = new ForeignKeyOnActionContext(_ctx, getState());
18181 		enterRule(_localctx, 378, RULE_foreignKeyOnAction);
18182 		int _la;
18183 		try {
18184 			setState(2766);
18185 			_errHandler.sync(this);
18186 			switch (_input.LA(1)) {
18187 			case ON:
18188 				enterOuterAlt(_localctx, 1);
18189 				{
18190 				setState(2760);
18191 				match(ON);
18192 				setState(2761);
18193 				_la = _input.LA(1);
18194 				if ( !(_la==UPDATE || _la==DELETE) ) {
18195 				_errHandler.recoverInline(this);
18196 				}
18197 				else {
18198 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
18199 					_errHandler.reportMatch(this);
18200 					consume();
18201 				}
18202 				setState(2762);
18203 				foreignKeyOn();
18204 				}
18205 				break;
18206 			case NOT:
18207 				enterOuterAlt(_localctx, 2);
18208 				{
18209 				setState(2763);
18210 				match(NOT);
18211 				setState(2764);
18212 				match(FOR);
18213 				setState(2765);
18214 				match(REPLICATION);
18215 				}
18216 				break;
18217 			default:
18218 				throw new NoViableAltException(this);
18219 			}
18220 		}
18221 		catch (RecognitionException re) {
18222 			_localctx.exception = re;
18223 			_errHandler.reportError(this, re);
18224 			_errHandler.recover(this, re);
18225 		}
18226 		finally {
18227 			exitRule();
18228 		}
18229 		return _localctx;
18230 	}
18231 
18232 	public static class ForeignKeyOnContext extends ParserRuleContext {
18233 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
18234 		public TerminalNode ACTION() { return getToken(SQLServerStatementParser.ACTION, 0); }
18235 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
18236 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
18237 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
18238 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
18239 		public ForeignKeyOnContext(ParserRuleContext parent, int invokingState) {
18240 			super(parent, invokingState);
18241 		}
18242 		@Override public int getRuleIndex() { return RULE_foreignKeyOn; }
18243 		@Override
18244 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18245 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForeignKeyOn(this);
18246 			else return visitor.visitChildren(this);
18247 		}
18248 	}
18249 
18250 	public final ForeignKeyOnContext foreignKeyOn() throws RecognitionException {
18251 		ForeignKeyOnContext _localctx = new ForeignKeyOnContext(_ctx, getState());
18252 		enterRule(_localctx, 380, RULE_foreignKeyOn);
18253 		int _la;
18254 		try {
18255 			setState(2773);
18256 			_errHandler.sync(this);
18257 			switch (_input.LA(1)) {
18258 			case NO:
18259 				enterOuterAlt(_localctx, 1);
18260 				{
18261 				setState(2768);
18262 				match(NO);
18263 				setState(2769);
18264 				match(ACTION);
18265 				}
18266 				break;
18267 			case CASCADE:
18268 				enterOuterAlt(_localctx, 2);
18269 				{
18270 				setState(2770);
18271 				match(CASCADE);
18272 				}
18273 				break;
18274 			case SET:
18275 				enterOuterAlt(_localctx, 3);
18276 				{
18277 				setState(2771);
18278 				match(SET);
18279 				setState(2772);
18280 				_la = _input.LA(1);
18281 				if ( !(_la==NULL || _la==DEFAULT) ) {
18282 				_errHandler.recoverInline(this);
18283 				}
18284 				else {
18285 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
18286 					_errHandler.reportMatch(this);
18287 					consume();
18288 				}
18289 				}
18290 				break;
18291 			default:
18292 				throw new NoViableAltException(this);
18293 			}
18294 		}
18295 		catch (RecognitionException re) {
18296 			_localctx.exception = re;
18297 			_errHandler.reportError(this, re);
18298 			_errHandler.recover(this, re);
18299 		}
18300 		finally {
18301 			exitRule();
18302 		}
18303 		return _localctx;
18304 	}
18305 
18306 	public static class CheckConstraintContext extends ParserRuleContext {
18307 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
18308 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18309 		public ExprContext expr() {
18310 			return getRuleContext(ExprContext.class,0);
18311 		}
18312 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18313 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
18314 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
18315 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
18316 		public CheckConstraintContext(ParserRuleContext parent, int invokingState) {
18317 			super(parent, invokingState);
18318 		}
18319 		@Override public int getRuleIndex() { return RULE_checkConstraint; }
18320 		@Override
18321 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18322 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCheckConstraint(this);
18323 			else return visitor.visitChildren(this);
18324 		}
18325 	}
18326 
18327 	public final CheckConstraintContext checkConstraint() throws RecognitionException {
18328 		CheckConstraintContext _localctx = new CheckConstraintContext(_ctx, getState());
18329 		enterRule(_localctx, 382, RULE_checkConstraint);
18330 		int _la;
18331 		try {
18332 			enterOuterAlt(_localctx, 1);
18333 			{
18334 			setState(2775);
18335 			match(CHECK);
18336 			setState(2779);
18337 			_errHandler.sync(this);
18338 			_la = _input.LA(1);
18339 			if (_la==NOT) {
18340 				{
18341 				setState(2776);
18342 				match(NOT);
18343 				setState(2777);
18344 				match(FOR);
18345 				setState(2778);
18346 				match(REPLICATION);
18347 				}
18348 			}
18349 
18350 			setState(2781);
18351 			match(LP_);
18352 			setState(2782);
18353 			expr(0);
18354 			setState(2783);
18355 			match(RP_);
18356 			}
18357 		}
18358 		catch (RecognitionException re) {
18359 			_localctx.exception = re;
18360 			_errHandler.reportError(this, re);
18361 			_errHandler.recover(this, re);
18362 		}
18363 		finally {
18364 			exitRule();
18365 		}
18366 		return _localctx;
18367 	}
18368 
18369 	public static class ColumnIndexContext extends ParserRuleContext {
18370 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
18371 		public IndexNameContext indexName() {
18372 			return getRuleContext(IndexNameContext.class,0);
18373 		}
18374 		public ClusterOptionContext clusterOption() {
18375 			return getRuleContext(ClusterOptionContext.class,0);
18376 		}
18377 		public WithIndexOptionContext withIndexOption() {
18378 			return getRuleContext(WithIndexOptionContext.class,0);
18379 		}
18380 		public IndexOnClauseContext indexOnClause() {
18381 			return getRuleContext(IndexOnClauseContext.class,0);
18382 		}
18383 		public FileStreamOnContext fileStreamOn() {
18384 			return getRuleContext(FileStreamOnContext.class,0);
18385 		}
18386 		public ColumnIndexContext(ParserRuleContext parent, int invokingState) {
18387 			super(parent, invokingState);
18388 		}
18389 		@Override public int getRuleIndex() { return RULE_columnIndex; }
18390 		@Override
18391 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18392 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnIndex(this);
18393 			else return visitor.visitChildren(this);
18394 		}
18395 	}
18396 
18397 	public final ColumnIndexContext columnIndex() throws RecognitionException {
18398 		ColumnIndexContext _localctx = new ColumnIndexContext(_ctx, getState());
18399 		enterRule(_localctx, 384, RULE_columnIndex);
18400 		int _la;
18401 		try {
18402 			enterOuterAlt(_localctx, 1);
18403 			{
18404 			setState(2785);
18405 			match(INDEX);
18406 			setState(2786);
18407 			indexName();
18408 			setState(2788);
18409 			_errHandler.sync(this);
18410 			_la = _input.LA(1);
18411 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
18412 				{
18413 				setState(2787);
18414 				clusterOption();
18415 				}
18416 			}
18417 
18418 			setState(2791);
18419 			_errHandler.sync(this);
18420 			switch ( getInterpreter().adaptivePredict(_input,223,_ctx) ) {
18421 			case 1:
18422 				{
18423 				setState(2790);
18424 				withIndexOption();
18425 				}
18426 				break;
18427 			}
18428 			setState(2794);
18429 			_errHandler.sync(this);
18430 			_la = _input.LA(1);
18431 			if (_la==ON) {
18432 				{
18433 				setState(2793);
18434 				indexOnClause();
18435 				}
18436 			}
18437 
18438 			setState(2797);
18439 			_errHandler.sync(this);
18440 			_la = _input.LA(1);
18441 			if (_la==FILESTREAM_ON) {
18442 				{
18443 				setState(2796);
18444 				fileStreamOn();
18445 				}
18446 			}
18447 
18448 			}
18449 		}
18450 		catch (RecognitionException re) {
18451 			_localctx.exception = re;
18452 			_errHandler.reportError(this, re);
18453 			_errHandler.recover(this, re);
18454 		}
18455 		finally {
18456 			exitRule();
18457 		}
18458 		return _localctx;
18459 	}
18460 
18461 	public static class WithIndexOptionContext extends ParserRuleContext {
18462 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
18463 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
18464 		public List<IndexOptionContext> indexOption() {
18465 			return getRuleContexts(IndexOptionContext.class);
18466 		}
18467 		public IndexOptionContext indexOption(int i) {
18468 			return getRuleContext(IndexOptionContext.class,i);
18469 		}
18470 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
18471 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
18472 		public TerminalNode COMMA_(int i) {
18473 			return getToken(SQLServerStatementParser.COMMA_, i);
18474 		}
18475 		public WithIndexOptionContext(ParserRuleContext parent, int invokingState) {
18476 			super(parent, invokingState);
18477 		}
18478 		@Override public int getRuleIndex() { return RULE_withIndexOption; }
18479 		@Override
18480 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18481 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithIndexOption(this);
18482 			else return visitor.visitChildren(this);
18483 		}
18484 	}
18485 
18486 	public final WithIndexOptionContext withIndexOption() throws RecognitionException {
18487 		WithIndexOptionContext _localctx = new WithIndexOptionContext(_ctx, getState());
18488 		enterRule(_localctx, 386, RULE_withIndexOption);
18489 		int _la;
18490 		try {
18491 			enterOuterAlt(_localctx, 1);
18492 			{
18493 			setState(2799);
18494 			match(WITH);
18495 			setState(2800);
18496 			match(LP_);
18497 			setState(2801);
18498 			indexOption();
18499 			setState(2806);
18500 			_errHandler.sync(this);
18501 			_la = _input.LA(1);
18502 			while (_la==COMMA_) {
18503 				{
18504 				{
18505 				setState(2802);
18506 				match(COMMA_);
18507 				setState(2803);
18508 				indexOption();
18509 				}
18510 				}
18511 				setState(2808);
18512 				_errHandler.sync(this);
18513 				_la = _input.LA(1);
18514 			}
18515 			setState(2809);
18516 			match(RP_);
18517 			}
18518 		}
18519 		catch (RecognitionException re) {
18520 			_localctx.exception = re;
18521 			_errHandler.reportError(this, re);
18522 			_errHandler.recover(this, re);
18523 		}
18524 		finally {
18525 			exitRule();
18526 		}
18527 		return _localctx;
18528 	}
18529 
18530 	public static class IndexOnClauseContext extends ParserRuleContext {
18531 		public OnSchemaColumnContext onSchemaColumn() {
18532 			return getRuleContext(OnSchemaColumnContext.class,0);
18533 		}
18534 		public OnFileGroupContext onFileGroup() {
18535 			return getRuleContext(OnFileGroupContext.class,0);
18536 		}
18537 		public OnDefaultContext onDefault() {
18538 			return getRuleContext(OnDefaultContext.class,0);
18539 		}
18540 		public IndexOnClauseContext(ParserRuleContext parent, int invokingState) {
18541 			super(parent, invokingState);
18542 		}
18543 		@Override public int getRuleIndex() { return RULE_indexOnClause; }
18544 		@Override
18545 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18546 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexOnClause(this);
18547 			else return visitor.visitChildren(this);
18548 		}
18549 	}
18550 
18551 	public final IndexOnClauseContext indexOnClause() throws RecognitionException {
18552 		IndexOnClauseContext _localctx = new IndexOnClauseContext(_ctx, getState());
18553 		enterRule(_localctx, 388, RULE_indexOnClause);
18554 		try {
18555 			setState(2814);
18556 			_errHandler.sync(this);
18557 			switch ( getInterpreter().adaptivePredict(_input,227,_ctx) ) {
18558 			case 1:
18559 				enterOuterAlt(_localctx, 1);
18560 				{
18561 				setState(2811);
18562 				onSchemaColumn();
18563 				}
18564 				break;
18565 			case 2:
18566 				enterOuterAlt(_localctx, 2);
18567 				{
18568 				setState(2812);
18569 				onFileGroup();
18570 				}
18571 				break;
18572 			case 3:
18573 				enterOuterAlt(_localctx, 3);
18574 				{
18575 				setState(2813);
18576 				onDefault();
18577 				}
18578 				break;
18579 			}
18580 		}
18581 		catch (RecognitionException re) {
18582 			_localctx.exception = re;
18583 			_errHandler.reportError(this, re);
18584 			_errHandler.recover(this, re);
18585 		}
18586 		finally {
18587 			exitRule();
18588 		}
18589 		return _localctx;
18590 	}
18591 
18592 	public static class OnDefaultContext extends ParserRuleContext {
18593 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
18594 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
18595 		public OnDefaultContext(ParserRuleContext parent, int invokingState) {
18596 			super(parent, invokingState);
18597 		}
18598 		@Override public int getRuleIndex() { return RULE_onDefault; }
18599 		@Override
18600 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18601 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnDefault(this);
18602 			else return visitor.visitChildren(this);
18603 		}
18604 	}
18605 
18606 	public final OnDefaultContext onDefault() throws RecognitionException {
18607 		OnDefaultContext _localctx = new OnDefaultContext(_ctx, getState());
18608 		enterRule(_localctx, 390, RULE_onDefault);
18609 		try {
18610 			enterOuterAlt(_localctx, 1);
18611 			{
18612 			setState(2816);
18613 			match(ON);
18614 			setState(2817);
18615 			match(DEFAULT);
18616 			}
18617 		}
18618 		catch (RecognitionException re) {
18619 			_localctx.exception = re;
18620 			_errHandler.reportError(this, re);
18621 			_errHandler.recover(this, re);
18622 		}
18623 		finally {
18624 			exitRule();
18625 		}
18626 		return _localctx;
18627 	}
18628 
18629 	public static class FileStreamOnContext extends ParserRuleContext {
18630 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
18631 		public IgnoredIdentifierContext ignoredIdentifier() {
18632 			return getRuleContext(IgnoredIdentifierContext.class,0);
18633 		}
18634 		public SchemaNameContext schemaName() {
18635 			return getRuleContext(SchemaNameContext.class,0);
18636 		}
18637 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
18638 		public FileStreamOnContext(ParserRuleContext parent, int invokingState) {
18639 			super(parent, invokingState);
18640 		}
18641 		@Override public int getRuleIndex() { return RULE_fileStreamOn; }
18642 		@Override
18643 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18644 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileStreamOn(this);
18645 			else return visitor.visitChildren(this);
18646 		}
18647 	}
18648 
18649 	public final FileStreamOnContext fileStreamOn() throws RecognitionException {
18650 		FileStreamOnContext _localctx = new FileStreamOnContext(_ctx, getState());
18651 		enterRule(_localctx, 392, RULE_fileStreamOn);
18652 		try {
18653 			enterOuterAlt(_localctx, 1);
18654 			{
18655 			setState(2819);
18656 			match(FILESTREAM_ON);
18657 			setState(2823);
18658 			_errHandler.sync(this);
18659 			switch ( getInterpreter().adaptivePredict(_input,228,_ctx) ) {
18660 			case 1:
18661 				{
18662 				setState(2820);
18663 				ignoredIdentifier();
18664 				}
18665 				break;
18666 			case 2:
18667 				{
18668 				setState(2821);
18669 				schemaName();
18670 				}
18671 				break;
18672 			case 3:
18673 				{
18674 				setState(2822);
18675 				match(STRING_);
18676 				}
18677 				break;
18678 			}
18679 			}
18680 		}
18681 		catch (RecognitionException re) {
18682 			_localctx.exception = re;
18683 			_errHandler.reportError(this, re);
18684 			_errHandler.recover(this, re);
18685 		}
18686 		finally {
18687 			exitRule();
18688 		}
18689 		return _localctx;
18690 	}
18691 
18692 	public static class ColumnConstraintsContext extends ParserRuleContext {
18693 		public List<ColumnConstraintContext> columnConstraint() {
18694 			return getRuleContexts(ColumnConstraintContext.class);
18695 		}
18696 		public ColumnConstraintContext columnConstraint(int i) {
18697 			return getRuleContext(ColumnConstraintContext.class,i);
18698 		}
18699 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
18700 		public TerminalNode COMMA_(int i) {
18701 			return getToken(SQLServerStatementParser.COMMA_, i);
18702 		}
18703 		public ColumnConstraintsContext(ParserRuleContext parent, int invokingState) {
18704 			super(parent, invokingState);
18705 		}
18706 		@Override public int getRuleIndex() { return RULE_columnConstraints; }
18707 		@Override
18708 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18709 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnConstraints(this);
18710 			else return visitor.visitChildren(this);
18711 		}
18712 	}
18713 
18714 	public final ColumnConstraintsContext columnConstraints() throws RecognitionException {
18715 		ColumnConstraintsContext _localctx = new ColumnConstraintsContext(_ctx, getState());
18716 		enterRule(_localctx, 394, RULE_columnConstraints);
18717 		try {
18718 			int _alt;
18719 			enterOuterAlt(_localctx, 1);
18720 			{
18721 			setState(2833);
18722 			_errHandler.sync(this);
18723 			switch ( getInterpreter().adaptivePredict(_input,230,_ctx) ) {
18724 			case 1:
18725 				{
18726 				setState(2825);
18727 				columnConstraint();
18728 				setState(2830);
18729 				_errHandler.sync(this);
18730 				_alt = getInterpreter().adaptivePredict(_input,229,_ctx);
18731 				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
18732 					if ( _alt==1 ) {
18733 						{
18734 						{
18735 						setState(2826);
18736 						match(COMMA_);
18737 						setState(2827);
18738 						columnConstraint();
18739 						}
18740 						} 
18741 					}
18742 					setState(2832);
18743 					_errHandler.sync(this);
18744 					_alt = getInterpreter().adaptivePredict(_input,229,_ctx);
18745 				}
18746 				}
18747 				break;
18748 			}
18749 			}
18750 		}
18751 		catch (RecognitionException re) {
18752 			_localctx.exception = re;
18753 			_errHandler.reportError(this, re);
18754 			_errHandler.recover(this, re);
18755 		}
18756 		finally {
18757 			exitRule();
18758 		}
18759 		return _localctx;
18760 	}
18761 
18762 	public static class ComputedColumnDefinitionContext extends ParserRuleContext {
18763 		public ColumnNameContext columnName() {
18764 			return getRuleContext(ColumnNameContext.class,0);
18765 		}
18766 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
18767 		public ExprContext expr() {
18768 			return getRuleContext(ExprContext.class,0);
18769 		}
18770 		public TerminalNode PERSISTED() { return getToken(SQLServerStatementParser.PERSISTED, 0); }
18771 		public ComputedColumnConstraintContext computedColumnConstraint() {
18772 			return getRuleContext(ComputedColumnConstraintContext.class,0);
18773 		}
18774 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
18775 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
18776 		public ComputedColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
18777 			super(parent, invokingState);
18778 		}
18779 		@Override public int getRuleIndex() { return RULE_computedColumnDefinition; }
18780 		@Override
18781 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18782 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitComputedColumnDefinition(this);
18783 			else return visitor.visitChildren(this);
18784 		}
18785 	}
18786 
18787 	public final ComputedColumnDefinitionContext computedColumnDefinition() throws RecognitionException {
18788 		ComputedColumnDefinitionContext _localctx = new ComputedColumnDefinitionContext(_ctx, getState());
18789 		enterRule(_localctx, 396, RULE_computedColumnDefinition);
18790 		int _la;
18791 		try {
18792 			enterOuterAlt(_localctx, 1);
18793 			{
18794 			setState(2835);
18795 			columnName();
18796 			setState(2836);
18797 			match(AS);
18798 			setState(2837);
18799 			expr(0);
18800 			setState(2843);
18801 			_errHandler.sync(this);
18802 			switch ( getInterpreter().adaptivePredict(_input,232,_ctx) ) {
18803 			case 1:
18804 				{
18805 				setState(2838);
18806 				match(PERSISTED);
18807 				setState(2841);
18808 				_errHandler.sync(this);
18809 				_la = _input.LA(1);
18810 				if (_la==NOT) {
18811 					{
18812 					setState(2839);
18813 					match(NOT);
18814 					setState(2840);
18815 					match(NULL);
18816 					}
18817 				}
18818 
18819 				}
18820 				break;
18821 			}
18822 			setState(2846);
18823 			_errHandler.sync(this);
18824 			switch ( getInterpreter().adaptivePredict(_input,233,_ctx) ) {
18825 			case 1:
18826 				{
18827 				setState(2845);
18828 				computedColumnConstraint();
18829 				}
18830 				break;
18831 			}
18832 			}
18833 		}
18834 		catch (RecognitionException re) {
18835 			_localctx.exception = re;
18836 			_errHandler.reportError(this, re);
18837 			_errHandler.recover(this, re);
18838 		}
18839 		finally {
18840 			exitRule();
18841 		}
18842 		return _localctx;
18843 	}
18844 
18845 	public static class ColumnSetDefinitionContext extends ParserRuleContext {
18846 		public IgnoredIdentifierContext ignoredIdentifier() {
18847 			return getRuleContext(IgnoredIdentifierContext.class,0);
18848 		}
18849 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
18850 		public TerminalNode COLUMN_SET() { return getToken(SQLServerStatementParser.COLUMN_SET, 0); }
18851 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
18852 		public TerminalNode ALL_SPARSE_COLUMNS() { return getToken(SQLServerStatementParser.ALL_SPARSE_COLUMNS, 0); }
18853 		public ColumnSetDefinitionContext(ParserRuleContext parent, int invokingState) {
18854 			super(parent, invokingState);
18855 		}
18856 		@Override public int getRuleIndex() { return RULE_columnSetDefinition; }
18857 		@Override
18858 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18859 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitColumnSetDefinition(this);
18860 			else return visitor.visitChildren(this);
18861 		}
18862 	}
18863 
18864 	public final ColumnSetDefinitionContext columnSetDefinition() throws RecognitionException {
18865 		ColumnSetDefinitionContext _localctx = new ColumnSetDefinitionContext(_ctx, getState());
18866 		enterRule(_localctx, 398, RULE_columnSetDefinition);
18867 		try {
18868 			enterOuterAlt(_localctx, 1);
18869 			{
18870 			setState(2848);
18871 			ignoredIdentifier();
18872 			setState(2849);
18873 			match(IDENTIFIER_);
18874 			setState(2850);
18875 			match(COLUMN_SET);
18876 			setState(2851);
18877 			match(FOR);
18878 			setState(2852);
18879 			match(ALL_SPARSE_COLUMNS);
18880 			}
18881 		}
18882 		catch (RecognitionException re) {
18883 			_localctx.exception = re;
18884 			_errHandler.reportError(this, re);
18885 			_errHandler.recover(this, re);
18886 		}
18887 		finally {
18888 			exitRule();
18889 		}
18890 		return _localctx;
18891 	}
18892 
18893 	public static class TableConstraintContext extends ParserRuleContext {
18894 		public TablePrimaryConstraintContext tablePrimaryConstraint() {
18895 			return getRuleContext(TablePrimaryConstraintContext.class,0);
18896 		}
18897 		public TableForeignKeyConstraintContext tableForeignKeyConstraint() {
18898 			return getRuleContext(TableForeignKeyConstraintContext.class,0);
18899 		}
18900 		public CheckConstraintContext checkConstraint() {
18901 			return getRuleContext(CheckConstraintContext.class,0);
18902 		}
18903 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
18904 		public ConstraintNameContext constraintName() {
18905 			return getRuleContext(ConstraintNameContext.class,0);
18906 		}
18907 		public TableConstraintContext(ParserRuleContext parent, int invokingState) {
18908 			super(parent, invokingState);
18909 		}
18910 		@Override public int getRuleIndex() { return RULE_tableConstraint; }
18911 		@Override
18912 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18913 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableConstraint(this);
18914 			else return visitor.visitChildren(this);
18915 		}
18916 	}
18917 
18918 	public final TableConstraintContext tableConstraint() throws RecognitionException {
18919 		TableConstraintContext _localctx = new TableConstraintContext(_ctx, getState());
18920 		enterRule(_localctx, 400, RULE_tableConstraint);
18921 		int _la;
18922 		try {
18923 			enterOuterAlt(_localctx, 1);
18924 			{
18925 			setState(2856);
18926 			_errHandler.sync(this);
18927 			_la = _input.LA(1);
18928 			if (_la==CONSTRAINT) {
18929 				{
18930 				setState(2854);
18931 				match(CONSTRAINT);
18932 				setState(2855);
18933 				constraintName();
18934 				}
18935 			}
18936 
18937 			setState(2861);
18938 			_errHandler.sync(this);
18939 			switch (_input.LA(1)) {
18940 			case PRIMARY:
18941 			case UNIQUE:
18942 			case KEY:
18943 				{
18944 				setState(2858);
18945 				tablePrimaryConstraint();
18946 				}
18947 				break;
18948 			case LP_:
18949 			case FOREIGN:
18950 				{
18951 				setState(2859);
18952 				tableForeignKeyConstraint();
18953 				}
18954 				break;
18955 			case CHECK:
18956 				{
18957 				setState(2860);
18958 				checkConstraint();
18959 				}
18960 				break;
18961 			default:
18962 				throw new NoViableAltException(this);
18963 			}
18964 			}
18965 		}
18966 		catch (RecognitionException re) {
18967 			_localctx.exception = re;
18968 			_errHandler.reportError(this, re);
18969 			_errHandler.recover(this, re);
18970 		}
18971 		finally {
18972 			exitRule();
18973 		}
18974 		return _localctx;
18975 	}
18976 
18977 	public static class TablePrimaryConstraintContext extends ParserRuleContext {
18978 		public PrimaryKeyUniqueContext primaryKeyUnique() {
18979 			return getRuleContext(PrimaryKeyUniqueContext.class,0);
18980 		}
18981 		public DiskTablePrimaryConstraintOptionContext diskTablePrimaryConstraintOption() {
18982 			return getRuleContext(DiskTablePrimaryConstraintOptionContext.class,0);
18983 		}
18984 		public MemoryTablePrimaryConstraintOptionContext memoryTablePrimaryConstraintOption() {
18985 			return getRuleContext(MemoryTablePrimaryConstraintOptionContext.class,0);
18986 		}
18987 		public TablePrimaryConstraintContext(ParserRuleContext parent, int invokingState) {
18988 			super(parent, invokingState);
18989 		}
18990 		@Override public int getRuleIndex() { return RULE_tablePrimaryConstraint; }
18991 		@Override
18992 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
18993 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTablePrimaryConstraint(this);
18994 			else return visitor.visitChildren(this);
18995 		}
18996 	}
18997 
18998 	public final TablePrimaryConstraintContext tablePrimaryConstraint() throws RecognitionException {
18999 		TablePrimaryConstraintContext _localctx = new TablePrimaryConstraintContext(_ctx, getState());
19000 		enterRule(_localctx, 402, RULE_tablePrimaryConstraint);
19001 		try {
19002 			enterOuterAlt(_localctx, 1);
19003 			{
19004 			setState(2863);
19005 			primaryKeyUnique();
19006 			setState(2866);
19007 			_errHandler.sync(this);
19008 			switch ( getInterpreter().adaptivePredict(_input,236,_ctx) ) {
19009 			case 1:
19010 				{
19011 				setState(2864);
19012 				diskTablePrimaryConstraintOption();
19013 				}
19014 				break;
19015 			case 2:
19016 				{
19017 				setState(2865);
19018 				memoryTablePrimaryConstraintOption();
19019 				}
19020 				break;
19021 			}
19022 			}
19023 		}
19024 		catch (RecognitionException re) {
19025 			_localctx.exception = re;
19026 			_errHandler.reportError(this, re);
19027 			_errHandler.recover(this, re);
19028 		}
19029 		finally {
19030 			exitRule();
19031 		}
19032 		return _localctx;
19033 	}
19034 
19035 	public static class PrimaryKeyUniqueContext extends ParserRuleContext {
19036 		public PrimaryKeyContext primaryKey() {
19037 			return getRuleContext(PrimaryKeyContext.class,0);
19038 		}
19039 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
19040 		public PrimaryKeyUniqueContext(ParserRuleContext parent, int invokingState) {
19041 			super(parent, invokingState);
19042 		}
19043 		@Override public int getRuleIndex() { return RULE_primaryKeyUnique; }
19044 		@Override
19045 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19046 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrimaryKeyUnique(this);
19047 			else return visitor.visitChildren(this);
19048 		}
19049 	}
19050 
19051 	public final PrimaryKeyUniqueContext primaryKeyUnique() throws RecognitionException {
19052 		PrimaryKeyUniqueContext _localctx = new PrimaryKeyUniqueContext(_ctx, getState());
19053 		enterRule(_localctx, 404, RULE_primaryKeyUnique);
19054 		try {
19055 			setState(2870);
19056 			_errHandler.sync(this);
19057 			switch (_input.LA(1)) {
19058 			case PRIMARY:
19059 			case KEY:
19060 				enterOuterAlt(_localctx, 1);
19061 				{
19062 				setState(2868);
19063 				primaryKey();
19064 				}
19065 				break;
19066 			case UNIQUE:
19067 				enterOuterAlt(_localctx, 2);
19068 				{
19069 				setState(2869);
19070 				match(UNIQUE);
19071 				}
19072 				break;
19073 			default:
19074 				throw new NoViableAltException(this);
19075 			}
19076 		}
19077 		catch (RecognitionException re) {
19078 			_localctx.exception = re;
19079 			_errHandler.reportError(this, re);
19080 			_errHandler.recover(this, re);
19081 		}
19082 		finally {
19083 			exitRule();
19084 		}
19085 		return _localctx;
19086 	}
19087 
19088 	public static class DiskTablePrimaryConstraintOptionContext extends ParserRuleContext {
19089 		public ColumnNamesContext columnNames() {
19090 			return getRuleContext(ColumnNamesContext.class,0);
19091 		}
19092 		public ClusterOptionContext clusterOption() {
19093 			return getRuleContext(ClusterOptionContext.class,0);
19094 		}
19095 		public PrimaryKeyWithClauseContext primaryKeyWithClause() {
19096 			return getRuleContext(PrimaryKeyWithClauseContext.class,0);
19097 		}
19098 		public PrimaryKeyOnClauseContext primaryKeyOnClause() {
19099 			return getRuleContext(PrimaryKeyOnClauseContext.class,0);
19100 		}
19101 		public DiskTablePrimaryConstraintOptionContext(ParserRuleContext parent, int invokingState) {
19102 			super(parent, invokingState);
19103 		}
19104 		@Override public int getRuleIndex() { return RULE_diskTablePrimaryConstraintOption; }
19105 		@Override
19106 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19107 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDiskTablePrimaryConstraintOption(this);
19108 			else return visitor.visitChildren(this);
19109 		}
19110 	}
19111 
19112 	public final DiskTablePrimaryConstraintOptionContext diskTablePrimaryConstraintOption() throws RecognitionException {
19113 		DiskTablePrimaryConstraintOptionContext _localctx = new DiskTablePrimaryConstraintOptionContext(_ctx, getState());
19114 		enterRule(_localctx, 406, RULE_diskTablePrimaryConstraintOption);
19115 		int _la;
19116 		try {
19117 			enterOuterAlt(_localctx, 1);
19118 			{
19119 			setState(2873);
19120 			_errHandler.sync(this);
19121 			_la = _input.LA(1);
19122 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
19123 				{
19124 				setState(2872);
19125 				clusterOption();
19126 				}
19127 			}
19128 
19129 			setState(2875);
19130 			columnNames();
19131 			setState(2877);
19132 			_errHandler.sync(this);
19133 			switch ( getInterpreter().adaptivePredict(_input,239,_ctx) ) {
19134 			case 1:
19135 				{
19136 				setState(2876);
19137 				primaryKeyWithClause();
19138 				}
19139 				break;
19140 			}
19141 			setState(2880);
19142 			_errHandler.sync(this);
19143 			_la = _input.LA(1);
19144 			if (_la==ON) {
19145 				{
19146 				setState(2879);
19147 				primaryKeyOnClause();
19148 				}
19149 			}
19150 
19151 			}
19152 		}
19153 		catch (RecognitionException re) {
19154 			_localctx.exception = re;
19155 			_errHandler.reportError(this, re);
19156 			_errHandler.recover(this, re);
19157 		}
19158 		finally {
19159 			exitRule();
19160 		}
19161 		return _localctx;
19162 	}
19163 
19164 	public static class MemoryTablePrimaryConstraintOptionContext extends ParserRuleContext {
19165 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
19166 		public ColumnNamesContext columnNames() {
19167 			return getRuleContext(ColumnNamesContext.class,0);
19168 		}
19169 		public HashWithBucketContext hashWithBucket() {
19170 			return getRuleContext(HashWithBucketContext.class,0);
19171 		}
19172 		public MemoryTablePrimaryConstraintOptionContext(ParserRuleContext parent, int invokingState) {
19173 			super(parent, invokingState);
19174 		}
19175 		@Override public int getRuleIndex() { return RULE_memoryTablePrimaryConstraintOption; }
19176 		@Override
19177 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19178 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMemoryTablePrimaryConstraintOption(this);
19179 			else return visitor.visitChildren(this);
19180 		}
19181 	}
19182 
19183 	public final MemoryTablePrimaryConstraintOptionContext memoryTablePrimaryConstraintOption() throws RecognitionException {
19184 		MemoryTablePrimaryConstraintOptionContext _localctx = new MemoryTablePrimaryConstraintOptionContext(_ctx, getState());
19185 		enterRule(_localctx, 408, RULE_memoryTablePrimaryConstraintOption);
19186 		try {
19187 			enterOuterAlt(_localctx, 1);
19188 			{
19189 			setState(2882);
19190 			match(NONCLUSTERED);
19191 			setState(2885);
19192 			_errHandler.sync(this);
19193 			switch (_input.LA(1)) {
19194 			case LP_:
19195 				{
19196 				setState(2883);
19197 				columnNames();
19198 				}
19199 				break;
19200 			case HASH:
19201 				{
19202 				setState(2884);
19203 				hashWithBucket();
19204 				}
19205 				break;
19206 			default:
19207 				throw new NoViableAltException(this);
19208 			}
19209 			}
19210 		}
19211 		catch (RecognitionException re) {
19212 			_localctx.exception = re;
19213 			_errHandler.reportError(this, re);
19214 			_errHandler.recover(this, re);
19215 		}
19216 		finally {
19217 			exitRule();
19218 		}
19219 		return _localctx;
19220 	}
19221 
19222 	public static class HashWithBucketContext extends ParserRuleContext {
19223 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
19224 		public ColumnNamesContext columnNames() {
19225 			return getRuleContext(ColumnNamesContext.class,0);
19226 		}
19227 		public WithBucketContext withBucket() {
19228 			return getRuleContext(WithBucketContext.class,0);
19229 		}
19230 		public HashWithBucketContext(ParserRuleContext parent, int invokingState) {
19231 			super(parent, invokingState);
19232 		}
19233 		@Override public int getRuleIndex() { return RULE_hashWithBucket; }
19234 		@Override
19235 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19236 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHashWithBucket(this);
19237 			else return visitor.visitChildren(this);
19238 		}
19239 	}
19240 
19241 	public final HashWithBucketContext hashWithBucket() throws RecognitionException {
19242 		HashWithBucketContext _localctx = new HashWithBucketContext(_ctx, getState());
19243 		enterRule(_localctx, 410, RULE_hashWithBucket);
19244 		try {
19245 			enterOuterAlt(_localctx, 1);
19246 			{
19247 			setState(2887);
19248 			match(HASH);
19249 			setState(2888);
19250 			columnNames();
19251 			setState(2889);
19252 			withBucket();
19253 			}
19254 		}
19255 		catch (RecognitionException re) {
19256 			_localctx.exception = re;
19257 			_errHandler.reportError(this, re);
19258 			_errHandler.recover(this, re);
19259 		}
19260 		finally {
19261 			exitRule();
19262 		}
19263 		return _localctx;
19264 	}
19265 
19266 	public static class TableForeignKeyConstraintContext extends ParserRuleContext {
19267 		public List<ColumnNamesContext> columnNames() {
19268 			return getRuleContexts(ColumnNamesContext.class);
19269 		}
19270 		public ColumnNamesContext columnNames(int i) {
19271 			return getRuleContext(ColumnNamesContext.class,i);
19272 		}
19273 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
19274 		public TableNameContext tableName() {
19275 			return getRuleContext(TableNameContext.class,0);
19276 		}
19277 		public TerminalNode FOREIGN() { return getToken(SQLServerStatementParser.FOREIGN, 0); }
19278 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
19279 		public List<ForeignKeyOnActionContext> foreignKeyOnAction() {
19280 			return getRuleContexts(ForeignKeyOnActionContext.class);
19281 		}
19282 		public ForeignKeyOnActionContext foreignKeyOnAction(int i) {
19283 			return getRuleContext(ForeignKeyOnActionContext.class,i);
19284 		}
19285 		public TableForeignKeyConstraintContext(ParserRuleContext parent, int invokingState) {
19286 			super(parent, invokingState);
19287 		}
19288 		@Override public int getRuleIndex() { return RULE_tableForeignKeyConstraint; }
19289 		@Override
19290 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19291 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableForeignKeyConstraint(this);
19292 			else return visitor.visitChildren(this);
19293 		}
19294 	}
19295 
19296 	public final TableForeignKeyConstraintContext tableForeignKeyConstraint() throws RecognitionException {
19297 		TableForeignKeyConstraintContext _localctx = new TableForeignKeyConstraintContext(_ctx, getState());
19298 		enterRule(_localctx, 412, RULE_tableForeignKeyConstraint);
19299 		int _la;
19300 		try {
19301 			enterOuterAlt(_localctx, 1);
19302 			{
19303 			setState(2893);
19304 			_errHandler.sync(this);
19305 			_la = _input.LA(1);
19306 			if (_la==FOREIGN) {
19307 				{
19308 				setState(2891);
19309 				match(FOREIGN);
19310 				setState(2892);
19311 				match(KEY);
19312 				}
19313 			}
19314 
19315 			setState(2895);
19316 			columnNames();
19317 			setState(2896);
19318 			match(REFERENCES);
19319 			setState(2897);
19320 			tableName();
19321 			setState(2898);
19322 			columnNames();
19323 			setState(2902);
19324 			_errHandler.sync(this);
19325 			_la = _input.LA(1);
19326 			while (_la==ON || _la==NOT) {
19327 				{
19328 				{
19329 				setState(2899);
19330 				foreignKeyOnAction();
19331 				}
19332 				}
19333 				setState(2904);
19334 				_errHandler.sync(this);
19335 				_la = _input.LA(1);
19336 			}
19337 			}
19338 		}
19339 		catch (RecognitionException re) {
19340 			_localctx.exception = re;
19341 			_errHandler.reportError(this, re);
19342 			_errHandler.recover(this, re);
19343 		}
19344 		finally {
19345 			exitRule();
19346 		}
19347 		return _localctx;
19348 	}
19349 
19350 	public static class TableIndexContext extends ParserRuleContext {
19351 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
19352 		public IndexNameContext indexName() {
19353 			return getRuleContext(IndexNameContext.class,0);
19354 		}
19355 		public IndexNameOptionContext indexNameOption() {
19356 			return getRuleContext(IndexNameOptionContext.class,0);
19357 		}
19358 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
19359 		public IndexOptionsContext indexOptions() {
19360 			return getRuleContext(IndexOptionsContext.class,0);
19361 		}
19362 		public IndexOnClauseContext indexOnClause() {
19363 			return getRuleContext(IndexOnClauseContext.class,0);
19364 		}
19365 		public FileStreamOnContext fileStreamOn() {
19366 			return getRuleContext(FileStreamOnContext.class,0);
19367 		}
19368 		public TableIndexContext(ParserRuleContext parent, int invokingState) {
19369 			super(parent, invokingState);
19370 		}
19371 		@Override public int getRuleIndex() { return RULE_tableIndex; }
19372 		@Override
19373 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19374 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableIndex(this);
19375 			else return visitor.visitChildren(this);
19376 		}
19377 	}
19378 
19379 	public final TableIndexContext tableIndex() throws RecognitionException {
19380 		TableIndexContext _localctx = new TableIndexContext(_ctx, getState());
19381 		enterRule(_localctx, 414, RULE_tableIndex);
19382 		int _la;
19383 		try {
19384 			enterOuterAlt(_localctx, 1);
19385 			{
19386 			setState(2905);
19387 			match(INDEX);
19388 			setState(2906);
19389 			indexName();
19390 			setState(2907);
19391 			indexNameOption();
19392 			setState(2910);
19393 			_errHandler.sync(this);
19394 			_la = _input.LA(1);
19395 			if (_la==WITH) {
19396 				{
19397 				setState(2908);
19398 				match(WITH);
19399 				setState(2909);
19400 				indexOptions();
19401 				}
19402 			}
19403 
19404 			setState(2913);
19405 			_errHandler.sync(this);
19406 			_la = _input.LA(1);
19407 			if (_la==ON) {
19408 				{
19409 				setState(2912);
19410 				indexOnClause();
19411 				}
19412 			}
19413 
19414 			setState(2916);
19415 			_errHandler.sync(this);
19416 			_la = _input.LA(1);
19417 			if (_la==FILESTREAM_ON) {
19418 				{
19419 				setState(2915);
19420 				fileStreamOn();
19421 				}
19422 			}
19423 
19424 			}
19425 		}
19426 		catch (RecognitionException re) {
19427 			_localctx.exception = re;
19428 			_errHandler.reportError(this, re);
19429 			_errHandler.recover(this, re);
19430 		}
19431 		finally {
19432 			exitRule();
19433 		}
19434 		return _localctx;
19435 	}
19436 
19437 	public static class IndexNameOptionContext extends ParserRuleContext {
19438 		public ColumnNamesContext columnNames() {
19439 			return getRuleContext(ColumnNamesContext.class,0);
19440 		}
19441 		public ClusterOptionContext clusterOption() {
19442 			return getRuleContext(ClusterOptionContext.class,0);
19443 		}
19444 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
19445 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
19446 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
19447 		public IndexNameOptionContext(ParserRuleContext parent, int invokingState) {
19448 			super(parent, invokingState);
19449 		}
19450 		@Override public int getRuleIndex() { return RULE_indexNameOption; }
19451 		@Override
19452 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19453 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexNameOption(this);
19454 			else return visitor.visitChildren(this);
19455 		}
19456 	}
19457 
19458 	public final IndexNameOptionContext indexNameOption() throws RecognitionException {
19459 		IndexNameOptionContext _localctx = new IndexNameOptionContext(_ctx, getState());
19460 		enterRule(_localctx, 416, RULE_indexNameOption);
19461 		int _la;
19462 		try {
19463 			setState(2929);
19464 			_errHandler.sync(this);
19465 			switch ( getInterpreter().adaptivePredict(_input,249,_ctx) ) {
19466 			case 1:
19467 				enterOuterAlt(_localctx, 1);
19468 				{
19469 				setState(2919);
19470 				_errHandler.sync(this);
19471 				_la = _input.LA(1);
19472 				if (_la==CLUSTERED || _la==NONCLUSTERED) {
19473 					{
19474 					setState(2918);
19475 					clusterOption();
19476 					}
19477 				}
19478 
19479 				setState(2921);
19480 				columnNames();
19481 				}
19482 				break;
19483 			case 2:
19484 				enterOuterAlt(_localctx, 2);
19485 				{
19486 				setState(2922);
19487 				match(CLUSTERED);
19488 				setState(2923);
19489 				match(COLUMNSTORE);
19490 				}
19491 				break;
19492 			case 3:
19493 				enterOuterAlt(_localctx, 3);
19494 				{
19495 				setState(2925);
19496 				_errHandler.sync(this);
19497 				_la = _input.LA(1);
19498 				if (_la==NONCLUSTERED) {
19499 					{
19500 					setState(2924);
19501 					match(NONCLUSTERED);
19502 					}
19503 				}
19504 
19505 				setState(2927);
19506 				match(COLUMNSTORE);
19507 				setState(2928);
19508 				columnNames();
19509 				}
19510 				break;
19511 			}
19512 		}
19513 		catch (RecognitionException re) {
19514 			_localctx.exception = re;
19515 			_errHandler.reportError(this, re);
19516 			_errHandler.recover(this, re);
19517 		}
19518 		finally {
19519 			exitRule();
19520 		}
19521 		return _localctx;
19522 	}
19523 
19524 	public static class IndexOptionsContext extends ParserRuleContext {
19525 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19526 		public List<IndexOptionContext> indexOption() {
19527 			return getRuleContexts(IndexOptionContext.class);
19528 		}
19529 		public IndexOptionContext indexOption(int i) {
19530 			return getRuleContext(IndexOptionContext.class,i);
19531 		}
19532 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
19533 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
19534 		public TerminalNode COMMA_(int i) {
19535 			return getToken(SQLServerStatementParser.COMMA_, i);
19536 		}
19537 		public IndexOptionsContext(ParserRuleContext parent, int invokingState) {
19538 			super(parent, invokingState);
19539 		}
19540 		@Override public int getRuleIndex() { return RULE_indexOptions; }
19541 		@Override
19542 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19543 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexOptions(this);
19544 			else return visitor.visitChildren(this);
19545 		}
19546 	}
19547 
19548 	public final IndexOptionsContext indexOptions() throws RecognitionException {
19549 		IndexOptionsContext _localctx = new IndexOptionsContext(_ctx, getState());
19550 		enterRule(_localctx, 418, RULE_indexOptions);
19551 		int _la;
19552 		try {
19553 			enterOuterAlt(_localctx, 1);
19554 			{
19555 			setState(2931);
19556 			match(LP_);
19557 			setState(2932);
19558 			indexOption();
19559 			setState(2937);
19560 			_errHandler.sync(this);
19561 			_la = _input.LA(1);
19562 			while (_la==COMMA_) {
19563 				{
19564 				{
19565 				setState(2933);
19566 				match(COMMA_);
19567 				setState(2934);
19568 				indexOption();
19569 				}
19570 				}
19571 				setState(2939);
19572 				_errHandler.sync(this);
19573 				_la = _input.LA(1);
19574 			}
19575 			setState(2940);
19576 			match(RP_);
19577 			}
19578 		}
19579 		catch (RecognitionException re) {
19580 			_localctx.exception = re;
19581 			_errHandler.reportError(this, re);
19582 			_errHandler.recover(this, re);
19583 		}
19584 		finally {
19585 			exitRule();
19586 		}
19587 		return _localctx;
19588 	}
19589 
19590 	public static class PeriodClauseContext extends ParserRuleContext {
19591 		public TerminalNode PERIOD() { return getToken(SQLServerStatementParser.PERIOD, 0); }
19592 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
19593 		public TerminalNode SYSTEM_TIME() { return getToken(SQLServerStatementParser.SYSTEM_TIME, 0); }
19594 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19595 		public List<ColumnNameContext> columnName() {
19596 			return getRuleContexts(ColumnNameContext.class);
19597 		}
19598 		public ColumnNameContext columnName(int i) {
19599 			return getRuleContext(ColumnNameContext.class,i);
19600 		}
19601 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
19602 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
19603 		public PeriodClauseContext(ParserRuleContext parent, int invokingState) {
19604 			super(parent, invokingState);
19605 		}
19606 		@Override public int getRuleIndex() { return RULE_periodClause; }
19607 		@Override
19608 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19609 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPeriodClause(this);
19610 			else return visitor.visitChildren(this);
19611 		}
19612 	}
19613 
19614 	public final PeriodClauseContext periodClause() throws RecognitionException {
19615 		PeriodClauseContext _localctx = new PeriodClauseContext(_ctx, getState());
19616 		enterRule(_localctx, 420, RULE_periodClause);
19617 		try {
19618 			enterOuterAlt(_localctx, 1);
19619 			{
19620 			setState(2942);
19621 			match(PERIOD);
19622 			setState(2943);
19623 			match(FOR);
19624 			setState(2944);
19625 			match(SYSTEM_TIME);
19626 			setState(2945);
19627 			match(LP_);
19628 			setState(2946);
19629 			columnName();
19630 			setState(2947);
19631 			match(COMMA_);
19632 			setState(2948);
19633 			columnName();
19634 			setState(2949);
19635 			match(RP_);
19636 			}
19637 		}
19638 		catch (RecognitionException re) {
19639 			_localctx.exception = re;
19640 			_errHandler.reportError(this, re);
19641 			_errHandler.recover(this, re);
19642 		}
19643 		finally {
19644 			exitRule();
19645 		}
19646 		return _localctx;
19647 	}
19648 
19649 	public static class PartitionSchemeContext extends ParserRuleContext {
19650 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
19651 		public SchemaNameContext schemaName() {
19652 			return getRuleContext(SchemaNameContext.class,0);
19653 		}
19654 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19655 		public ColumnNameContext columnName() {
19656 			return getRuleContext(ColumnNameContext.class,0);
19657 		}
19658 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
19659 		public IgnoredIdentifierContext ignoredIdentifier() {
19660 			return getRuleContext(IgnoredIdentifierContext.class,0);
19661 		}
19662 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
19663 		public PartitionSchemeContext(ParserRuleContext parent, int invokingState) {
19664 			super(parent, invokingState);
19665 		}
19666 		@Override public int getRuleIndex() { return RULE_partitionScheme; }
19667 		@Override
19668 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19669 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionScheme(this);
19670 			else return visitor.visitChildren(this);
19671 		}
19672 	}
19673 
19674 	public final PartitionSchemeContext partitionScheme() throws RecognitionException {
19675 		PartitionSchemeContext _localctx = new PartitionSchemeContext(_ctx, getState());
19676 		enterRule(_localctx, 422, RULE_partitionScheme);
19677 		int _la;
19678 		try {
19679 			enterOuterAlt(_localctx, 1);
19680 			{
19681 			setState(2961);
19682 			_errHandler.sync(this);
19683 			_la = _input.LA(1);
19684 			if (_la==ON) {
19685 				{
19686 				setState(2951);
19687 				match(ON);
19688 				setState(2959);
19689 				_errHandler.sync(this);
19690 				switch ( getInterpreter().adaptivePredict(_input,251,_ctx) ) {
19691 				case 1:
19692 					{
19693 					setState(2952);
19694 					schemaName();
19695 					setState(2953);
19696 					match(LP_);
19697 					setState(2954);
19698 					columnName();
19699 					setState(2955);
19700 					match(RP_);
19701 					}
19702 					break;
19703 				case 2:
19704 					{
19705 					setState(2957);
19706 					ignoredIdentifier();
19707 					}
19708 					break;
19709 				case 3:
19710 					{
19711 					setState(2958);
19712 					match(STRING_);
19713 					}
19714 					break;
19715 				}
19716 				}
19717 			}
19718 
19719 			}
19720 		}
19721 		catch (RecognitionException re) {
19722 			_localctx.exception = re;
19723 			_errHandler.reportError(this, re);
19724 			_errHandler.recover(this, re);
19725 		}
19726 		finally {
19727 			exitRule();
19728 		}
19729 		return _localctx;
19730 	}
19731 
19732 	public static class FileGroupContext extends ParserRuleContext {
19733 		public TerminalNode TEXTIMAGE_ON() { return getToken(SQLServerStatementParser.TEXTIMAGE_ON, 0); }
19734 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
19735 		public TableOptionsContext tableOptions() {
19736 			return getRuleContext(TableOptionsContext.class,0);
19737 		}
19738 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
19739 			return getRuleContexts(IgnoredIdentifierContext.class);
19740 		}
19741 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
19742 			return getRuleContext(IgnoredIdentifierContext.class,i);
19743 		}
19744 		public List<TerminalNode> STRING_() { return getTokens(SQLServerStatementParser.STRING_); }
19745 		public TerminalNode STRING_(int i) {
19746 			return getToken(SQLServerStatementParser.STRING_, i);
19747 		}
19748 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
19749 		public SchemaNameContext schemaName() {
19750 			return getRuleContext(SchemaNameContext.class,0);
19751 		}
19752 		public FileGroupContext(ParserRuleContext parent, int invokingState) {
19753 			super(parent, invokingState);
19754 		}
19755 		@Override public int getRuleIndex() { return RULE_fileGroup; }
19756 		@Override
19757 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19758 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileGroup(this);
19759 			else return visitor.visitChildren(this);
19760 		}
19761 	}
19762 
19763 	public final FileGroupContext fileGroup() throws RecognitionException {
19764 		FileGroupContext _localctx = new FileGroupContext(_ctx, getState());
19765 		enterRule(_localctx, 424, RULE_fileGroup);
19766 		int _la;
19767 		try {
19768 			enterOuterAlt(_localctx, 1);
19769 			{
19770 			setState(2968);
19771 			_errHandler.sync(this);
19772 			_la = _input.LA(1);
19773 			if (_la==TEXTIMAGE_ON) {
19774 				{
19775 				setState(2963);
19776 				match(TEXTIMAGE_ON);
19777 				setState(2966);
19778 				_errHandler.sync(this);
19779 				switch (_input.LA(1)) {
19780 				case IDENTIFIER_:
19781 					{
19782 					setState(2964);
19783 					ignoredIdentifier();
19784 					}
19785 					break;
19786 				case STRING_:
19787 					{
19788 					setState(2965);
19789 					match(STRING_);
19790 					}
19791 					break;
19792 				default:
19793 					throw new NoViableAltException(this);
19794 				}
19795 				}
19796 			}
19797 
19798 			setState(2977);
19799 			_errHandler.sync(this);
19800 			_la = _input.LA(1);
19801 			if (_la==FILESTREAM_ON || _la==IDENTIFIER_) {
19802 				{
19803 				setState(2975);
19804 				_errHandler.sync(this);
19805 				switch (_input.LA(1)) {
19806 				case FILESTREAM_ON:
19807 					{
19808 					setState(2970);
19809 					match(FILESTREAM_ON);
19810 					{
19811 					setState(2971);
19812 					schemaName();
19813 					}
19814 					}
19815 					break;
19816 				case IDENTIFIER_:
19817 					{
19818 					setState(2972);
19819 					ignoredIdentifier();
19820 					setState(2973);
19821 					match(STRING_);
19822 					}
19823 					break;
19824 				default:
19825 					throw new NoViableAltException(this);
19826 				}
19827 				}
19828 			}
19829 
19830 			setState(2981);
19831 			_errHandler.sync(this);
19832 			switch ( getInterpreter().adaptivePredict(_input,257,_ctx) ) {
19833 			case 1:
19834 				{
19835 				setState(2979);
19836 				match(WITH);
19837 				setState(2980);
19838 				tableOptions();
19839 				}
19840 				break;
19841 			}
19842 			}
19843 		}
19844 		catch (RecognitionException re) {
19845 			_localctx.exception = re;
19846 			_errHandler.reportError(this, re);
19847 			_errHandler.recover(this, re);
19848 		}
19849 		finally {
19850 			exitRule();
19851 		}
19852 		return _localctx;
19853 	}
19854 
19855 	public static class TableOptionsContext extends ParserRuleContext {
19856 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19857 		public List<TableOptionContext> tableOption() {
19858 			return getRuleContexts(TableOptionContext.class);
19859 		}
19860 		public TableOptionContext tableOption(int i) {
19861 			return getRuleContext(TableOptionContext.class,i);
19862 		}
19863 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
19864 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
19865 		public TerminalNode COMMA_(int i) {
19866 			return getToken(SQLServerStatementParser.COMMA_, i);
19867 		}
19868 		public TableOptionsContext(ParserRuleContext parent, int invokingState) {
19869 			super(parent, invokingState);
19870 		}
19871 		@Override public int getRuleIndex() { return RULE_tableOptions; }
19872 		@Override
19873 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19874 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableOptions(this);
19875 			else return visitor.visitChildren(this);
19876 		}
19877 	}
19878 
19879 	public final TableOptionsContext tableOptions() throws RecognitionException {
19880 		TableOptionsContext _localctx = new TableOptionsContext(_ctx, getState());
19881 		enterRule(_localctx, 426, RULE_tableOptions);
19882 		int _la;
19883 		try {
19884 			enterOuterAlt(_localctx, 1);
19885 			{
19886 			setState(2983);
19887 			match(LP_);
19888 			setState(2984);
19889 			tableOption();
19890 			setState(2989);
19891 			_errHandler.sync(this);
19892 			_la = _input.LA(1);
19893 			while (_la==COMMA_) {
19894 				{
19895 				{
19896 				setState(2985);
19897 				match(COMMA_);
19898 				setState(2986);
19899 				tableOption();
19900 				}
19901 				}
19902 				setState(2991);
19903 				_errHandler.sync(this);
19904 				_la = _input.LA(1);
19905 			}
19906 			setState(2992);
19907 			match(RP_);
19908 			}
19909 		}
19910 		catch (RecognitionException re) {
19911 			_localctx.exception = re;
19912 			_errHandler.reportError(this, re);
19913 			_errHandler.recover(this, re);
19914 		}
19915 		finally {
19916 			exitRule();
19917 		}
19918 		return _localctx;
19919 	}
19920 
19921 	public static class TableOptionContext extends ParserRuleContext {
19922 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
19923 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
19924 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
19925 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
19926 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
19927 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
19928 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
19929 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
19930 		public PartitionExpressionsContext partitionExpressions() {
19931 			return getRuleContext(PartitionExpressionsContext.class,0);
19932 		}
19933 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
19934 		public TerminalNode FILETABLE_DIRECTORY() { return getToken(SQLServerStatementParser.FILETABLE_DIRECTORY, 0); }
19935 		public IgnoredIdentifierContext ignoredIdentifier() {
19936 			return getRuleContext(IgnoredIdentifierContext.class,0);
19937 		}
19938 		public TerminalNode FILETABLE_COLLATE_FILENAME() { return getToken(SQLServerStatementParser.FILETABLE_COLLATE_FILENAME, 0); }
19939 		public CollationNameContext collationName() {
19940 			return getRuleContext(CollationNameContext.class,0);
19941 		}
19942 		public TerminalNode DATABASE_DEAULT() { return getToken(SQLServerStatementParser.DATABASE_DEAULT, 0); }
19943 		public TerminalNode FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME, 0); }
19944 		public TerminalNode FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME, 0); }
19945 		public TerminalNode FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME() { return getToken(SQLServerStatementParser.FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME, 0); }
19946 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
19947 		public OnHistoryTableClauseContext onHistoryTableClause() {
19948 			return getRuleContext(OnHistoryTableClauseContext.class,0);
19949 		}
19950 		public TerminalNode REMOTE_DATA_ARCHIVE() { return getToken(SQLServerStatementParser.REMOTE_DATA_ARCHIVE, 0); }
19951 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
19952 		public MigrationState_Context migrationState_() {
19953 			return getRuleContext(MigrationState_Context.class,0);
19954 		}
19955 		public TableStretchOptionsContext tableStretchOptions() {
19956 			return getRuleContext(TableStretchOptionsContext.class,0);
19957 		}
19958 		public TableOperationOptionContext tableOperationOption() {
19959 			return getRuleContext(TableOperationOptionContext.class,0);
19960 		}
19961 		public DistributionOptionContext distributionOption() {
19962 			return getRuleContext(DistributionOptionContext.class,0);
19963 		}
19964 		public DataWareHouseTableOptionContext dataWareHouseTableOption() {
19965 			return getRuleContext(DataWareHouseTableOptionContext.class,0);
19966 		}
19967 		public DataDelectionOptionContext dataDelectionOption() {
19968 			return getRuleContext(DataDelectionOptionContext.class,0);
19969 		}
19970 		public DataWareHousePartitionOptionContext dataWareHousePartitionOption() {
19971 			return getRuleContext(DataWareHousePartitionOptionContext.class,0);
19972 		}
19973 		public TableOptionContext(ParserRuleContext parent, int invokingState) {
19974 			super(parent, invokingState);
19975 		}
19976 		@Override public int getRuleIndex() { return RULE_tableOption; }
19977 		@Override
19978 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
19979 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableOption(this);
19980 			else return visitor.visitChildren(this);
19981 		}
19982 	}
19983 
19984 	public final TableOptionContext tableOption() throws RecognitionException {
19985 		TableOptionContext _localctx = new TableOptionContext(_ctx, getState());
19986 		enterRule(_localctx, 428, RULE_tableOption);
19987 		int _la;
19988 		try {
19989 			setState(3044);
19990 			_errHandler.sync(this);
19991 			switch ( getInterpreter().adaptivePredict(_input,264,_ctx) ) {
19992 			case 1:
19993 				enterOuterAlt(_localctx, 1);
19994 				{
19995 				setState(2994);
19996 				match(DATA_COMPRESSION);
19997 				setState(2995);
19998 				match(EQ_);
19999 				setState(2996);
20000 				_la = _input.LA(1);
20001 				if ( !(((((_la - 249)) & ~0x3f) == 0 && ((1L << (_la - 249)) & ((1L << (ROW - 249)) | (1L << (NONE - 249)) | (1L << (PAGE - 249)))) != 0)) ) {
20002 				_errHandler.recoverInline(this);
20003 				}
20004 				else {
20005 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
20006 					_errHandler.reportMatch(this);
20007 					consume();
20008 				}
20009 				setState(3003);
20010 				_errHandler.sync(this);
20011 				_la = _input.LA(1);
20012 				if (_la==ON) {
20013 					{
20014 					setState(2997);
20015 					match(ON);
20016 					setState(2998);
20017 					match(PARTITIONS);
20018 					setState(2999);
20019 					match(LP_);
20020 					setState(3000);
20021 					partitionExpressions();
20022 					setState(3001);
20023 					match(RP_);
20024 					}
20025 				}
20026 
20027 				}
20028 				break;
20029 			case 2:
20030 				enterOuterAlt(_localctx, 2);
20031 				{
20032 				setState(3005);
20033 				match(FILETABLE_DIRECTORY);
20034 				setState(3006);
20035 				match(EQ_);
20036 				setState(3007);
20037 				ignoredIdentifier();
20038 				}
20039 				break;
20040 			case 3:
20041 				enterOuterAlt(_localctx, 3);
20042 				{
20043 				setState(3008);
20044 				match(FILETABLE_COLLATE_FILENAME);
20045 				setState(3009);
20046 				match(EQ_);
20047 				setState(3012);
20048 				_errHandler.sync(this);
20049 				switch (_input.LA(1)) {
20050 				case IDENTIFIER_:
20051 				case STRING_:
20052 					{
20053 					setState(3010);
20054 					collationName();
20055 					}
20056 					break;
20057 				case DATABASE_DEAULT:
20058 					{
20059 					setState(3011);
20060 					match(DATABASE_DEAULT);
20061 					}
20062 					break;
20063 				default:
20064 					throw new NoViableAltException(this);
20065 				}
20066 				}
20067 				break;
20068 			case 4:
20069 				enterOuterAlt(_localctx, 4);
20070 				{
20071 				setState(3014);
20072 				match(FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME);
20073 				setState(3015);
20074 				match(EQ_);
20075 				setState(3016);
20076 				ignoredIdentifier();
20077 				}
20078 				break;
20079 			case 5:
20080 				enterOuterAlt(_localctx, 5);
20081 				{
20082 				setState(3017);
20083 				match(FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME);
20084 				setState(3018);
20085 				match(EQ_);
20086 				setState(3019);
20087 				ignoredIdentifier();
20088 				}
20089 				break;
20090 			case 6:
20091 				enterOuterAlt(_localctx, 6);
20092 				{
20093 				setState(3020);
20094 				match(FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME);
20095 				setState(3021);
20096 				match(EQ_);
20097 				setState(3022);
20098 				ignoredIdentifier();
20099 				}
20100 				break;
20101 			case 7:
20102 				enterOuterAlt(_localctx, 7);
20103 				{
20104 				setState(3023);
20105 				match(SYSTEM_VERSIONING);
20106 				setState(3024);
20107 				match(EQ_);
20108 				setState(3025);
20109 				match(ON);
20110 				setState(3027);
20111 				_errHandler.sync(this);
20112 				_la = _input.LA(1);
20113 				if (_la==LP_) {
20114 					{
20115 					setState(3026);
20116 					onHistoryTableClause();
20117 					}
20118 				}
20119 
20120 				}
20121 				break;
20122 			case 8:
20123 				enterOuterAlt(_localctx, 8);
20124 				{
20125 				setState(3029);
20126 				match(REMOTE_DATA_ARCHIVE);
20127 				setState(3030);
20128 				match(EQ_);
20129 				setState(3037);
20130 				_errHandler.sync(this);
20131 				switch (_input.LA(1)) {
20132 				case ON:
20133 					{
20134 					setState(3031);
20135 					match(ON);
20136 					setState(3033);
20137 					_errHandler.sync(this);
20138 					_la = _input.LA(1);
20139 					if (_la==LP_) {
20140 						{
20141 						setState(3032);
20142 						tableStretchOptions();
20143 						}
20144 					}
20145 
20146 					}
20147 					break;
20148 				case OFF:
20149 					{
20150 					setState(3035);
20151 					match(OFF);
20152 					setState(3036);
20153 					migrationState_();
20154 					}
20155 					break;
20156 				default:
20157 					throw new NoViableAltException(this);
20158 				}
20159 				}
20160 				break;
20161 			case 9:
20162 				enterOuterAlt(_localctx, 9);
20163 				{
20164 				setState(3039);
20165 				tableOperationOption();
20166 				}
20167 				break;
20168 			case 10:
20169 				enterOuterAlt(_localctx, 10);
20170 				{
20171 				setState(3040);
20172 				distributionOption();
20173 				}
20174 				break;
20175 			case 11:
20176 				enterOuterAlt(_localctx, 11);
20177 				{
20178 				setState(3041);
20179 				dataWareHouseTableOption();
20180 				}
20181 				break;
20182 			case 12:
20183 				enterOuterAlt(_localctx, 12);
20184 				{
20185 				setState(3042);
20186 				dataDelectionOption();
20187 				}
20188 				break;
20189 			case 13:
20190 				enterOuterAlt(_localctx, 13);
20191 				{
20192 				setState(3043);
20193 				dataWareHousePartitionOption();
20194 				}
20195 				break;
20196 			}
20197 		}
20198 		catch (RecognitionException re) {
20199 			_localctx.exception = re;
20200 			_errHandler.reportError(this, re);
20201 			_errHandler.recover(this, re);
20202 		}
20203 		finally {
20204 			exitRule();
20205 		}
20206 		return _localctx;
20207 	}
20208 
20209 	public static class DataDelectionOptionContext extends ParserRuleContext {
20210 		public TerminalNode DATA_DELETION() { return getToken(SQLServerStatementParser.DATA_DELETION, 0); }
20211 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
20212 		public TerminalNode EQ_(int i) {
20213 			return getToken(SQLServerStatementParser.EQ_, i);
20214 		}
20215 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
20216 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
20217 		public TerminalNode FILTER_COLUMN() { return getToken(SQLServerStatementParser.FILTER_COLUMN, 0); }
20218 		public ColumnNameContext columnName() {
20219 			return getRuleContext(ColumnNameContext.class,0);
20220 		}
20221 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
20222 		public TerminalNode RETENTION_PERIOD() { return getToken(SQLServerStatementParser.RETENTION_PERIOD, 0); }
20223 		public HistoryRetentionPeriodContext historyRetentionPeriod() {
20224 			return getRuleContext(HistoryRetentionPeriodContext.class,0);
20225 		}
20226 		public DataDelectionOptionContext(ParserRuleContext parent, int invokingState) {
20227 			super(parent, invokingState);
20228 		}
20229 		@Override public int getRuleIndex() { return RULE_dataDelectionOption; }
20230 		@Override
20231 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20232 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataDelectionOption(this);
20233 			else return visitor.visitChildren(this);
20234 		}
20235 	}
20236 
20237 	public final DataDelectionOptionContext dataDelectionOption() throws RecognitionException {
20238 		DataDelectionOptionContext _localctx = new DataDelectionOptionContext(_ctx, getState());
20239 		enterRule(_localctx, 430, RULE_dataDelectionOption);
20240 		try {
20241 			enterOuterAlt(_localctx, 1);
20242 			{
20243 			setState(3046);
20244 			match(DATA_DELETION);
20245 			setState(3047);
20246 			match(EQ_);
20247 			setState(3048);
20248 			match(ON);
20249 			{
20250 			setState(3049);
20251 			match(LP_);
20252 			setState(3050);
20253 			match(FILTER_COLUMN);
20254 			setState(3051);
20255 			match(EQ_);
20256 			setState(3052);
20257 			columnName();
20258 			setState(3053);
20259 			match(COMMA_);
20260 			setState(3054);
20261 			match(RETENTION_PERIOD);
20262 			setState(3055);
20263 			match(EQ_);
20264 			setState(3056);
20265 			historyRetentionPeriod();
20266 			}
20267 			}
20268 		}
20269 		catch (RecognitionException re) {
20270 			_localctx.exception = re;
20271 			_errHandler.reportError(this, re);
20272 			_errHandler.recover(this, re);
20273 		}
20274 		finally {
20275 			exitRule();
20276 		}
20277 		return _localctx;
20278 	}
20279 
20280 	public static class TableStretchOptionsContext extends ParserRuleContext {
20281 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
20282 		public List<TableStretchOptionContext> tableStretchOption() {
20283 			return getRuleContexts(TableStretchOptionContext.class);
20284 		}
20285 		public TableStretchOptionContext tableStretchOption(int i) {
20286 			return getRuleContext(TableStretchOptionContext.class,i);
20287 		}
20288 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
20289 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
20290 		public TerminalNode COMMA_(int i) {
20291 			return getToken(SQLServerStatementParser.COMMA_, i);
20292 		}
20293 		public TableStretchOptionsContext(ParserRuleContext parent, int invokingState) {
20294 			super(parent, invokingState);
20295 		}
20296 		@Override public int getRuleIndex() { return RULE_tableStretchOptions; }
20297 		@Override
20298 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20299 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableStretchOptions(this);
20300 			else return visitor.visitChildren(this);
20301 		}
20302 	}
20303 
20304 	public final TableStretchOptionsContext tableStretchOptions() throws RecognitionException {
20305 		TableStretchOptionsContext _localctx = new TableStretchOptionsContext(_ctx, getState());
20306 		enterRule(_localctx, 432, RULE_tableStretchOptions);
20307 		int _la;
20308 		try {
20309 			enterOuterAlt(_localctx, 1);
20310 			{
20311 			setState(3058);
20312 			match(LP_);
20313 			setState(3059);
20314 			tableStretchOption();
20315 			setState(3064);
20316 			_errHandler.sync(this);
20317 			_la = _input.LA(1);
20318 			while (_la==COMMA_) {
20319 				{
20320 				{
20321 				setState(3060);
20322 				match(COMMA_);
20323 				setState(3061);
20324 				tableStretchOption();
20325 				}
20326 				}
20327 				setState(3066);
20328 				_errHandler.sync(this);
20329 				_la = _input.LA(1);
20330 			}
20331 			setState(3067);
20332 			match(RP_);
20333 			}
20334 		}
20335 		catch (RecognitionException re) {
20336 			_localctx.exception = re;
20337 			_errHandler.reportError(this, re);
20338 			_errHandler.recover(this, re);
20339 		}
20340 		finally {
20341 			exitRule();
20342 		}
20343 		return _localctx;
20344 	}
20345 
20346 	public static class TableStretchOptionContext extends ParserRuleContext {
20347 		public TerminalNode MIGRATION_STATE() { return getToken(SQLServerStatementParser.MIGRATION_STATE, 0); }
20348 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
20349 		public TerminalNode EQ_(int i) {
20350 			return getToken(SQLServerStatementParser.EQ_, i);
20351 		}
20352 		public TerminalNode OUTBOUND() { return getToken(SQLServerStatementParser.OUTBOUND, 0); }
20353 		public TerminalNode INBOUND() { return getToken(SQLServerStatementParser.INBOUND, 0); }
20354 		public TerminalNode PAUSED() { return getToken(SQLServerStatementParser.PAUSED, 0); }
20355 		public TerminalNode FILTER_PREDICATE() { return getToken(SQLServerStatementParser.FILTER_PREDICATE, 0); }
20356 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
20357 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
20358 		public FunctionCallContext functionCall() {
20359 			return getRuleContext(FunctionCallContext.class,0);
20360 		}
20361 		public TableStretchOptionContext(ParserRuleContext parent, int invokingState) {
20362 			super(parent, invokingState);
20363 		}
20364 		@Override public int getRuleIndex() { return RULE_tableStretchOption; }
20365 		@Override
20366 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20367 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableStretchOption(this);
20368 			else return visitor.visitChildren(this);
20369 		}
20370 	}
20371 
20372 	public final TableStretchOptionContext tableStretchOption() throws RecognitionException {
20373 		TableStretchOptionContext _localctx = new TableStretchOptionContext(_ctx, getState());
20374 		enterRule(_localctx, 434, RULE_tableStretchOption);
20375 		int _la;
20376 		try {
20377 			enterOuterAlt(_localctx, 1);
20378 			{
20379 			setState(3076);
20380 			_errHandler.sync(this);
20381 			_la = _input.LA(1);
20382 			if (_la==FILTER_PREDICATE) {
20383 				{
20384 				setState(3069);
20385 				match(FILTER_PREDICATE);
20386 				setState(3070);
20387 				match(EQ_);
20388 				setState(3073);
20389 				_errHandler.sync(this);
20390 				switch (_input.LA(1)) {
20391 				case NULL:
20392 					{
20393 					setState(3071);
20394 					match(NULL);
20395 					}
20396 					break;
20397 				case TRUNCATE:
20398 				case SCHEMA:
20399 				case COLUMNS:
20400 				case PRECISION:
20401 				case FUNCTION:
20402 				case TRIGGER:
20403 				case CAST:
20404 				case TRIM:
20405 				case SUBSTRING:
20406 				case RIGHT:
20407 				case OFF:
20408 				case IF:
20409 				case GROUP:
20410 				case LIMIT:
20411 				case OFFSET:
20412 				case SAVEPOINT:
20413 				case BOOLEAN:
20414 				case CHAR:
20415 				case ARRAY:
20416 				case INTERVAL:
20417 				case DATE:
20418 				case TIMESTAMP:
20419 				case LOCALTIME:
20420 				case LOCALTIMESTAMP:
20421 				case YEAR:
20422 				case QUARTER:
20423 				case MONTH:
20424 				case WEEK:
20425 				case DAY:
20426 				case SECOND:
20427 				case MICROSECOND:
20428 				case MAX:
20429 				case MIN:
20430 				case SUM:
20431 				case COUNT:
20432 				case AVG:
20433 				case ENABLE:
20434 				case DISABLE:
20435 				case INSTANCE:
20436 				case DO:
20437 				case DEFINER:
20438 				case SQL:
20439 				case CASCADED:
20440 				case LOCAL:
20441 				case NEXT:
20442 				case NAME:
20443 				case INTEGER:
20444 				case TYPE:
20445 				case TEXT:
20446 				case VIEWS:
20447 				case READ_ONLY:
20448 				case DATABASE:
20449 				case RETURNS:
20450 				case DATEPART:
20451 				case PASSWORD:
20452 				case JSON_OBJECT:
20453 				case JSON_ARRAY:
20454 				case FIRST_VALUE:
20455 				case LAST_VALUE:
20456 				case APPROX_PERCENTILE_CONT:
20457 				case APPROX_PERCENTILE_DISC:
20458 				case OPENDATASOURCE:
20459 				case BINARY:
20460 				case HIDDEN_:
20461 				case MOD:
20462 				case PARTITION:
20463 				case PARTITIONS:
20464 				case TOP:
20465 				case ROW:
20466 				case ROWS:
20467 				case XOR:
20468 				case ALWAYS:
20469 				case USER:
20470 				case ROLE:
20471 				case START:
20472 				case ALGORITHM:
20473 				case AUTO:
20474 				case BLOCKERS:
20475 				case CLUSTERED:
20476 				case NONCLUSTERED:
20477 				case COLUMNSTORE:
20478 				case CONTENT:
20479 				case CONVERT:
20480 				case YEARS:
20481 				case MONTHS:
20482 				case WEEKS:
20483 				case DAYS:
20484 				case MINUTES:
20485 				case DENY:
20486 				case DETERMINISTIC:
20487 				case DISTRIBUTION:
20488 				case DOCUMENT:
20489 				case DURABILITY:
20490 				case ENCRYPTED:
20491 				case FILESTREAM:
20492 				case FILETABLE:
20493 				case FILLFACTOR:
20494 				case FOLLOWING:
20495 				case HASH:
20496 				case HEAP:
20497 				case INBOUND:
20498 				case OUTBOUND:
20499 				case UNBOUNDED:
20500 				case INFINITE:
20501 				case LOGIN:
20502 				case MASKED:
20503 				case MAXDOP:
20504 				case MOVE:
20505 				case NOCHECK:
20506 				case OBJECT:
20507 				case ONLINE:
20508 				case OVER:
20509 				case PAGE:
20510 				case PAUSED:
20511 				case PERIOD:
20512 				case PERSISTED:
20513 				case PRECEDING:
20514 				case RANDOMIZED:
20515 				case RANGE:
20516 				case REBUILD:
20517 				case REPLICATE:
20518 				case REPLICATION:
20519 				case RESUMABLE:
20520 				case ROWGUIDCOL:
20521 				case SAVE:
20522 				case SELF:
20523 				case SPARSE:
20524 				case SWITCH:
20525 				case TRAN:
20526 				case TRANCOUNT:
20527 				case CONTROL:
20528 				case CONCAT:
20529 				case TAKE:
20530 				case OWNERSHIP:
20531 				case DEFINITION:
20532 				case APPLICATION:
20533 				case ASSEMBLY:
20534 				case SYMMETRIC:
20535 				case ASYMMETRIC:
20536 				case SERVER:
20537 				case RECEIVE:
20538 				case CHANGE:
20539 				case TRACE:
20540 				case TRACKING:
20541 				case RESOURCES:
20542 				case SETTINGS:
20543 				case STATE:
20544 				case AVAILABILITY:
20545 				case CREDENTIAL:
20546 				case ENDPOINT:
20547 				case EVENT:
20548 				case NOTIFICATION:
20549 				case LINKED:
20550 				case AUDIT:
20551 				case DDL:
20552 				case XML:
20553 				case IMPERSONATE:
20554 				case SECURABLES:
20555 				case AUTHENTICATE:
20556 				case EXTERNAL:
20557 				case ACCESS:
20558 				case ADMINISTER:
20559 				case BULK:
20560 				case OPERATIONS:
20561 				case UNSAFE:
20562 				case SHUTDOWN:
20563 				case SCOPED:
20564 				case CONFIGURATION:
20565 				case DATASPACE:
20566 				case SERVICE:
20567 				case CERTIFICATE:
20568 				case CONTRACT:
20569 				case ENCRYPTION:
20570 				case MASTER:
20571 				case DATA:
20572 				case SOURCE:
20573 				case FILE:
20574 				case FORMAT:
20575 				case LIBRARY:
20576 				case FULLTEXT:
20577 				case MASK:
20578 				case UNMASK:
20579 				case MESSAGE:
20580 				case REMOTE:
20581 				case BINDING:
20582 				case ROUTE:
20583 				case SECURITY:
20584 				case POLICY:
20585 				case AGGREGATE:
20586 				case QUEUE:
20587 				case RULE:
20588 				case SYNONYM:
20589 				case COLLECTION:
20590 				case SCRIPT:
20591 				case KILL:
20592 				case BACKUP:
20593 				case LOG:
20594 				case SHOWPLAN:
20595 				case SUBSCRIBE:
20596 				case QUERY:
20597 				case NOTIFICATIONS:
20598 				case CHECKPOINT:
20599 				case SEQUENCE:
20600 				case ABORT_AFTER_WAIT:
20601 				case ALLOW_PAGE_LOCKS:
20602 				case ALLOW_ROW_LOCKS:
20603 				case ALL_SPARSE_COLUMNS:
20604 				case BUCKET_COUNT:
20605 				case COLUMNSTORE_ARCHIVE:
20606 				case COLUMN_ENCRYPTION_KEY:
20607 				case COLUMN_SET:
20608 				case COMPRESSION_DELAY:
20609 				case DATABASE_DEAULT:
20610 				case DATA_COMPRESSION:
20611 				case DATA_CONSISTENCY_CHECK:
20612 				case ENCRYPTION_TYPE:
20613 				case SYSTEM_TIME:
20614 				case SYSTEM_VERSIONING:
20615 				case TEXTIMAGE_ON:
20616 				case WAIT_AT_LOW_PRIORITY:
20617 				case STATISTICS_INCREMENTAL:
20618 				case STATISTICS_NORECOMPUTE:
20619 				case ROUND_ROBIN:
20620 				case SCHEMA_AND_DATA:
20621 				case SCHEMA_ONLY:
20622 				case SORT_IN_TEMPDB:
20623 				case IGNORE_DUP_KEY:
20624 				case IMPLICIT_TRANSACTIONS:
20625 				case MAX_DURATION:
20626 				case MEMORY_OPTIMIZED:
20627 				case MIGRATION_STATE:
20628 				case PAD_INDEX:
20629 				case REMOTE_DATA_ARCHIVE:
20630 				case FILESTREAM_ON:
20631 				case FILETABLE_COLLATE_FILENAME:
20632 				case FILETABLE_DIRECTORY:
20633 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
20634 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
20635 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
20636 				case FILTER_PREDICATE:
20637 				case HISTORY_RETENTION_PERIOD:
20638 				case HISTORY_TABLE:
20639 				case LOCK_ESCALATION:
20640 				case DROP_EXISTING:
20641 				case ROW_NUMBER:
20642 				case FIRST:
20643 				case DATETIME2:
20644 				case OUTPUT:
20645 				case INSERTED:
20646 				case DELETED:
20647 				case FILENAME:
20648 				case SIZE:
20649 				case MAXSIZE:
20650 				case FILEGROWTH:
20651 				case UNLIMITED:
20652 				case KB:
20653 				case MB:
20654 				case GB:
20655 				case TB:
20656 				case CONTAINS:
20657 				case MEMORY_OPTIMIZED_DATA:
20658 				case FILEGROUP:
20659 				case NON_TRANSACTED_ACCESS:
20660 				case DB_CHAINING:
20661 				case TRUSTWORTHY:
20662 				case FORWARD_ONLY:
20663 				case KEYSET:
20664 				case FAST_FORWARD:
20665 				case SCROLL_LOCKS:
20666 				case OPTIMISTIC:
20667 				case TYPE_WARNING:
20668 				case SCHEMABINDING:
20669 				case CALLER:
20670 				case INPUT:
20671 				case OWNER:
20672 				case SNAPSHOT:
20673 				case REPEATABLE:
20674 				case SERIALIZABLE:
20675 				case NATIVE_COMPILATION:
20676 				case VIEW_METADATA:
20677 				case INSTEAD:
20678 				case APPEND:
20679 				case INCREMENT:
20680 				case CACHE:
20681 				case MINVALUE:
20682 				case MAXVALUE:
20683 				case RESTART:
20684 				case LOB_COMPACTION:
20685 				case COMPRESS_ALL_ROW_GROUPS:
20686 				case REORGANIZE:
20687 				case RESUME:
20688 				case PAUSE:
20689 				case ABORT:
20690 				case ACCELERATED_DATABASE_RECOVERY:
20691 				case PERSISTENT_VERSION_STORE_FILEGROUP:
20692 				case IMMEDIATE:
20693 				case NO_WAIT:
20694 				case TARGET_RECOVERY_TIME:
20695 				case SECONDS:
20696 				case HONOR_BROKER_PRIORITY:
20697 				case ERROR_BROKER_CONVERSATIONS:
20698 				case NEW_BROKER:
20699 				case DISABLE_BROKER:
20700 				case ENABLE_BROKER:
20701 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
20702 				case READ_COMMITTED_SNAPSHOT:
20703 				case ALLOW_SNAPSHOT_ISOLATION:
20704 				case RECURSIVE_TRIGGERS:
20705 				case QUOTED_IDENTIFIER:
20706 				case NUMERIC_ROUNDABORT:
20707 				case CONCAT_NULL_YIELDS_NULL:
20708 				case COMPATIBILITY_LEVEL:
20709 				case ARITHABORT:
20710 				case ANSI_WARNINGS:
20711 				case ANSI_PADDING:
20712 				case ANSI_NULLS:
20713 				case ANSI_NULL_DEFAULT:
20714 				case PAGE_VERIFY:
20715 				case CHECKSUM:
20716 				case TORN_PAGE_DETECTION:
20717 				case BULK_LOGGED:
20718 				case RECOVERY:
20719 				case TOTAL_EXECUTION_CPU_TIME_MS:
20720 				case TOTAL_COMPILE_CPU_TIME_MS:
20721 				case STALE_CAPTURE_POLICY_THRESHOLD:
20722 				case EXECUTION_COUNT:
20723 				case QUERY_CAPTURE_POLICY:
20724 				case WAIT_STATS_CAPTURE_MODE:
20725 				case MAX_PLANS_PER_QUERY:
20726 				case QUERY_CAPTURE_MODE:
20727 				case SIZE_BASED_CLEANUP_MODE:
20728 				case INTERVAL_LENGTH_MINUTES:
20729 				case MAX_STORAGE_SIZE_MB:
20730 				case DATA_FLUSH_INTERVAL_SECONDS:
20731 				case CLEANUP_POLICY:
20732 				case CUSTOM:
20733 				case STALE_QUERY_THRESHOLD_DAYS:
20734 				case OPERATION_MODE:
20735 				case QUERY_STORE:
20736 				case CURSOR_DEFAULT:
20737 				case GLOBAL:
20738 				case CURSOR_CLOSE_ON_COMMIT:
20739 				case HOURS:
20740 				case CHANGE_RETENTION:
20741 				case AUTO_CLEANUP:
20742 				case CHANGE_TRACKING:
20743 				case AUTOMATIC_TUNING:
20744 				case FORCE_LAST_GOOD_PLAN:
20745 				case AUTO_UPDATE_STATISTICS_ASYNC:
20746 				case AUTO_UPDATE_STATISTICS:
20747 				case AUTO_SHRINK:
20748 				case AUTO_CREATE_STATISTICS:
20749 				case INCREMENTAL:
20750 				case AUTO_CLOSE:
20751 				case DATA_RETENTION:
20752 				case TEMPORAL_HISTORY_RETENTION:
20753 				case EDITION:
20754 				case MIXED_PAGE_ALLOCATION:
20755 				case DISABLED:
20756 				case ALLOWED:
20757 				case HADR:
20758 				case MULTI_USER:
20759 				case RESTRICTED_USER:
20760 				case SINGLE_USER:
20761 				case OFFLINE:
20762 				case EMERGENCY:
20763 				case SUSPEND:
20764 				case DATE_CORRELATION_OPTIMIZATION:
20765 				case ELASTIC_POOL:
20766 				case SERVICE_OBJECTIVE:
20767 				case DATABASE_NAME:
20768 				case ALLOW_CONNECTIONS:
20769 				case GEO:
20770 				case NAMED:
20771 				case DATEFIRST:
20772 				case BACKUP_STORAGE_REDUNDANCY:
20773 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
20774 				case SECONDARY:
20775 				case FAILOVER:
20776 				case DEFAULT_FULLTEXT_LANGUAGE:
20777 				case DEFAULT_LANGUAGE:
20778 				case INLINE:
20779 				case NESTED_TRIGGERS:
20780 				case TRANSFORM_NOISE_WORDS:
20781 				case TWO_DIGIT_YEAR_CUTOFF:
20782 				case PERSISTENT_LOG_BUFFER:
20783 				case DIRECTORY_NAME:
20784 				case DATEFORMAT:
20785 				case DELAYED_DURABILITY:
20786 				case AUTHORIZATION:
20787 				case TRANSFER:
20788 				case PROVIDER:
20789 				case SID:
20790 				case SEARCH:
20791 				case MEMBER:
20792 				case JSON:
20793 				case OPENJSON:
20794 				case OPENROWSET:
20795 				case TRY_CAST:
20796 				case TRY_CONVERT:
20797 				case IDENTIFIER_:
20798 				case DELIMITED_IDENTIFIER_:
20799 					{
20800 					setState(3072);
20801 					functionCall();
20802 					}
20803 					break;
20804 				default:
20805 					throw new NoViableAltException(this);
20806 				}
20807 				setState(3075);
20808 				match(COMMA_);
20809 				}
20810 			}
20811 
20812 			setState(3078);
20813 			match(MIGRATION_STATE);
20814 			setState(3079);
20815 			match(EQ_);
20816 			setState(3080);
20817 			_la = _input.LA(1);
20818 			if ( !(((((_la - 294)) & ~0x3f) == 0 && ((1L << (_la - 294)) & ((1L << (INBOUND - 294)) | (1L << (OUTBOUND - 294)) | (1L << (PAUSED - 294)))) != 0)) ) {
20819 			_errHandler.recoverInline(this);
20820 			}
20821 			else {
20822 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
20823 				_errHandler.reportMatch(this);
20824 				consume();
20825 			}
20826 			}
20827 		}
20828 		catch (RecognitionException re) {
20829 			_localctx.exception = re;
20830 			_errHandler.reportError(this, re);
20831 			_errHandler.recover(this, re);
20832 		}
20833 		finally {
20834 			exitRule();
20835 		}
20836 		return _localctx;
20837 	}
20838 
20839 	public static class MigrationState_Context extends ParserRuleContext {
20840 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
20841 		public TerminalNode MIGRATION_STATE() { return getToken(SQLServerStatementParser.MIGRATION_STATE, 0); }
20842 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
20843 		public TerminalNode PAUSED() { return getToken(SQLServerStatementParser.PAUSED, 0); }
20844 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
20845 		public MigrationState_Context(ParserRuleContext parent, int invokingState) {
20846 			super(parent, invokingState);
20847 		}
20848 		@Override public int getRuleIndex() { return RULE_migrationState_; }
20849 		@Override
20850 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20851 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMigrationState_(this);
20852 			else return visitor.visitChildren(this);
20853 		}
20854 	}
20855 
20856 	public final MigrationState_Context migrationState_() throws RecognitionException {
20857 		MigrationState_Context _localctx = new MigrationState_Context(_ctx, getState());
20858 		enterRule(_localctx, 436, RULE_migrationState_);
20859 		try {
20860 			enterOuterAlt(_localctx, 1);
20861 			{
20862 			setState(3082);
20863 			match(LP_);
20864 			setState(3083);
20865 			match(MIGRATION_STATE);
20866 			setState(3084);
20867 			match(EQ_);
20868 			setState(3085);
20869 			match(PAUSED);
20870 			setState(3086);
20871 			match(RP_);
20872 			}
20873 		}
20874 		catch (RecognitionException re) {
20875 			_localctx.exception = re;
20876 			_errHandler.reportError(this, re);
20877 			_errHandler.recover(this, re);
20878 		}
20879 		finally {
20880 			exitRule();
20881 		}
20882 		return _localctx;
20883 	}
20884 
20885 	public static class TableOperationOptionContext extends ParserRuleContext {
20886 		public TerminalNode MEMORY_OPTIMIZED() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED, 0); }
20887 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
20888 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
20889 		public TerminalNode DURABILITY() { return getToken(SQLServerStatementParser.DURABILITY, 0); }
20890 		public TerminalNode SCHEMA_ONLY() { return getToken(SQLServerStatementParser.SCHEMA_ONLY, 0); }
20891 		public TerminalNode SCHEMA_AND_DATA() { return getToken(SQLServerStatementParser.SCHEMA_AND_DATA, 0); }
20892 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
20893 		public OnHistoryTableClauseContext onHistoryTableClause() {
20894 			return getRuleContext(OnHistoryTableClauseContext.class,0);
20895 		}
20896 		public TableOperationOptionContext(ParserRuleContext parent, int invokingState) {
20897 			super(parent, invokingState);
20898 		}
20899 		@Override public int getRuleIndex() { return RULE_tableOperationOption; }
20900 		@Override
20901 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
20902 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableOperationOption(this);
20903 			else return visitor.visitChildren(this);
20904 		}
20905 	}
20906 
20907 	public final TableOperationOptionContext tableOperationOption() throws RecognitionException {
20908 		TableOperationOptionContext _localctx = new TableOperationOptionContext(_ctx, getState());
20909 		enterRule(_localctx, 438, RULE_tableOperationOption);
20910 		int _la;
20911 		try {
20912 			setState(3100);
20913 			_errHandler.sync(this);
20914 			switch (_input.LA(1)) {
20915 			case MEMORY_OPTIMIZED:
20916 				enterOuterAlt(_localctx, 1);
20917 				{
20918 				{
20919 				setState(3088);
20920 				match(MEMORY_OPTIMIZED);
20921 				setState(3089);
20922 				match(EQ_);
20923 				setState(3090);
20924 				match(ON);
20925 				}
20926 				}
20927 				break;
20928 			case DURABILITY:
20929 				enterOuterAlt(_localctx, 2);
20930 				{
20931 				{
20932 				setState(3091);
20933 				match(DURABILITY);
20934 				setState(3092);
20935 				match(EQ_);
20936 				setState(3093);
20937 				_la = _input.LA(1);
20938 				if ( !(_la==SCHEMA_AND_DATA || _la==SCHEMA_ONLY) ) {
20939 				_errHandler.recoverInline(this);
20940 				}
20941 				else {
20942 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
20943 					_errHandler.reportMatch(this);
20944 					consume();
20945 				}
20946 				}
20947 				}
20948 				break;
20949 			case SYSTEM_VERSIONING:
20950 				enterOuterAlt(_localctx, 3);
20951 				{
20952 				{
20953 				setState(3094);
20954 				match(SYSTEM_VERSIONING);
20955 				setState(3095);
20956 				match(EQ_);
20957 				setState(3096);
20958 				match(ON);
20959 				setState(3098);
20960 				_errHandler.sync(this);
20961 				_la = _input.LA(1);
20962 				if (_la==LP_) {
20963 					{
20964 					setState(3097);
20965 					onHistoryTableClause();
20966 					}
20967 				}
20968 
20969 				}
20970 				}
20971 				break;
20972 			default:
20973 				throw new NoViableAltException(this);
20974 			}
20975 		}
20976 		catch (RecognitionException re) {
20977 			_localctx.exception = re;
20978 			_errHandler.reportError(this, re);
20979 			_errHandler.recover(this, re);
20980 		}
20981 		finally {
20982 			exitRule();
20983 		}
20984 		return _localctx;
20985 	}
20986 
20987 	public static class DistributionOptionContext extends ParserRuleContext {
20988 		public TerminalNode DISTRIBUTION() { return getToken(SQLServerStatementParser.DISTRIBUTION, 0); }
20989 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
20990 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
20991 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
20992 		public ColumnNameContext columnName() {
20993 			return getRuleContext(ColumnNameContext.class,0);
20994 		}
20995 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
20996 		public TerminalNode ROUND_ROBIN() { return getToken(SQLServerStatementParser.ROUND_ROBIN, 0); }
20997 		public TerminalNode REPLICATE() { return getToken(SQLServerStatementParser.REPLICATE, 0); }
20998 		public DistributionOptionContext(ParserRuleContext parent, int invokingState) {
20999 			super(parent, invokingState);
21000 		}
21001 		@Override public int getRuleIndex() { return RULE_distributionOption; }
21002 		@Override
21003 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21004 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDistributionOption(this);
21005 			else return visitor.visitChildren(this);
21006 		}
21007 	}
21008 
21009 	public final DistributionOptionContext distributionOption() throws RecognitionException {
21010 		DistributionOptionContext _localctx = new DistributionOptionContext(_ctx, getState());
21011 		enterRule(_localctx, 440, RULE_distributionOption);
21012 		try {
21013 			enterOuterAlt(_localctx, 1);
21014 			{
21015 			setState(3102);
21016 			match(DISTRIBUTION);
21017 			setState(3103);
21018 			match(EQ_);
21019 			setState(3111);
21020 			_errHandler.sync(this);
21021 			switch (_input.LA(1)) {
21022 			case HASH:
21023 				{
21024 				setState(3104);
21025 				match(HASH);
21026 				setState(3105);
21027 				match(LP_);
21028 				setState(3106);
21029 				columnName();
21030 				setState(3107);
21031 				match(RP_);
21032 				}
21033 				break;
21034 			case ROUND_ROBIN:
21035 				{
21036 				setState(3109);
21037 				match(ROUND_ROBIN);
21038 				}
21039 				break;
21040 			case REPLICATE:
21041 				{
21042 				setState(3110);
21043 				match(REPLICATE);
21044 				}
21045 				break;
21046 			default:
21047 				throw new NoViableAltException(this);
21048 			}
21049 			}
21050 		}
21051 		catch (RecognitionException re) {
21052 			_localctx.exception = re;
21053 			_errHandler.reportError(this, re);
21054 			_errHandler.recover(this, re);
21055 		}
21056 		finally {
21057 			exitRule();
21058 		}
21059 		return _localctx;
21060 	}
21061 
21062 	public static class DataWareHouseTableOptionContext extends ParserRuleContext {
21063 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
21064 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
21065 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
21066 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
21067 		public ColumnNamesContext columnNames() {
21068 			return getRuleContext(ColumnNamesContext.class,0);
21069 		}
21070 		public TerminalNode HEAP() { return getToken(SQLServerStatementParser.HEAP, 0); }
21071 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
21072 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
21073 		public List<ColumnNameContext> columnName() {
21074 			return getRuleContexts(ColumnNameContext.class);
21075 		}
21076 		public ColumnNameContext columnName(int i) {
21077 			return getRuleContext(ColumnNameContext.class,i);
21078 		}
21079 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
21080 		public TerminalNode COMMA_(int i) {
21081 			return getToken(SQLServerStatementParser.COMMA_, i);
21082 		}
21083 		public List<TerminalNode> ASC() { return getTokens(SQLServerStatementParser.ASC); }
21084 		public TerminalNode ASC(int i) {
21085 			return getToken(SQLServerStatementParser.ASC, i);
21086 		}
21087 		public List<TerminalNode> DESC() { return getTokens(SQLServerStatementParser.DESC); }
21088 		public TerminalNode DESC(int i) {
21089 			return getToken(SQLServerStatementParser.DESC, i);
21090 		}
21091 		public DataWareHouseTableOptionContext(ParserRuleContext parent, int invokingState) {
21092 			super(parent, invokingState);
21093 		}
21094 		@Override public int getRuleIndex() { return RULE_dataWareHouseTableOption; }
21095 		@Override
21096 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21097 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataWareHouseTableOption(this);
21098 			else return visitor.visitChildren(this);
21099 		}
21100 	}
21101 
21102 	public final DataWareHouseTableOptionContext dataWareHouseTableOption() throws RecognitionException {
21103 		DataWareHouseTableOptionContext _localctx = new DataWareHouseTableOptionContext(_ctx, getState());
21104 		enterRule(_localctx, 442, RULE_dataWareHouseTableOption);
21105 		int _la;
21106 		try {
21107 			setState(3141);
21108 			_errHandler.sync(this);
21109 			switch ( getInterpreter().adaptivePredict(_input,274,_ctx) ) {
21110 			case 1:
21111 				enterOuterAlt(_localctx, 1);
21112 				{
21113 				setState(3113);
21114 				match(CLUSTERED);
21115 				setState(3114);
21116 				match(COLUMNSTORE);
21117 				setState(3115);
21118 				match(INDEX);
21119 				}
21120 				break;
21121 			case 2:
21122 				enterOuterAlt(_localctx, 2);
21123 				{
21124 				setState(3116);
21125 				match(CLUSTERED);
21126 				setState(3117);
21127 				match(COLUMNSTORE);
21128 				setState(3118);
21129 				match(INDEX);
21130 				setState(3119);
21131 				match(ORDER);
21132 				setState(3120);
21133 				columnNames();
21134 				}
21135 				break;
21136 			case 3:
21137 				enterOuterAlt(_localctx, 3);
21138 				{
21139 				setState(3121);
21140 				match(HEAP);
21141 				}
21142 				break;
21143 			case 4:
21144 				enterOuterAlt(_localctx, 4);
21145 				{
21146 				setState(3122);
21147 				match(CLUSTERED);
21148 				setState(3123);
21149 				match(INDEX);
21150 				setState(3124);
21151 				match(LP_);
21152 				{
21153 				setState(3125);
21154 				columnName();
21155 				setState(3127);
21156 				_errHandler.sync(this);
21157 				_la = _input.LA(1);
21158 				if (_la==ASC || _la==DESC) {
21159 					{
21160 					setState(3126);
21161 					_la = _input.LA(1);
21162 					if ( !(_la==ASC || _la==DESC) ) {
21163 					_errHandler.recoverInline(this);
21164 					}
21165 					else {
21166 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
21167 						_errHandler.reportMatch(this);
21168 						consume();
21169 					}
21170 					}
21171 				}
21172 
21173 				}
21174 				setState(3136);
21175 				_errHandler.sync(this);
21176 				_la = _input.LA(1);
21177 				while (_la==COMMA_) {
21178 					{
21179 					{
21180 					setState(3129);
21181 					match(COMMA_);
21182 					{
21183 					setState(3130);
21184 					columnName();
21185 					setState(3132);
21186 					_errHandler.sync(this);
21187 					_la = _input.LA(1);
21188 					if (_la==ASC || _la==DESC) {
21189 						{
21190 						setState(3131);
21191 						_la = _input.LA(1);
21192 						if ( !(_la==ASC || _la==DESC) ) {
21193 						_errHandler.recoverInline(this);
21194 						}
21195 						else {
21196 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
21197 							_errHandler.reportMatch(this);
21198 							consume();
21199 						}
21200 						}
21201 					}
21202 
21203 					}
21204 					}
21205 					}
21206 					setState(3138);
21207 					_errHandler.sync(this);
21208 					_la = _input.LA(1);
21209 				}
21210 				setState(3139);
21211 				match(RP_);
21212 				}
21213 				break;
21214 			}
21215 		}
21216 		catch (RecognitionException re) {
21217 			_localctx.exception = re;
21218 			_errHandler.reportError(this, re);
21219 			_errHandler.recover(this, re);
21220 		}
21221 		finally {
21222 			exitRule();
21223 		}
21224 		return _localctx;
21225 	}
21226 
21227 	public static class DataWareHousePartitionOptionContext extends ParserRuleContext {
21228 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
21229 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
21230 		public TerminalNode LP_(int i) {
21231 			return getToken(SQLServerStatementParser.LP_, i);
21232 		}
21233 		public ColumnNameContext columnName() {
21234 			return getRuleContext(ColumnNameContext.class,0);
21235 		}
21236 		public TerminalNode RANGE() { return getToken(SQLServerStatementParser.RANGE, 0); }
21237 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
21238 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
21239 		public List<SimpleExprContext> simpleExpr() {
21240 			return getRuleContexts(SimpleExprContext.class);
21241 		}
21242 		public SimpleExprContext simpleExpr(int i) {
21243 			return getRuleContext(SimpleExprContext.class,i);
21244 		}
21245 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
21246 		public TerminalNode RP_(int i) {
21247 			return getToken(SQLServerStatementParser.RP_, i);
21248 		}
21249 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
21250 		public TerminalNode COMMA_(int i) {
21251 			return getToken(SQLServerStatementParser.COMMA_, i);
21252 		}
21253 		public TerminalNode LEFT() { return getToken(SQLServerStatementParser.LEFT, 0); }
21254 		public TerminalNode RIGHT() { return getToken(SQLServerStatementParser.RIGHT, 0); }
21255 		public DataWareHousePartitionOptionContext(ParserRuleContext parent, int invokingState) {
21256 			super(parent, invokingState);
21257 		}
21258 		@Override public int getRuleIndex() { return RULE_dataWareHousePartitionOption; }
21259 		@Override
21260 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21261 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataWareHousePartitionOption(this);
21262 			else return visitor.visitChildren(this);
21263 		}
21264 	}
21265 
21266 	public final DataWareHousePartitionOptionContext dataWareHousePartitionOption() throws RecognitionException {
21267 		DataWareHousePartitionOptionContext _localctx = new DataWareHousePartitionOptionContext(_ctx, getState());
21268 		enterRule(_localctx, 444, RULE_dataWareHousePartitionOption);
21269 		int _la;
21270 		try {
21271 			enterOuterAlt(_localctx, 1);
21272 			{
21273 			{
21274 			setState(3143);
21275 			match(PARTITION);
21276 			setState(3144);
21277 			match(LP_);
21278 			setState(3145);
21279 			columnName();
21280 			setState(3146);
21281 			match(RANGE);
21282 			setState(3148);
21283 			_errHandler.sync(this);
21284 			_la = _input.LA(1);
21285 			if (_la==LEFT || _la==RIGHT) {
21286 				{
21287 				setState(3147);
21288 				_la = _input.LA(1);
21289 				if ( !(_la==LEFT || _la==RIGHT) ) {
21290 				_errHandler.recoverInline(this);
21291 				}
21292 				else {
21293 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
21294 					_errHandler.reportMatch(this);
21295 					consume();
21296 				}
21297 				}
21298 			}
21299 
21300 			setState(3150);
21301 			match(FOR);
21302 			setState(3151);
21303 			match(VALUES);
21304 			setState(3152);
21305 			match(LP_);
21306 			setState(3153);
21307 			simpleExpr(0);
21308 			setState(3158);
21309 			_errHandler.sync(this);
21310 			_la = _input.LA(1);
21311 			while (_la==COMMA_) {
21312 				{
21313 				{
21314 				setState(3154);
21315 				match(COMMA_);
21316 				setState(3155);
21317 				simpleExpr(0);
21318 				}
21319 				}
21320 				setState(3160);
21321 				_errHandler.sync(this);
21322 				_la = _input.LA(1);
21323 			}
21324 			setState(3161);
21325 			match(RP_);
21326 			setState(3162);
21327 			match(RP_);
21328 			}
21329 			}
21330 		}
21331 		catch (RecognitionException re) {
21332 			_localctx.exception = re;
21333 			_errHandler.reportError(this, re);
21334 			_errHandler.recover(this, re);
21335 		}
21336 		finally {
21337 			exitRule();
21338 		}
21339 		return _localctx;
21340 	}
21341 
21342 	public static class CreateIndexSpecificationContext extends ParserRuleContext {
21343 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
21344 		public ClusterOptionContext clusterOption() {
21345 			return getRuleContext(ClusterOptionContext.class,0);
21346 		}
21347 		public CreateIndexSpecificationContext(ParserRuleContext parent, int invokingState) {
21348 			super(parent, invokingState);
21349 		}
21350 		@Override public int getRuleIndex() { return RULE_createIndexSpecification; }
21351 		@Override
21352 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21353 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateIndexSpecification(this);
21354 			else return visitor.visitChildren(this);
21355 		}
21356 	}
21357 
21358 	public final CreateIndexSpecificationContext createIndexSpecification() throws RecognitionException {
21359 		CreateIndexSpecificationContext _localctx = new CreateIndexSpecificationContext(_ctx, getState());
21360 		enterRule(_localctx, 446, RULE_createIndexSpecification);
21361 		int _la;
21362 		try {
21363 			enterOuterAlt(_localctx, 1);
21364 			{
21365 			setState(3165);
21366 			_errHandler.sync(this);
21367 			_la = _input.LA(1);
21368 			if (_la==UNIQUE) {
21369 				{
21370 				setState(3164);
21371 				match(UNIQUE);
21372 				}
21373 			}
21374 
21375 			setState(3168);
21376 			_errHandler.sync(this);
21377 			_la = _input.LA(1);
21378 			if (_la==CLUSTERED || _la==NONCLUSTERED) {
21379 				{
21380 				setState(3167);
21381 				clusterOption();
21382 				}
21383 			}
21384 
21385 			}
21386 		}
21387 		catch (RecognitionException re) {
21388 			_localctx.exception = re;
21389 			_errHandler.reportError(this, re);
21390 			_errHandler.recover(this, re);
21391 		}
21392 		finally {
21393 			exitRule();
21394 		}
21395 		return _localctx;
21396 	}
21397 
21398 	public static class AlterDefinitionClauseContext extends ParserRuleContext {
21399 		public AddColumnSpecificationContext addColumnSpecification() {
21400 			return getRuleContext(AddColumnSpecificationContext.class,0);
21401 		}
21402 		public ModifyColumnSpecificationContext modifyColumnSpecification() {
21403 			return getRuleContext(ModifyColumnSpecificationContext.class,0);
21404 		}
21405 		public AlterDropContext alterDrop() {
21406 			return getRuleContext(AlterDropContext.class,0);
21407 		}
21408 		public AlterCheckConstraintContext alterCheckConstraint() {
21409 			return getRuleContext(AlterCheckConstraintContext.class,0);
21410 		}
21411 		public AlterTableTriggerContext alterTableTrigger() {
21412 			return getRuleContext(AlterTableTriggerContext.class,0);
21413 		}
21414 		public AlterSwitchContext alterSwitch() {
21415 			return getRuleContext(AlterSwitchContext.class,0);
21416 		}
21417 		public AlterSetContext alterSet() {
21418 			return getRuleContext(AlterSetContext.class,0);
21419 		}
21420 		public AlterTableOptionContext alterTableOption() {
21421 			return getRuleContext(AlterTableOptionContext.class,0);
21422 		}
21423 		public TerminalNode REBUILD() { return getToken(SQLServerStatementParser.REBUILD, 0); }
21424 		public AlterDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
21425 			super(parent, invokingState);
21426 		}
21427 		@Override public int getRuleIndex() { return RULE_alterDefinitionClause; }
21428 		@Override
21429 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21430 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDefinitionClause(this);
21431 			else return visitor.visitChildren(this);
21432 		}
21433 	}
21434 
21435 	public final AlterDefinitionClauseContext alterDefinitionClause() throws RecognitionException {
21436 		AlterDefinitionClauseContext _localctx = new AlterDefinitionClauseContext(_ctx, getState());
21437 		enterRule(_localctx, 448, RULE_alterDefinitionClause);
21438 		try {
21439 			setState(3179);
21440 			_errHandler.sync(this);
21441 			switch ( getInterpreter().adaptivePredict(_input,279,_ctx) ) {
21442 			case 1:
21443 				enterOuterAlt(_localctx, 1);
21444 				{
21445 				setState(3170);
21446 				addColumnSpecification();
21447 				}
21448 				break;
21449 			case 2:
21450 				enterOuterAlt(_localctx, 2);
21451 				{
21452 				setState(3171);
21453 				modifyColumnSpecification();
21454 				}
21455 				break;
21456 			case 3:
21457 				enterOuterAlt(_localctx, 3);
21458 				{
21459 				setState(3172);
21460 				alterDrop();
21461 				}
21462 				break;
21463 			case 4:
21464 				enterOuterAlt(_localctx, 4);
21465 				{
21466 				setState(3173);
21467 				alterCheckConstraint();
21468 				}
21469 				break;
21470 			case 5:
21471 				enterOuterAlt(_localctx, 5);
21472 				{
21473 				setState(3174);
21474 				alterTableTrigger();
21475 				}
21476 				break;
21477 			case 6:
21478 				enterOuterAlt(_localctx, 6);
21479 				{
21480 				setState(3175);
21481 				alterSwitch();
21482 				}
21483 				break;
21484 			case 7:
21485 				enterOuterAlt(_localctx, 7);
21486 				{
21487 				setState(3176);
21488 				alterSet();
21489 				}
21490 				break;
21491 			case 8:
21492 				enterOuterAlt(_localctx, 8);
21493 				{
21494 				setState(3177);
21495 				alterTableOption();
21496 				}
21497 				break;
21498 			case 9:
21499 				enterOuterAlt(_localctx, 9);
21500 				{
21501 				setState(3178);
21502 				match(REBUILD);
21503 				}
21504 				break;
21505 			}
21506 		}
21507 		catch (RecognitionException re) {
21508 			_localctx.exception = re;
21509 			_errHandler.reportError(this, re);
21510 			_errHandler.recover(this, re);
21511 		}
21512 		finally {
21513 			exitRule();
21514 		}
21515 		return _localctx;
21516 	}
21517 
21518 	public static class AddColumnSpecificationContext extends ParserRuleContext {
21519 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
21520 		public AlterColumnAddOptionsContext alterColumnAddOptions() {
21521 			return getRuleContext(AlterColumnAddOptionsContext.class,0);
21522 		}
21523 		public GeneratedColumnNamesClauseContext generatedColumnNamesClause() {
21524 			return getRuleContext(GeneratedColumnNamesClauseContext.class,0);
21525 		}
21526 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
21527 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
21528 		public TerminalNode NOCHECK() { return getToken(SQLServerStatementParser.NOCHECK, 0); }
21529 		public AddColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
21530 			super(parent, invokingState);
21531 		}
21532 		@Override public int getRuleIndex() { return RULE_addColumnSpecification; }
21533 		@Override
21534 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21535 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddColumnSpecification(this);
21536 			else return visitor.visitChildren(this);
21537 		}
21538 	}
21539 
21540 	public final AddColumnSpecificationContext addColumnSpecification() throws RecognitionException {
21541 		AddColumnSpecificationContext _localctx = new AddColumnSpecificationContext(_ctx, getState());
21542 		enterRule(_localctx, 450, RULE_addColumnSpecification);
21543 		int _la;
21544 		try {
21545 			enterOuterAlt(_localctx, 1);
21546 			{
21547 			setState(3183);
21548 			_errHandler.sync(this);
21549 			_la = _input.LA(1);
21550 			if (_la==WITH) {
21551 				{
21552 				setState(3181);
21553 				match(WITH);
21554 				setState(3182);
21555 				_la = _input.LA(1);
21556 				if ( !(_la==CHECK || _la==NOCHECK) ) {
21557 				_errHandler.recoverInline(this);
21558 				}
21559 				else {
21560 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
21561 					_errHandler.reportMatch(this);
21562 					consume();
21563 				}
21564 				}
21565 			}
21566 
21567 			setState(3185);
21568 			match(ADD);
21569 			setState(3188);
21570 			_errHandler.sync(this);
21571 			switch ( getInterpreter().adaptivePredict(_input,281,_ctx) ) {
21572 			case 1:
21573 				{
21574 				setState(3186);
21575 				alterColumnAddOptions();
21576 				}
21577 				break;
21578 			case 2:
21579 				{
21580 				setState(3187);
21581 				generatedColumnNamesClause();
21582 				}
21583 				break;
21584 			}
21585 			}
21586 		}
21587 		catch (RecognitionException re) {
21588 			_localctx.exception = re;
21589 			_errHandler.reportError(this, re);
21590 			_errHandler.recover(this, re);
21591 		}
21592 		finally {
21593 			exitRule();
21594 		}
21595 		return _localctx;
21596 	}
21597 
21598 	public static class ModifyColumnSpecificationContext extends ParserRuleContext {
21599 		public AlterColumnOperationContext alterColumnOperation() {
21600 			return getRuleContext(AlterColumnOperationContext.class,0);
21601 		}
21602 		public DataTypeContext dataType() {
21603 			return getRuleContext(DataTypeContext.class,0);
21604 		}
21605 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
21606 		public CollationNameContext collationName() {
21607 			return getRuleContext(CollationNameContext.class,0);
21608 		}
21609 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
21610 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
21611 		public TerminalNode SPARSE() { return getToken(SQLServerStatementParser.SPARSE, 0); }
21612 		public ModifyColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
21613 			super(parent, invokingState);
21614 		}
21615 		@Override public int getRuleIndex() { return RULE_modifyColumnSpecification; }
21616 		@Override
21617 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21618 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitModifyColumnSpecification(this);
21619 			else return visitor.visitChildren(this);
21620 		}
21621 	}
21622 
21623 	public final ModifyColumnSpecificationContext modifyColumnSpecification() throws RecognitionException {
21624 		ModifyColumnSpecificationContext _localctx = new ModifyColumnSpecificationContext(_ctx, getState());
21625 		enterRule(_localctx, 452, RULE_modifyColumnSpecification);
21626 		int _la;
21627 		try {
21628 			enterOuterAlt(_localctx, 1);
21629 			{
21630 			setState(3190);
21631 			alterColumnOperation();
21632 			setState(3191);
21633 			dataType();
21634 			setState(3194);
21635 			_errHandler.sync(this);
21636 			_la = _input.LA(1);
21637 			if (_la==COLLATE) {
21638 				{
21639 				setState(3192);
21640 				match(COLLATE);
21641 				setState(3193);
21642 				collationName();
21643 				}
21644 			}
21645 
21646 			setState(3199);
21647 			_errHandler.sync(this);
21648 			switch (_input.LA(1)) {
21649 			case NULL:
21650 				{
21651 				setState(3196);
21652 				match(NULL);
21653 				}
21654 				break;
21655 			case NOT:
21656 				{
21657 				setState(3197);
21658 				match(NOT);
21659 				setState(3198);
21660 				match(NULL);
21661 				}
21662 				break;
21663 			case EOF:
21664 			case COMMA_:
21665 			case SEMI_:
21666 			case SELECT:
21667 			case INSERT:
21668 			case UPDATE:
21669 			case DELETE:
21670 			case CREATE:
21671 			case ALTER:
21672 			case DROP:
21673 			case TRUNCATE:
21674 			case SET:
21675 			case WITH:
21676 			case DECLARE:
21677 			case RETURN:
21678 			case END:
21679 			case SPARSE:
21680 				break;
21681 			default:
21682 				break;
21683 			}
21684 			setState(3202);
21685 			_errHandler.sync(this);
21686 			_la = _input.LA(1);
21687 			if (_la==SPARSE) {
21688 				{
21689 				setState(3201);
21690 				match(SPARSE);
21691 				}
21692 			}
21693 
21694 			}
21695 		}
21696 		catch (RecognitionException re) {
21697 			_localctx.exception = re;
21698 			_errHandler.reportError(this, re);
21699 			_errHandler.recover(this, re);
21700 		}
21701 		finally {
21702 			exitRule();
21703 		}
21704 		return _localctx;
21705 	}
21706 
21707 	public static class AlterColumnOperationContext extends ParserRuleContext {
21708 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
21709 		public TerminalNode COLUMN() { return getToken(SQLServerStatementParser.COLUMN, 0); }
21710 		public ColumnNameContext columnName() {
21711 			return getRuleContext(ColumnNameContext.class,0);
21712 		}
21713 		public AlterColumnOperationContext(ParserRuleContext parent, int invokingState) {
21714 			super(parent, invokingState);
21715 		}
21716 		@Override public int getRuleIndex() { return RULE_alterColumnOperation; }
21717 		@Override
21718 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21719 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterColumnOperation(this);
21720 			else return visitor.visitChildren(this);
21721 		}
21722 	}
21723 
21724 	public final AlterColumnOperationContext alterColumnOperation() throws RecognitionException {
21725 		AlterColumnOperationContext _localctx = new AlterColumnOperationContext(_ctx, getState());
21726 		enterRule(_localctx, 454, RULE_alterColumnOperation);
21727 		try {
21728 			enterOuterAlt(_localctx, 1);
21729 			{
21730 			setState(3204);
21731 			match(ALTER);
21732 			setState(3205);
21733 			match(COLUMN);
21734 			setState(3206);
21735 			columnName();
21736 			}
21737 		}
21738 		catch (RecognitionException re) {
21739 			_localctx.exception = re;
21740 			_errHandler.reportError(this, re);
21741 			_errHandler.recover(this, re);
21742 		}
21743 		finally {
21744 			exitRule();
21745 		}
21746 		return _localctx;
21747 	}
21748 
21749 	public static class AlterColumnAddOptionsContext extends ParserRuleContext {
21750 		public List<AlterColumnAddOptionContext> alterColumnAddOption() {
21751 			return getRuleContexts(AlterColumnAddOptionContext.class);
21752 		}
21753 		public AlterColumnAddOptionContext alterColumnAddOption(int i) {
21754 			return getRuleContext(AlterColumnAddOptionContext.class,i);
21755 		}
21756 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
21757 		public TerminalNode COMMA_(int i) {
21758 			return getToken(SQLServerStatementParser.COMMA_, i);
21759 		}
21760 		public AlterColumnAddOptionsContext(ParserRuleContext parent, int invokingState) {
21761 			super(parent, invokingState);
21762 		}
21763 		@Override public int getRuleIndex() { return RULE_alterColumnAddOptions; }
21764 		@Override
21765 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21766 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterColumnAddOptions(this);
21767 			else return visitor.visitChildren(this);
21768 		}
21769 	}
21770 
21771 	public final AlterColumnAddOptionsContext alterColumnAddOptions() throws RecognitionException {
21772 		AlterColumnAddOptionsContext _localctx = new AlterColumnAddOptionsContext(_ctx, getState());
21773 		enterRule(_localctx, 456, RULE_alterColumnAddOptions);
21774 		try {
21775 			int _alt;
21776 			enterOuterAlt(_localctx, 1);
21777 			{
21778 			setState(3208);
21779 			alterColumnAddOption();
21780 			setState(3213);
21781 			_errHandler.sync(this);
21782 			_alt = getInterpreter().adaptivePredict(_input,285,_ctx);
21783 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
21784 				if ( _alt==1 ) {
21785 					{
21786 					{
21787 					setState(3209);
21788 					match(COMMA_);
21789 					setState(3210);
21790 					alterColumnAddOption();
21791 					}
21792 					} 
21793 				}
21794 				setState(3215);
21795 				_errHandler.sync(this);
21796 				_alt = getInterpreter().adaptivePredict(_input,285,_ctx);
21797 			}
21798 			}
21799 		}
21800 		catch (RecognitionException re) {
21801 			_localctx.exception = re;
21802 			_errHandler.reportError(this, re);
21803 			_errHandler.recover(this, re);
21804 		}
21805 		finally {
21806 			exitRule();
21807 		}
21808 		return _localctx;
21809 	}
21810 
21811 	public static class AlterColumnAddOptionContext extends ParserRuleContext {
21812 		public ColumnDefinitionContext columnDefinition() {
21813 			return getRuleContext(ColumnDefinitionContext.class,0);
21814 		}
21815 		public ComputedColumnDefinitionContext computedColumnDefinition() {
21816 			return getRuleContext(ComputedColumnDefinitionContext.class,0);
21817 		}
21818 		public ColumnSetDefinitionContext columnSetDefinition() {
21819 			return getRuleContext(ColumnSetDefinitionContext.class,0);
21820 		}
21821 		public TableConstraintContext tableConstraint() {
21822 			return getRuleContext(TableConstraintContext.class,0);
21823 		}
21824 		public AlterTableTableIndexContext alterTableTableIndex() {
21825 			return getRuleContext(AlterTableTableIndexContext.class,0);
21826 		}
21827 		public ConstraintForColumnContext constraintForColumn() {
21828 			return getRuleContext(ConstraintForColumnContext.class,0);
21829 		}
21830 		public AlterColumnAddOptionContext(ParserRuleContext parent, int invokingState) {
21831 			super(parent, invokingState);
21832 		}
21833 		@Override public int getRuleIndex() { return RULE_alterColumnAddOption; }
21834 		@Override
21835 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21836 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterColumnAddOption(this);
21837 			else return visitor.visitChildren(this);
21838 		}
21839 	}
21840 
21841 	public final AlterColumnAddOptionContext alterColumnAddOption() throws RecognitionException {
21842 		AlterColumnAddOptionContext _localctx = new AlterColumnAddOptionContext(_ctx, getState());
21843 		enterRule(_localctx, 458, RULE_alterColumnAddOption);
21844 		try {
21845 			setState(3222);
21846 			_errHandler.sync(this);
21847 			switch ( getInterpreter().adaptivePredict(_input,286,_ctx) ) {
21848 			case 1:
21849 				enterOuterAlt(_localctx, 1);
21850 				{
21851 				setState(3216);
21852 				columnDefinition();
21853 				}
21854 				break;
21855 			case 2:
21856 				enterOuterAlt(_localctx, 2);
21857 				{
21858 				setState(3217);
21859 				computedColumnDefinition();
21860 				}
21861 				break;
21862 			case 3:
21863 				enterOuterAlt(_localctx, 3);
21864 				{
21865 				setState(3218);
21866 				columnSetDefinition();
21867 				}
21868 				break;
21869 			case 4:
21870 				enterOuterAlt(_localctx, 4);
21871 				{
21872 				setState(3219);
21873 				tableConstraint();
21874 				}
21875 				break;
21876 			case 5:
21877 				enterOuterAlt(_localctx, 5);
21878 				{
21879 				setState(3220);
21880 				alterTableTableIndex();
21881 				}
21882 				break;
21883 			case 6:
21884 				enterOuterAlt(_localctx, 6);
21885 				{
21886 				setState(3221);
21887 				constraintForColumn();
21888 				}
21889 				break;
21890 			}
21891 		}
21892 		catch (RecognitionException re) {
21893 			_localctx.exception = re;
21894 			_errHandler.reportError(this, re);
21895 			_errHandler.recover(this, re);
21896 		}
21897 		finally {
21898 			exitRule();
21899 		}
21900 		return _localctx;
21901 	}
21902 
21903 	public static class ConstraintForColumnContext extends ParserRuleContext {
21904 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
21905 		public SimpleExprContext simpleExpr() {
21906 			return getRuleContext(SimpleExprContext.class,0);
21907 		}
21908 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
21909 		public ColumnNameContext columnName() {
21910 			return getRuleContext(ColumnNameContext.class,0);
21911 		}
21912 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
21913 		public ConstraintNameContext constraintName() {
21914 			return getRuleContext(ConstraintNameContext.class,0);
21915 		}
21916 		public ConstraintForColumnContext(ParserRuleContext parent, int invokingState) {
21917 			super(parent, invokingState);
21918 		}
21919 		@Override public int getRuleIndex() { return RULE_constraintForColumn; }
21920 		@Override
21921 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21922 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConstraintForColumn(this);
21923 			else return visitor.visitChildren(this);
21924 		}
21925 	}
21926 
21927 	public final ConstraintForColumnContext constraintForColumn() throws RecognitionException {
21928 		ConstraintForColumnContext _localctx = new ConstraintForColumnContext(_ctx, getState());
21929 		enterRule(_localctx, 460, RULE_constraintForColumn);
21930 		int _la;
21931 		try {
21932 			enterOuterAlt(_localctx, 1);
21933 			{
21934 			setState(3226);
21935 			_errHandler.sync(this);
21936 			_la = _input.LA(1);
21937 			if (_la==CONSTRAINT) {
21938 				{
21939 				setState(3224);
21940 				match(CONSTRAINT);
21941 				setState(3225);
21942 				constraintName();
21943 				}
21944 			}
21945 
21946 			setState(3228);
21947 			match(DEFAULT);
21948 			setState(3229);
21949 			simpleExpr(0);
21950 			setState(3230);
21951 			match(FOR);
21952 			setState(3231);
21953 			columnName();
21954 			}
21955 		}
21956 		catch (RecognitionException re) {
21957 			_localctx.exception = re;
21958 			_errHandler.reportError(this, re);
21959 			_errHandler.recover(this, re);
21960 		}
21961 		finally {
21962 			exitRule();
21963 		}
21964 		return _localctx;
21965 	}
21966 
21967 	public static class GeneratedColumnNamesClauseContext extends ParserRuleContext {
21968 		public GeneratedColumnNameClauseContext generatedColumnNameClause() {
21969 			return getRuleContext(GeneratedColumnNameClauseContext.class,0);
21970 		}
21971 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
21972 		public PeriodClauseContext periodClause() {
21973 			return getRuleContext(PeriodClauseContext.class,0);
21974 		}
21975 		public GeneratedColumnNamesClauseContext(ParserRuleContext parent, int invokingState) {
21976 			super(parent, invokingState);
21977 		}
21978 		@Override public int getRuleIndex() { return RULE_generatedColumnNamesClause; }
21979 		@Override
21980 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
21981 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGeneratedColumnNamesClause(this);
21982 			else return visitor.visitChildren(this);
21983 		}
21984 	}
21985 
21986 	public final GeneratedColumnNamesClauseContext generatedColumnNamesClause() throws RecognitionException {
21987 		GeneratedColumnNamesClauseContext _localctx = new GeneratedColumnNamesClauseContext(_ctx, getState());
21988 		enterRule(_localctx, 462, RULE_generatedColumnNamesClause);
21989 		try {
21990 			setState(3241);
21991 			_errHandler.sync(this);
21992 			switch ( getInterpreter().adaptivePredict(_input,288,_ctx) ) {
21993 			case 1:
21994 				enterOuterAlt(_localctx, 1);
21995 				{
21996 				setState(3233);
21997 				generatedColumnNameClause();
21998 				setState(3234);
21999 				match(COMMA_);
22000 				setState(3235);
22001 				periodClause();
22002 				}
22003 				break;
22004 			case 2:
22005 				enterOuterAlt(_localctx, 2);
22006 				{
22007 				setState(3237);
22008 				periodClause();
22009 				setState(3238);
22010 				match(COMMA_);
22011 				setState(3239);
22012 				generatedColumnNameClause();
22013 				}
22014 				break;
22015 			}
22016 		}
22017 		catch (RecognitionException re) {
22018 			_localctx.exception = re;
22019 			_errHandler.reportError(this, re);
22020 			_errHandler.recover(this, re);
22021 		}
22022 		finally {
22023 			exitRule();
22024 		}
22025 		return _localctx;
22026 	}
22027 
22028 	public static class GeneratedColumnNameClauseContext extends ParserRuleContext {
22029 		public List<GeneratedColumnNameContext> generatedColumnName() {
22030 			return getRuleContexts(GeneratedColumnNameContext.class);
22031 		}
22032 		public GeneratedColumnNameContext generatedColumnName(int i) {
22033 			return getRuleContext(GeneratedColumnNameContext.class,i);
22034 		}
22035 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
22036 		public SimpleExprContext simpleExpr() {
22037 			return getRuleContext(SimpleExprContext.class,0);
22038 		}
22039 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
22040 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
22041 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
22042 		public GeneratedColumnNameClauseContext(ParserRuleContext parent, int invokingState) {
22043 			super(parent, invokingState);
22044 		}
22045 		@Override public int getRuleIndex() { return RULE_generatedColumnNameClause; }
22046 		@Override
22047 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22048 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGeneratedColumnNameClause(this);
22049 			else return visitor.visitChildren(this);
22050 		}
22051 	}
22052 
22053 	public final GeneratedColumnNameClauseContext generatedColumnNameClause() throws RecognitionException {
22054 		GeneratedColumnNameClauseContext _localctx = new GeneratedColumnNameClauseContext(_ctx, getState());
22055 		enterRule(_localctx, 464, RULE_generatedColumnNameClause);
22056 		int _la;
22057 		try {
22058 			enterOuterAlt(_localctx, 1);
22059 			{
22060 			setState(3243);
22061 			generatedColumnName();
22062 			setState(3244);
22063 			match(DEFAULT);
22064 			setState(3245);
22065 			simpleExpr(0);
22066 			setState(3248);
22067 			_errHandler.sync(this);
22068 			_la = _input.LA(1);
22069 			if (_la==WITH) {
22070 				{
22071 				setState(3246);
22072 				match(WITH);
22073 				setState(3247);
22074 				match(VALUES);
22075 				}
22076 			}
22077 
22078 			setState(3250);
22079 			match(COMMA_);
22080 			setState(3251);
22081 			generatedColumnName();
22082 			}
22083 		}
22084 		catch (RecognitionException re) {
22085 			_localctx.exception = re;
22086 			_errHandler.reportError(this, re);
22087 			_errHandler.recover(this, re);
22088 		}
22089 		finally {
22090 			exitRule();
22091 		}
22092 		return _localctx;
22093 	}
22094 
22095 	public static class GeneratedColumnNameContext extends ParserRuleContext {
22096 		public ColumnNameContext columnName() {
22097 			return getRuleContext(ColumnNameContext.class,0);
22098 		}
22099 		public DataTypeNameContext dataTypeName() {
22100 			return getRuleContext(DataTypeNameContext.class,0);
22101 		}
22102 		public TerminalNode GENERATED() { return getToken(SQLServerStatementParser.GENERATED, 0); }
22103 		public TerminalNode ALWAYS() { return getToken(SQLServerStatementParser.ALWAYS, 0); }
22104 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
22105 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
22106 		public TerminalNode HIDDEN_() { return getToken(SQLServerStatementParser.HIDDEN_, 0); }
22107 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
22108 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
22109 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
22110 		public IgnoredIdentifierContext ignoredIdentifier() {
22111 			return getRuleContext(IgnoredIdentifierContext.class,0);
22112 		}
22113 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
22114 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
22115 		public GeneratedColumnNameContext(ParserRuleContext parent, int invokingState) {
22116 			super(parent, invokingState);
22117 		}
22118 		@Override public int getRuleIndex() { return RULE_generatedColumnName; }
22119 		@Override
22120 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22121 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGeneratedColumnName(this);
22122 			else return visitor.visitChildren(this);
22123 		}
22124 	}
22125 
22126 	public final GeneratedColumnNameContext generatedColumnName() throws RecognitionException {
22127 		GeneratedColumnNameContext _localctx = new GeneratedColumnNameContext(_ctx, getState());
22128 		enterRule(_localctx, 466, RULE_generatedColumnName);
22129 		int _la;
22130 		try {
22131 			enterOuterAlt(_localctx, 1);
22132 			{
22133 			setState(3253);
22134 			columnName();
22135 			setState(3254);
22136 			dataTypeName();
22137 			setState(3255);
22138 			match(GENERATED);
22139 			setState(3256);
22140 			match(ALWAYS);
22141 			setState(3257);
22142 			match(AS);
22143 			setState(3258);
22144 			match(ROW);
22145 			setState(3260);
22146 			_errHandler.sync(this);
22147 			switch ( getInterpreter().adaptivePredict(_input,290,_ctx) ) {
22148 			case 1:
22149 				{
22150 				setState(3259);
22151 				_la = _input.LA(1);
22152 				if ( !(_la==START || _la==END) ) {
22153 				_errHandler.recoverInline(this);
22154 				}
22155 				else {
22156 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22157 					_errHandler.reportMatch(this);
22158 					consume();
22159 				}
22160 				}
22161 				break;
22162 			}
22163 			setState(3263);
22164 			_errHandler.sync(this);
22165 			_la = _input.LA(1);
22166 			if (_la==HIDDEN_) {
22167 				{
22168 				setState(3262);
22169 				match(HIDDEN_);
22170 				}
22171 			}
22172 
22173 			setState(3267);
22174 			_errHandler.sync(this);
22175 			_la = _input.LA(1);
22176 			if (_la==NOT) {
22177 				{
22178 				setState(3265);
22179 				match(NOT);
22180 				setState(3266);
22181 				match(NULL);
22182 				}
22183 			}
22184 
22185 			setState(3271);
22186 			_errHandler.sync(this);
22187 			_la = _input.LA(1);
22188 			if (_la==CONSTRAINT) {
22189 				{
22190 				setState(3269);
22191 				match(CONSTRAINT);
22192 				setState(3270);
22193 				ignoredIdentifier();
22194 				}
22195 			}
22196 
22197 			}
22198 		}
22199 		catch (RecognitionException re) {
22200 			_localctx.exception = re;
22201 			_errHandler.reportError(this, re);
22202 			_errHandler.recover(this, re);
22203 		}
22204 		finally {
22205 			exitRule();
22206 		}
22207 		return _localctx;
22208 	}
22209 
22210 	public static class AlterDropContext extends ParserRuleContext {
22211 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
22212 		public AlterTableDropConstraintContext alterTableDropConstraint() {
22213 			return getRuleContext(AlterTableDropConstraintContext.class,0);
22214 		}
22215 		public DropColumnSpecificationContext dropColumnSpecification() {
22216 			return getRuleContext(DropColumnSpecificationContext.class,0);
22217 		}
22218 		public DropIndexSpecificationContext dropIndexSpecification() {
22219 			return getRuleContext(DropIndexSpecificationContext.class,0);
22220 		}
22221 		public TerminalNode PERIOD() { return getToken(SQLServerStatementParser.PERIOD, 0); }
22222 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
22223 		public TerminalNode SYSTEM_TIME() { return getToken(SQLServerStatementParser.SYSTEM_TIME, 0); }
22224 		public AlterDropContext(ParserRuleContext parent, int invokingState) {
22225 			super(parent, invokingState);
22226 		}
22227 		@Override public int getRuleIndex() { return RULE_alterDrop; }
22228 		@Override
22229 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22230 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDrop(this);
22231 			else return visitor.visitChildren(this);
22232 		}
22233 	}
22234 
22235 	public final AlterDropContext alterDrop() throws RecognitionException {
22236 		AlterDropContext _localctx = new AlterDropContext(_ctx, getState());
22237 		enterRule(_localctx, 468, RULE_alterDrop);
22238 		try {
22239 			enterOuterAlt(_localctx, 1);
22240 			{
22241 			setState(3273);
22242 			match(DROP);
22243 			setState(3280);
22244 			_errHandler.sync(this);
22245 			switch ( getInterpreter().adaptivePredict(_input,294,_ctx) ) {
22246 			case 1:
22247 				{
22248 				setState(3274);
22249 				alterTableDropConstraint();
22250 				}
22251 				break;
22252 			case 2:
22253 				{
22254 				setState(3275);
22255 				dropColumnSpecification();
22256 				}
22257 				break;
22258 			case 3:
22259 				{
22260 				setState(3276);
22261 				dropIndexSpecification();
22262 				}
22263 				break;
22264 			case 4:
22265 				{
22266 				setState(3277);
22267 				match(PERIOD);
22268 				setState(3278);
22269 				match(FOR);
22270 				setState(3279);
22271 				match(SYSTEM_TIME);
22272 				}
22273 				break;
22274 			}
22275 			}
22276 		}
22277 		catch (RecognitionException re) {
22278 			_localctx.exception = re;
22279 			_errHandler.reportError(this, re);
22280 			_errHandler.recover(this, re);
22281 		}
22282 		finally {
22283 			exitRule();
22284 		}
22285 		return _localctx;
22286 	}
22287 
22288 	public static class AlterTableDropConstraintContext extends ParserRuleContext {
22289 		public List<DropConstraintNameContext> dropConstraintName() {
22290 			return getRuleContexts(DropConstraintNameContext.class);
22291 		}
22292 		public DropConstraintNameContext dropConstraintName(int i) {
22293 			return getRuleContext(DropConstraintNameContext.class,i);
22294 		}
22295 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
22296 		public IfExistsContext ifExists() {
22297 			return getRuleContext(IfExistsContext.class,0);
22298 		}
22299 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
22300 		public TerminalNode COMMA_(int i) {
22301 			return getToken(SQLServerStatementParser.COMMA_, i);
22302 		}
22303 		public AlterTableDropConstraintContext(ParserRuleContext parent, int invokingState) {
22304 			super(parent, invokingState);
22305 		}
22306 		@Override public int getRuleIndex() { return RULE_alterTableDropConstraint; }
22307 		@Override
22308 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22309 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableDropConstraint(this);
22310 			else return visitor.visitChildren(this);
22311 		}
22312 	}
22313 
22314 	public final AlterTableDropConstraintContext alterTableDropConstraint() throws RecognitionException {
22315 		AlterTableDropConstraintContext _localctx = new AlterTableDropConstraintContext(_ctx, getState());
22316 		enterRule(_localctx, 470, RULE_alterTableDropConstraint);
22317 		int _la;
22318 		try {
22319 			int _alt;
22320 			enterOuterAlt(_localctx, 1);
22321 			{
22322 			setState(3283);
22323 			_errHandler.sync(this);
22324 			_la = _input.LA(1);
22325 			if (_la==CONSTRAINT) {
22326 				{
22327 				setState(3282);
22328 				match(CONSTRAINT);
22329 				}
22330 			}
22331 
22332 			setState(3286);
22333 			_errHandler.sync(this);
22334 			_la = _input.LA(1);
22335 			if (_la==IF) {
22336 				{
22337 				setState(3285);
22338 				ifExists();
22339 				}
22340 			}
22341 
22342 			setState(3288);
22343 			dropConstraintName();
22344 			setState(3293);
22345 			_errHandler.sync(this);
22346 			_alt = getInterpreter().adaptivePredict(_input,297,_ctx);
22347 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
22348 				if ( _alt==1 ) {
22349 					{
22350 					{
22351 					setState(3289);
22352 					match(COMMA_);
22353 					setState(3290);
22354 					dropConstraintName();
22355 					}
22356 					} 
22357 				}
22358 				setState(3295);
22359 				_errHandler.sync(this);
22360 				_alt = getInterpreter().adaptivePredict(_input,297,_ctx);
22361 			}
22362 			}
22363 		}
22364 		catch (RecognitionException re) {
22365 			_localctx.exception = re;
22366 			_errHandler.reportError(this, re);
22367 			_errHandler.recover(this, re);
22368 		}
22369 		finally {
22370 			exitRule();
22371 		}
22372 		return _localctx;
22373 	}
22374 
22375 	public static class DropConstraintNameContext extends ParserRuleContext {
22376 		public ConstraintNameContext constraintName() {
22377 			return getRuleContext(ConstraintNameContext.class,0);
22378 		}
22379 		public DropConstraintWithClauseContext dropConstraintWithClause() {
22380 			return getRuleContext(DropConstraintWithClauseContext.class,0);
22381 		}
22382 		public DropConstraintNameContext(ParserRuleContext parent, int invokingState) {
22383 			super(parent, invokingState);
22384 		}
22385 		@Override public int getRuleIndex() { return RULE_dropConstraintName; }
22386 		@Override
22387 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22388 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropConstraintName(this);
22389 			else return visitor.visitChildren(this);
22390 		}
22391 	}
22392 
22393 	public final DropConstraintNameContext dropConstraintName() throws RecognitionException {
22394 		DropConstraintNameContext _localctx = new DropConstraintNameContext(_ctx, getState());
22395 		enterRule(_localctx, 472, RULE_dropConstraintName);
22396 		try {
22397 			enterOuterAlt(_localctx, 1);
22398 			{
22399 			setState(3296);
22400 			constraintName();
22401 			setState(3298);
22402 			_errHandler.sync(this);
22403 			switch ( getInterpreter().adaptivePredict(_input,298,_ctx) ) {
22404 			case 1:
22405 				{
22406 				setState(3297);
22407 				dropConstraintWithClause();
22408 				}
22409 				break;
22410 			}
22411 			}
22412 		}
22413 		catch (RecognitionException re) {
22414 			_localctx.exception = re;
22415 			_errHandler.reportError(this, re);
22416 			_errHandler.recover(this, re);
22417 		}
22418 		finally {
22419 			exitRule();
22420 		}
22421 		return _localctx;
22422 	}
22423 
22424 	public static class DropConstraintWithClauseContext extends ParserRuleContext {
22425 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
22426 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
22427 		public List<DropConstraintOptionContext> dropConstraintOption() {
22428 			return getRuleContexts(DropConstraintOptionContext.class);
22429 		}
22430 		public DropConstraintOptionContext dropConstraintOption(int i) {
22431 			return getRuleContext(DropConstraintOptionContext.class,i);
22432 		}
22433 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
22434 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
22435 		public TerminalNode COMMA_(int i) {
22436 			return getToken(SQLServerStatementParser.COMMA_, i);
22437 		}
22438 		public DropConstraintWithClauseContext(ParserRuleContext parent, int invokingState) {
22439 			super(parent, invokingState);
22440 		}
22441 		@Override public int getRuleIndex() { return RULE_dropConstraintWithClause; }
22442 		@Override
22443 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22444 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropConstraintWithClause(this);
22445 			else return visitor.visitChildren(this);
22446 		}
22447 	}
22448 
22449 	public final DropConstraintWithClauseContext dropConstraintWithClause() throws RecognitionException {
22450 		DropConstraintWithClauseContext _localctx = new DropConstraintWithClauseContext(_ctx, getState());
22451 		enterRule(_localctx, 474, RULE_dropConstraintWithClause);
22452 		int _la;
22453 		try {
22454 			enterOuterAlt(_localctx, 1);
22455 			{
22456 			setState(3300);
22457 			match(WITH);
22458 			setState(3301);
22459 			match(LP_);
22460 			setState(3302);
22461 			dropConstraintOption();
22462 			setState(3307);
22463 			_errHandler.sync(this);
22464 			_la = _input.LA(1);
22465 			while (_la==COMMA_) {
22466 				{
22467 				{
22468 				setState(3303);
22469 				match(COMMA_);
22470 				setState(3304);
22471 				dropConstraintOption();
22472 				}
22473 				}
22474 				setState(3309);
22475 				_errHandler.sync(this);
22476 				_la = _input.LA(1);
22477 			}
22478 			setState(3310);
22479 			match(RP_);
22480 			}
22481 		}
22482 		catch (RecognitionException re) {
22483 			_localctx.exception = re;
22484 			_errHandler.reportError(this, re);
22485 			_errHandler.recover(this, re);
22486 		}
22487 		finally {
22488 			exitRule();
22489 		}
22490 		return _localctx;
22491 	}
22492 
22493 	public static class DropConstraintOptionContext extends ParserRuleContext {
22494 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
22495 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
22496 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
22497 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
22498 		public OnOffOptionContext onOffOption() {
22499 			return getRuleContext(OnOffOptionContext.class,0);
22500 		}
22501 		public TerminalNode MOVE() { return getToken(SQLServerStatementParser.MOVE, 0); }
22502 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
22503 		public SchemaNameContext schemaName() {
22504 			return getRuleContext(SchemaNameContext.class,0);
22505 		}
22506 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
22507 		public ColumnNameContext columnName() {
22508 			return getRuleContext(ColumnNameContext.class,0);
22509 		}
22510 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
22511 		public IgnoredIdentifierContext ignoredIdentifier() {
22512 			return getRuleContext(IgnoredIdentifierContext.class,0);
22513 		}
22514 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
22515 		public DropConstraintOptionContext(ParserRuleContext parent, int invokingState) {
22516 			super(parent, invokingState);
22517 		}
22518 		@Override public int getRuleIndex() { return RULE_dropConstraintOption; }
22519 		@Override
22520 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22521 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropConstraintOption(this);
22522 			else return visitor.visitChildren(this);
22523 		}
22524 	}
22525 
22526 	public final DropConstraintOptionContext dropConstraintOption() throws RecognitionException {
22527 		DropConstraintOptionContext _localctx = new DropConstraintOptionContext(_ctx, getState());
22528 		enterRule(_localctx, 476, RULE_dropConstraintOption);
22529 		try {
22530 			enterOuterAlt(_localctx, 1);
22531 			{
22532 			setState(3329);
22533 			_errHandler.sync(this);
22534 			switch (_input.LA(1)) {
22535 			case MAXDOP:
22536 				{
22537 				setState(3312);
22538 				match(MAXDOP);
22539 				setState(3313);
22540 				match(EQ_);
22541 				setState(3314);
22542 				match(NUMBER_);
22543 				}
22544 				break;
22545 			case ONLINE:
22546 				{
22547 				setState(3315);
22548 				match(ONLINE);
22549 				setState(3316);
22550 				match(EQ_);
22551 				setState(3317);
22552 				onOffOption();
22553 				}
22554 				break;
22555 			case MOVE:
22556 				{
22557 				setState(3318);
22558 				match(MOVE);
22559 				setState(3319);
22560 				match(TO);
22561 				setState(3327);
22562 				_errHandler.sync(this);
22563 				switch ( getInterpreter().adaptivePredict(_input,300,_ctx) ) {
22564 				case 1:
22565 					{
22566 					setState(3320);
22567 					schemaName();
22568 					setState(3321);
22569 					match(LP_);
22570 					setState(3322);
22571 					columnName();
22572 					setState(3323);
22573 					match(RP_);
22574 					}
22575 					break;
22576 				case 2:
22577 					{
22578 					setState(3325);
22579 					ignoredIdentifier();
22580 					}
22581 					break;
22582 				case 3:
22583 					{
22584 					setState(3326);
22585 					match(STRING_);
22586 					}
22587 					break;
22588 				}
22589 				}
22590 				break;
22591 			default:
22592 				throw new NoViableAltException(this);
22593 			}
22594 			}
22595 		}
22596 		catch (RecognitionException re) {
22597 			_localctx.exception = re;
22598 			_errHandler.reportError(this, re);
22599 			_errHandler.recover(this, re);
22600 		}
22601 		finally {
22602 			exitRule();
22603 		}
22604 		return _localctx;
22605 	}
22606 
22607 	public static class OnOffOptionContext extends ParserRuleContext {
22608 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
22609 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
22610 		public OnOffOptionContext(ParserRuleContext parent, int invokingState) {
22611 			super(parent, invokingState);
22612 		}
22613 		@Override public int getRuleIndex() { return RULE_onOffOption; }
22614 		@Override
22615 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22616 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnOffOption(this);
22617 			else return visitor.visitChildren(this);
22618 		}
22619 	}
22620 
22621 	public final OnOffOptionContext onOffOption() throws RecognitionException {
22622 		OnOffOptionContext _localctx = new OnOffOptionContext(_ctx, getState());
22623 		enterRule(_localctx, 478, RULE_onOffOption);
22624 		int _la;
22625 		try {
22626 			enterOuterAlt(_localctx, 1);
22627 			{
22628 			setState(3331);
22629 			_la = _input.LA(1);
22630 			if ( !(_la==ON || _la==OFF) ) {
22631 			_errHandler.recoverInline(this);
22632 			}
22633 			else {
22634 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22635 				_errHandler.reportMatch(this);
22636 				consume();
22637 			}
22638 			}
22639 		}
22640 		catch (RecognitionException re) {
22641 			_localctx.exception = re;
22642 			_errHandler.reportError(this, re);
22643 			_errHandler.recover(this, re);
22644 		}
22645 		finally {
22646 			exitRule();
22647 		}
22648 		return _localctx;
22649 	}
22650 
22651 	public static class DropColumnSpecificationContext extends ParserRuleContext {
22652 		public TerminalNode COLUMN() { return getToken(SQLServerStatementParser.COLUMN, 0); }
22653 		public List<ColumnNameContext> columnName() {
22654 			return getRuleContexts(ColumnNameContext.class);
22655 		}
22656 		public ColumnNameContext columnName(int i) {
22657 			return getRuleContext(ColumnNameContext.class,i);
22658 		}
22659 		public IfExistsContext ifExists() {
22660 			return getRuleContext(IfExistsContext.class,0);
22661 		}
22662 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
22663 		public TerminalNode COMMA_(int i) {
22664 			return getToken(SQLServerStatementParser.COMMA_, i);
22665 		}
22666 		public DropColumnSpecificationContext(ParserRuleContext parent, int invokingState) {
22667 			super(parent, invokingState);
22668 		}
22669 		@Override public int getRuleIndex() { return RULE_dropColumnSpecification; }
22670 		@Override
22671 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22672 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropColumnSpecification(this);
22673 			else return visitor.visitChildren(this);
22674 		}
22675 	}
22676 
22677 	public final DropColumnSpecificationContext dropColumnSpecification() throws RecognitionException {
22678 		DropColumnSpecificationContext _localctx = new DropColumnSpecificationContext(_ctx, getState());
22679 		enterRule(_localctx, 480, RULE_dropColumnSpecification);
22680 		int _la;
22681 		try {
22682 			int _alt;
22683 			enterOuterAlt(_localctx, 1);
22684 			{
22685 			setState(3333);
22686 			match(COLUMN);
22687 			setState(3335);
22688 			_errHandler.sync(this);
22689 			_la = _input.LA(1);
22690 			if (_la==IF) {
22691 				{
22692 				setState(3334);
22693 				ifExists();
22694 				}
22695 			}
22696 
22697 			setState(3337);
22698 			columnName();
22699 			setState(3342);
22700 			_errHandler.sync(this);
22701 			_alt = getInterpreter().adaptivePredict(_input,303,_ctx);
22702 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
22703 				if ( _alt==1 ) {
22704 					{
22705 					{
22706 					setState(3338);
22707 					match(COMMA_);
22708 					setState(3339);
22709 					columnName();
22710 					}
22711 					} 
22712 				}
22713 				setState(3344);
22714 				_errHandler.sync(this);
22715 				_alt = getInterpreter().adaptivePredict(_input,303,_ctx);
22716 			}
22717 			}
22718 		}
22719 		catch (RecognitionException re) {
22720 			_localctx.exception = re;
22721 			_errHandler.reportError(this, re);
22722 			_errHandler.recover(this, re);
22723 		}
22724 		finally {
22725 			exitRule();
22726 		}
22727 		return _localctx;
22728 	}
22729 
22730 	public static class DropIndexSpecificationContext extends ParserRuleContext {
22731 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
22732 		public List<IndexNameContext> indexName() {
22733 			return getRuleContexts(IndexNameContext.class);
22734 		}
22735 		public IndexNameContext indexName(int i) {
22736 			return getRuleContext(IndexNameContext.class,i);
22737 		}
22738 		public IfExistsContext ifExists() {
22739 			return getRuleContext(IfExistsContext.class,0);
22740 		}
22741 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
22742 		public TerminalNode COMMA_(int i) {
22743 			return getToken(SQLServerStatementParser.COMMA_, i);
22744 		}
22745 		public DropIndexSpecificationContext(ParserRuleContext parent, int invokingState) {
22746 			super(parent, invokingState);
22747 		}
22748 		@Override public int getRuleIndex() { return RULE_dropIndexSpecification; }
22749 		@Override
22750 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22751 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropIndexSpecification(this);
22752 			else return visitor.visitChildren(this);
22753 		}
22754 	}
22755 
22756 	public final DropIndexSpecificationContext dropIndexSpecification() throws RecognitionException {
22757 		DropIndexSpecificationContext _localctx = new DropIndexSpecificationContext(_ctx, getState());
22758 		enterRule(_localctx, 482, RULE_dropIndexSpecification);
22759 		int _la;
22760 		try {
22761 			int _alt;
22762 			enterOuterAlt(_localctx, 1);
22763 			{
22764 			setState(3345);
22765 			match(INDEX);
22766 			setState(3347);
22767 			_errHandler.sync(this);
22768 			_la = _input.LA(1);
22769 			if (_la==IF) {
22770 				{
22771 				setState(3346);
22772 				ifExists();
22773 				}
22774 			}
22775 
22776 			setState(3349);
22777 			indexName();
22778 			setState(3354);
22779 			_errHandler.sync(this);
22780 			_alt = getInterpreter().adaptivePredict(_input,305,_ctx);
22781 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
22782 				if ( _alt==1 ) {
22783 					{
22784 					{
22785 					setState(3350);
22786 					match(COMMA_);
22787 					setState(3351);
22788 					indexName();
22789 					}
22790 					} 
22791 				}
22792 				setState(3356);
22793 				_errHandler.sync(this);
22794 				_alt = getInterpreter().adaptivePredict(_input,305,_ctx);
22795 			}
22796 			}
22797 		}
22798 		catch (RecognitionException re) {
22799 			_localctx.exception = re;
22800 			_errHandler.reportError(this, re);
22801 			_errHandler.recover(this, re);
22802 		}
22803 		finally {
22804 			exitRule();
22805 		}
22806 		return _localctx;
22807 	}
22808 
22809 	public static class AlterCheckConstraintContext extends ParserRuleContext {
22810 		public TerminalNode CONSTRAINT() { return getToken(SQLServerStatementParser.CONSTRAINT, 0); }
22811 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
22812 		public TerminalNode NOCHECK() { return getToken(SQLServerStatementParser.NOCHECK, 0); }
22813 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
22814 		public ConstraintNameContext constraintName() {
22815 			return getRuleContext(ConstraintNameContext.class,0);
22816 		}
22817 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
22818 		public AlterCheckConstraintContext(ParserRuleContext parent, int invokingState) {
22819 			super(parent, invokingState);
22820 		}
22821 		@Override public int getRuleIndex() { return RULE_alterCheckConstraint; }
22822 		@Override
22823 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
22824 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterCheckConstraint(this);
22825 			else return visitor.visitChildren(this);
22826 		}
22827 	}
22828 
22829 	public final AlterCheckConstraintContext alterCheckConstraint() throws RecognitionException {
22830 		AlterCheckConstraintContext _localctx = new AlterCheckConstraintContext(_ctx, getState());
22831 		enterRule(_localctx, 484, RULE_alterCheckConstraint);
22832 		int _la;
22833 		try {
22834 			enterOuterAlt(_localctx, 1);
22835 			{
22836 			setState(3358);
22837 			_errHandler.sync(this);
22838 			_la = _input.LA(1);
22839 			if (_la==WITH) {
22840 				{
22841 				setState(3357);
22842 				match(WITH);
22843 				}
22844 			}
22845 
22846 			setState(3360);
22847 			_la = _input.LA(1);
22848 			if ( !(_la==CHECK || _la==NOCHECK) ) {
22849 			_errHandler.recoverInline(this);
22850 			}
22851 			else {
22852 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
22853 				_errHandler.reportMatch(this);
22854 				consume();
22855 			}
22856 			setState(3361);
22857 			match(CONSTRAINT);
22858 			setState(3364);
22859 			_errHandler.sync(this);
22860 			switch (_input.LA(1)) {
22861 			case ALL:
22862 				{
22863 				setState(3362);
22864 				match(ALL);
22865 				}
22866 				break;
22867 			case TRUNCATE:
22868 			case SCHEMA:
22869 			case COLUMNS:
22870 			case PRECISION:
22871 			case FUNCTION:
22872 			case TRIGGER:
22873 			case CAST:
22874 			case TRIM:
22875 			case SUBSTRING:
22876 			case RIGHT:
22877 			case OFF:
22878 			case GROUP:
22879 			case LIMIT:
22880 			case OFFSET:
22881 			case SAVEPOINT:
22882 			case BOOLEAN:
22883 			case ARRAY:
22884 			case DATE:
22885 			case TIMESTAMP:
22886 			case LOCALTIME:
22887 			case LOCALTIMESTAMP:
22888 			case YEAR:
22889 			case QUARTER:
22890 			case MONTH:
22891 			case WEEK:
22892 			case DAY:
22893 			case SECOND:
22894 			case MICROSECOND:
22895 			case MAX:
22896 			case MIN:
22897 			case SUM:
22898 			case COUNT:
22899 			case AVG:
22900 			case ENABLE:
22901 			case DISABLE:
22902 			case INSTANCE:
22903 			case DO:
22904 			case DEFINER:
22905 			case SQL:
22906 			case CASCADED:
22907 			case LOCAL:
22908 			case NEXT:
22909 			case NAME:
22910 			case INTEGER:
22911 			case TYPE:
22912 			case TEXT:
22913 			case VIEWS:
22914 			case READ_ONLY:
22915 			case DATABASE:
22916 			case RETURNS:
22917 			case DATEPART:
22918 			case PASSWORD:
22919 			case BINARY:
22920 			case HIDDEN_:
22921 			case MOD:
22922 			case PARTITION:
22923 			case PARTITIONS:
22924 			case TOP:
22925 			case ROW:
22926 			case ROWS:
22927 			case XOR:
22928 			case ALWAYS:
22929 			case USER:
22930 			case ROLE:
22931 			case START:
22932 			case ALGORITHM:
22933 			case AUTO:
22934 			case BLOCKERS:
22935 			case CLUSTERED:
22936 			case NONCLUSTERED:
22937 			case COLUMNSTORE:
22938 			case CONTENT:
22939 			case YEARS:
22940 			case MONTHS:
22941 			case WEEKS:
22942 			case DAYS:
22943 			case MINUTES:
22944 			case DENY:
22945 			case DETERMINISTIC:
22946 			case DISTRIBUTION:
22947 			case DOCUMENT:
22948 			case DURABILITY:
22949 			case ENCRYPTED:
22950 			case FILESTREAM:
22951 			case FILETABLE:
22952 			case FILLFACTOR:
22953 			case FOLLOWING:
22954 			case HASH:
22955 			case HEAP:
22956 			case INBOUND:
22957 			case OUTBOUND:
22958 			case UNBOUNDED:
22959 			case INFINITE:
22960 			case LOGIN:
22961 			case MASKED:
22962 			case MAXDOP:
22963 			case MOVE:
22964 			case NOCHECK:
22965 			case OBJECT:
22966 			case ONLINE:
22967 			case OVER:
22968 			case PAGE:
22969 			case PAUSED:
22970 			case PERIOD:
22971 			case PERSISTED:
22972 			case PRECEDING:
22973 			case RANDOMIZED:
22974 			case RANGE:
22975 			case REBUILD:
22976 			case REPLICATE:
22977 			case REPLICATION:
22978 			case RESUMABLE:
22979 			case ROWGUIDCOL:
22980 			case SAVE:
22981 			case SELF:
22982 			case SPARSE:
22983 			case SWITCH:
22984 			case TRAN:
22985 			case TRANCOUNT:
22986 			case CONTROL:
22987 			case CONCAT:
22988 			case TAKE:
22989 			case OWNERSHIP:
22990 			case DEFINITION:
22991 			case APPLICATION:
22992 			case ASSEMBLY:
22993 			case SYMMETRIC:
22994 			case ASYMMETRIC:
22995 			case SERVER:
22996 			case RECEIVE:
22997 			case CHANGE:
22998 			case TRACE:
22999 			case TRACKING:
23000 			case RESOURCES:
23001 			case SETTINGS:
23002 			case STATE:
23003 			case AVAILABILITY:
23004 			case CREDENTIAL:
23005 			case ENDPOINT:
23006 			case EVENT:
23007 			case NOTIFICATION:
23008 			case LINKED:
23009 			case AUDIT:
23010 			case DDL:
23011 			case XML:
23012 			case IMPERSONATE:
23013 			case SECURABLES:
23014 			case AUTHENTICATE:
23015 			case EXTERNAL:
23016 			case ACCESS:
23017 			case ADMINISTER:
23018 			case BULK:
23019 			case OPERATIONS:
23020 			case UNSAFE:
23021 			case SHUTDOWN:
23022 			case SCOPED:
23023 			case CONFIGURATION:
23024 			case DATASPACE:
23025 			case SERVICE:
23026 			case CERTIFICATE:
23027 			case CONTRACT:
23028 			case ENCRYPTION:
23029 			case MASTER:
23030 			case DATA:
23031 			case SOURCE:
23032 			case FILE:
23033 			case FORMAT:
23034 			case LIBRARY:
23035 			case FULLTEXT:
23036 			case MASK:
23037 			case UNMASK:
23038 			case MESSAGE:
23039 			case REMOTE:
23040 			case BINDING:
23041 			case ROUTE:
23042 			case SECURITY:
23043 			case POLICY:
23044 			case AGGREGATE:
23045 			case QUEUE:
23046 			case RULE:
23047 			case SYNONYM:
23048 			case COLLECTION:
23049 			case SCRIPT:
23050 			case KILL:
23051 			case BACKUP:
23052 			case LOG:
23053 			case SHOWPLAN:
23054 			case SUBSCRIBE:
23055 			case QUERY:
23056 			case NOTIFICATIONS:
23057 			case CHECKPOINT:
23058 			case SEQUENCE:
23059 			case ABORT_AFTER_WAIT:
23060 			case ALLOW_PAGE_LOCKS:
23061 			case ALLOW_ROW_LOCKS:
23062 			case ALL_SPARSE_COLUMNS:
23063 			case BUCKET_COUNT:
23064 			case COLUMNSTORE_ARCHIVE:
23065 			case COLUMN_ENCRYPTION_KEY:
23066 			case COLUMN_SET:
23067 			case COMPRESSION_DELAY:
23068 			case DATABASE_DEAULT:
23069 			case DATA_COMPRESSION:
23070 			case DATA_CONSISTENCY_CHECK:
23071 			case ENCRYPTION_TYPE:
23072 			case SYSTEM_TIME:
23073 			case SYSTEM_VERSIONING:
23074 			case TEXTIMAGE_ON:
23075 			case WAIT_AT_LOW_PRIORITY:
23076 			case STATISTICS_INCREMENTAL:
23077 			case STATISTICS_NORECOMPUTE:
23078 			case ROUND_ROBIN:
23079 			case SCHEMA_AND_DATA:
23080 			case SCHEMA_ONLY:
23081 			case SORT_IN_TEMPDB:
23082 			case IGNORE_DUP_KEY:
23083 			case IMPLICIT_TRANSACTIONS:
23084 			case MAX_DURATION:
23085 			case MEMORY_OPTIMIZED:
23086 			case MIGRATION_STATE:
23087 			case PAD_INDEX:
23088 			case REMOTE_DATA_ARCHIVE:
23089 			case FILESTREAM_ON:
23090 			case FILETABLE_COLLATE_FILENAME:
23091 			case FILETABLE_DIRECTORY:
23092 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
23093 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
23094 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
23095 			case FILTER_PREDICATE:
23096 			case HISTORY_RETENTION_PERIOD:
23097 			case HISTORY_TABLE:
23098 			case LOCK_ESCALATION:
23099 			case DROP_EXISTING:
23100 			case ROW_NUMBER:
23101 			case FIRST:
23102 			case DATETIME2:
23103 			case OUTPUT:
23104 			case INSERTED:
23105 			case DELETED:
23106 			case FILENAME:
23107 			case SIZE:
23108 			case MAXSIZE:
23109 			case FILEGROWTH:
23110 			case UNLIMITED:
23111 			case KB:
23112 			case MB:
23113 			case GB:
23114 			case TB:
23115 			case CONTAINS:
23116 			case MEMORY_OPTIMIZED_DATA:
23117 			case FILEGROUP:
23118 			case NON_TRANSACTED_ACCESS:
23119 			case DB_CHAINING:
23120 			case TRUSTWORTHY:
23121 			case FORWARD_ONLY:
23122 			case KEYSET:
23123 			case FAST_FORWARD:
23124 			case SCROLL_LOCKS:
23125 			case OPTIMISTIC:
23126 			case TYPE_WARNING:
23127 			case SCHEMABINDING:
23128 			case CALLER:
23129 			case INPUT:
23130 			case OWNER:
23131 			case SNAPSHOT:
23132 			case REPEATABLE:
23133 			case SERIALIZABLE:
23134 			case NATIVE_COMPILATION:
23135 			case VIEW_METADATA:
23136 			case INSTEAD:
23137 			case APPEND:
23138 			case INCREMENT:
23139 			case CACHE:
23140 			case MINVALUE:
23141 			case MAXVALUE:
23142 			case RESTART:
23143 			case LOB_COMPACTION:
23144 			case COMPRESS_ALL_ROW_GROUPS:
23145 			case REORGANIZE:
23146 			case RESUME:
23147 			case PAUSE:
23148 			case ABORT:
23149 			case ACCELERATED_DATABASE_RECOVERY:
23150 			case PERSISTENT_VERSION_STORE_FILEGROUP:
23151 			case IMMEDIATE:
23152 			case NO_WAIT:
23153 			case TARGET_RECOVERY_TIME:
23154 			case SECONDS:
23155 			case HONOR_BROKER_PRIORITY:
23156 			case ERROR_BROKER_CONVERSATIONS:
23157 			case NEW_BROKER:
23158 			case DISABLE_BROKER:
23159 			case ENABLE_BROKER:
23160 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
23161 			case READ_COMMITTED_SNAPSHOT:
23162 			case ALLOW_SNAPSHOT_ISOLATION:
23163 			case RECURSIVE_TRIGGERS:
23164 			case QUOTED_IDENTIFIER:
23165 			case NUMERIC_ROUNDABORT:
23166 			case CONCAT_NULL_YIELDS_NULL:
23167 			case COMPATIBILITY_LEVEL:
23168 			case ARITHABORT:
23169 			case ANSI_WARNINGS:
23170 			case ANSI_PADDING:
23171 			case ANSI_NULLS:
23172 			case ANSI_NULL_DEFAULT:
23173 			case PAGE_VERIFY:
23174 			case CHECKSUM:
23175 			case TORN_PAGE_DETECTION:
23176 			case BULK_LOGGED:
23177 			case RECOVERY:
23178 			case TOTAL_EXECUTION_CPU_TIME_MS:
23179 			case TOTAL_COMPILE_CPU_TIME_MS:
23180 			case STALE_CAPTURE_POLICY_THRESHOLD:
23181 			case EXECUTION_COUNT:
23182 			case QUERY_CAPTURE_POLICY:
23183 			case WAIT_STATS_CAPTURE_MODE:
23184 			case MAX_PLANS_PER_QUERY:
23185 			case QUERY_CAPTURE_MODE:
23186 			case SIZE_BASED_CLEANUP_MODE:
23187 			case INTERVAL_LENGTH_MINUTES:
23188 			case MAX_STORAGE_SIZE_MB:
23189 			case DATA_FLUSH_INTERVAL_SECONDS:
23190 			case CLEANUP_POLICY:
23191 			case CUSTOM:
23192 			case STALE_QUERY_THRESHOLD_DAYS:
23193 			case OPERATION_MODE:
23194 			case QUERY_STORE:
23195 			case CURSOR_DEFAULT:
23196 			case GLOBAL:
23197 			case CURSOR_CLOSE_ON_COMMIT:
23198 			case HOURS:
23199 			case CHANGE_RETENTION:
23200 			case AUTO_CLEANUP:
23201 			case CHANGE_TRACKING:
23202 			case AUTOMATIC_TUNING:
23203 			case FORCE_LAST_GOOD_PLAN:
23204 			case AUTO_UPDATE_STATISTICS_ASYNC:
23205 			case AUTO_UPDATE_STATISTICS:
23206 			case AUTO_SHRINK:
23207 			case AUTO_CREATE_STATISTICS:
23208 			case INCREMENTAL:
23209 			case AUTO_CLOSE:
23210 			case DATA_RETENTION:
23211 			case TEMPORAL_HISTORY_RETENTION:
23212 			case EDITION:
23213 			case MIXED_PAGE_ALLOCATION:
23214 			case DISABLED:
23215 			case ALLOWED:
23216 			case HADR:
23217 			case MULTI_USER:
23218 			case RESTRICTED_USER:
23219 			case SINGLE_USER:
23220 			case OFFLINE:
23221 			case EMERGENCY:
23222 			case SUSPEND:
23223 			case DATE_CORRELATION_OPTIMIZATION:
23224 			case ELASTIC_POOL:
23225 			case SERVICE_OBJECTIVE:
23226 			case DATABASE_NAME:
23227 			case ALLOW_CONNECTIONS:
23228 			case GEO:
23229 			case NAMED:
23230 			case DATEFIRST:
23231 			case BACKUP_STORAGE_REDUNDANCY:
23232 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
23233 			case SECONDARY:
23234 			case FAILOVER:
23235 			case DEFAULT_FULLTEXT_LANGUAGE:
23236 			case DEFAULT_LANGUAGE:
23237 			case INLINE:
23238 			case NESTED_TRIGGERS:
23239 			case TRANSFORM_NOISE_WORDS:
23240 			case TWO_DIGIT_YEAR_CUTOFF:
23241 			case PERSISTENT_LOG_BUFFER:
23242 			case DIRECTORY_NAME:
23243 			case DATEFORMAT:
23244 			case DELAYED_DURABILITY:
23245 			case AUTHORIZATION:
23246 			case TRANSFER:
23247 			case PROVIDER:
23248 			case SID:
23249 			case SEARCH:
23250 			case MEMBER:
23251 			case JSON:
23252 			case IDENTIFIER_:
23253 			case DELIMITED_IDENTIFIER_:
23254 				{
23255 				setState(3363);
23256 				constraintName();
23257 				}
23258 				break;
23259 			default:
23260 				throw new NoViableAltException(this);
23261 			}
23262 			}
23263 		}
23264 		catch (RecognitionException re) {
23265 			_localctx.exception = re;
23266 			_errHandler.reportError(this, re);
23267 			_errHandler.recover(this, re);
23268 		}
23269 		finally {
23270 			exitRule();
23271 		}
23272 		return _localctx;
23273 	}
23274 
23275 	public static class AlterTableTriggerContext extends ParserRuleContext {
23276 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
23277 		public TerminalNode ENABLE() { return getToken(SQLServerStatementParser.ENABLE, 0); }
23278 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
23279 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
23280 		public IgnoredIdentifiersContext ignoredIdentifiers() {
23281 			return getRuleContext(IgnoredIdentifiersContext.class,0);
23282 		}
23283 		public AlterTableTriggerContext(ParserRuleContext parent, int invokingState) {
23284 			super(parent, invokingState);
23285 		}
23286 		@Override public int getRuleIndex() { return RULE_alterTableTrigger; }
23287 		@Override
23288 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23289 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableTrigger(this);
23290 			else return visitor.visitChildren(this);
23291 		}
23292 	}
23293 
23294 	public final AlterTableTriggerContext alterTableTrigger() throws RecognitionException {
23295 		AlterTableTriggerContext _localctx = new AlterTableTriggerContext(_ctx, getState());
23296 		enterRule(_localctx, 486, RULE_alterTableTrigger);
23297 		int _la;
23298 		try {
23299 			enterOuterAlt(_localctx, 1);
23300 			{
23301 			setState(3366);
23302 			_la = _input.LA(1);
23303 			if ( !(_la==ENABLE || _la==DISABLE) ) {
23304 			_errHandler.recoverInline(this);
23305 			}
23306 			else {
23307 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23308 				_errHandler.reportMatch(this);
23309 				consume();
23310 			}
23311 			setState(3367);
23312 			match(TRIGGER);
23313 			setState(3370);
23314 			_errHandler.sync(this);
23315 			switch (_input.LA(1)) {
23316 			case ALL:
23317 				{
23318 				setState(3368);
23319 				match(ALL);
23320 				}
23321 				break;
23322 			case IDENTIFIER_:
23323 				{
23324 				setState(3369);
23325 				ignoredIdentifiers();
23326 				}
23327 				break;
23328 			default:
23329 				throw new NoViableAltException(this);
23330 			}
23331 			}
23332 		}
23333 		catch (RecognitionException re) {
23334 			_localctx.exception = re;
23335 			_errHandler.reportError(this, re);
23336 			_errHandler.recover(this, re);
23337 		}
23338 		finally {
23339 			exitRule();
23340 		}
23341 		return _localctx;
23342 	}
23343 
23344 	public static class AlterSwitchContext extends ParserRuleContext {
23345 		public TerminalNode SWITCH() { return getToken(SQLServerStatementParser.SWITCH, 0); }
23346 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
23347 		public TableNameContext tableName() {
23348 			return getRuleContext(TableNameContext.class,0);
23349 		}
23350 		public List<TerminalNode> PARTITION() { return getTokens(SQLServerStatementParser.PARTITION); }
23351 		public TerminalNode PARTITION(int i) {
23352 			return getToken(SQLServerStatementParser.PARTITION, i);
23353 		}
23354 		public List<ExprContext> expr() {
23355 			return getRuleContexts(ExprContext.class);
23356 		}
23357 		public ExprContext expr(int i) {
23358 			return getRuleContext(ExprContext.class,i);
23359 		}
23360 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
23361 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
23362 		public LowPriorityLockWaitContext lowPriorityLockWait() {
23363 			return getRuleContext(LowPriorityLockWaitContext.class,0);
23364 		}
23365 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
23366 		public AlterSwitchContext(ParserRuleContext parent, int invokingState) {
23367 			super(parent, invokingState);
23368 		}
23369 		@Override public int getRuleIndex() { return RULE_alterSwitch; }
23370 		@Override
23371 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23372 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSwitch(this);
23373 			else return visitor.visitChildren(this);
23374 		}
23375 	}
23376 
23377 	public final AlterSwitchContext alterSwitch() throws RecognitionException {
23378 		AlterSwitchContext _localctx = new AlterSwitchContext(_ctx, getState());
23379 		enterRule(_localctx, 488, RULE_alterSwitch);
23380 		int _la;
23381 		try {
23382 			enterOuterAlt(_localctx, 1);
23383 			{
23384 			setState(3372);
23385 			match(SWITCH);
23386 			setState(3375);
23387 			_errHandler.sync(this);
23388 			_la = _input.LA(1);
23389 			if (_la==PARTITION) {
23390 				{
23391 				setState(3373);
23392 				match(PARTITION);
23393 				setState(3374);
23394 				expr(0);
23395 				}
23396 			}
23397 
23398 			setState(3377);
23399 			match(TO);
23400 			setState(3378);
23401 			tableName();
23402 			setState(3381);
23403 			_errHandler.sync(this);
23404 			_la = _input.LA(1);
23405 			if (_la==PARTITION) {
23406 				{
23407 				setState(3379);
23408 				match(PARTITION);
23409 				setState(3380);
23410 				expr(0);
23411 				}
23412 			}
23413 
23414 			setState(3388);
23415 			_errHandler.sync(this);
23416 			switch ( getInterpreter().adaptivePredict(_input,311,_ctx) ) {
23417 			case 1:
23418 				{
23419 				setState(3383);
23420 				match(WITH);
23421 				setState(3384);
23422 				match(LP_);
23423 				setState(3385);
23424 				lowPriorityLockWait();
23425 				setState(3386);
23426 				match(RP_);
23427 				}
23428 				break;
23429 			}
23430 			}
23431 		}
23432 		catch (RecognitionException re) {
23433 			_localctx.exception = re;
23434 			_errHandler.reportError(this, re);
23435 			_errHandler.recover(this, re);
23436 		}
23437 		finally {
23438 			exitRule();
23439 		}
23440 		return _localctx;
23441 	}
23442 
23443 	public static class AlterSetContext extends ParserRuleContext {
23444 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
23445 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
23446 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
23447 		public SetFileStreamClauseContext setFileStreamClause() {
23448 			return getRuleContext(SetFileStreamClauseContext.class,0);
23449 		}
23450 		public SetSystemVersionClauseContext setSystemVersionClause() {
23451 			return getRuleContext(SetSystemVersionClauseContext.class,0);
23452 		}
23453 		public AlterSetContext(ParserRuleContext parent, int invokingState) {
23454 			super(parent, invokingState);
23455 		}
23456 		@Override public int getRuleIndex() { return RULE_alterSet; }
23457 		@Override
23458 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23459 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSet(this);
23460 			else return visitor.visitChildren(this);
23461 		}
23462 	}
23463 
23464 	public final AlterSetContext alterSet() throws RecognitionException {
23465 		AlterSetContext _localctx = new AlterSetContext(_ctx, getState());
23466 		enterRule(_localctx, 490, RULE_alterSet);
23467 		try {
23468 			enterOuterAlt(_localctx, 1);
23469 			{
23470 			setState(3390);
23471 			match(SET);
23472 			setState(3391);
23473 			match(LP_);
23474 			setState(3394);
23475 			_errHandler.sync(this);
23476 			switch (_input.LA(1)) {
23477 			case FILESTREAM_ON:
23478 				{
23479 				setState(3392);
23480 				setFileStreamClause();
23481 				}
23482 				break;
23483 			case SYSTEM_VERSIONING:
23484 				{
23485 				setState(3393);
23486 				setSystemVersionClause();
23487 				}
23488 				break;
23489 			default:
23490 				throw new NoViableAltException(this);
23491 			}
23492 			setState(3396);
23493 			match(RP_);
23494 			}
23495 		}
23496 		catch (RecognitionException re) {
23497 			_localctx.exception = re;
23498 			_errHandler.reportError(this, re);
23499 			_errHandler.recover(this, re);
23500 		}
23501 		finally {
23502 			exitRule();
23503 		}
23504 		return _localctx;
23505 	}
23506 
23507 	public static class SetFileStreamClauseContext extends ParserRuleContext {
23508 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
23509 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23510 		public SchemaNameContext schemaName() {
23511 			return getRuleContext(SchemaNameContext.class,0);
23512 		}
23513 		public IgnoredIdentifierContext ignoredIdentifier() {
23514 			return getRuleContext(IgnoredIdentifierContext.class,0);
23515 		}
23516 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
23517 		public SetFileStreamClauseContext(ParserRuleContext parent, int invokingState) {
23518 			super(parent, invokingState);
23519 		}
23520 		@Override public int getRuleIndex() { return RULE_setFileStreamClause; }
23521 		@Override
23522 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23523 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetFileStreamClause(this);
23524 			else return visitor.visitChildren(this);
23525 		}
23526 	}
23527 
23528 	public final SetFileStreamClauseContext setFileStreamClause() throws RecognitionException {
23529 		SetFileStreamClauseContext _localctx = new SetFileStreamClauseContext(_ctx, getState());
23530 		enterRule(_localctx, 492, RULE_setFileStreamClause);
23531 		try {
23532 			enterOuterAlt(_localctx, 1);
23533 			{
23534 			setState(3398);
23535 			match(FILESTREAM_ON);
23536 			setState(3399);
23537 			match(EQ_);
23538 			setState(3403);
23539 			_errHandler.sync(this);
23540 			switch ( getInterpreter().adaptivePredict(_input,313,_ctx) ) {
23541 			case 1:
23542 				{
23543 				setState(3400);
23544 				schemaName();
23545 				}
23546 				break;
23547 			case 2:
23548 				{
23549 				setState(3401);
23550 				ignoredIdentifier();
23551 				}
23552 				break;
23553 			case 3:
23554 				{
23555 				setState(3402);
23556 				match(STRING_);
23557 				}
23558 				break;
23559 			}
23560 			}
23561 		}
23562 		catch (RecognitionException re) {
23563 			_localctx.exception = re;
23564 			_errHandler.reportError(this, re);
23565 			_errHandler.recover(this, re);
23566 		}
23567 		finally {
23568 			exitRule();
23569 		}
23570 		return _localctx;
23571 	}
23572 
23573 	public static class SetSystemVersionClauseContext extends ParserRuleContext {
23574 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
23575 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23576 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
23577 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
23578 		public AlterSetOnClauseContext alterSetOnClause() {
23579 			return getRuleContext(AlterSetOnClauseContext.class,0);
23580 		}
23581 		public SetSystemVersionClauseContext(ParserRuleContext parent, int invokingState) {
23582 			super(parent, invokingState);
23583 		}
23584 		@Override public int getRuleIndex() { return RULE_setSystemVersionClause; }
23585 		@Override
23586 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23587 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetSystemVersionClause(this);
23588 			else return visitor.visitChildren(this);
23589 		}
23590 	}
23591 
23592 	public final SetSystemVersionClauseContext setSystemVersionClause() throws RecognitionException {
23593 		SetSystemVersionClauseContext _localctx = new SetSystemVersionClauseContext(_ctx, getState());
23594 		enterRule(_localctx, 494, RULE_setSystemVersionClause);
23595 		int _la;
23596 		try {
23597 			enterOuterAlt(_localctx, 1);
23598 			{
23599 			setState(3405);
23600 			match(SYSTEM_VERSIONING);
23601 			setState(3406);
23602 			match(EQ_);
23603 			setState(3412);
23604 			_errHandler.sync(this);
23605 			switch (_input.LA(1)) {
23606 			case OFF:
23607 				{
23608 				setState(3407);
23609 				match(OFF);
23610 				}
23611 				break;
23612 			case ON:
23613 				{
23614 				setState(3408);
23615 				match(ON);
23616 				setState(3410);
23617 				_errHandler.sync(this);
23618 				_la = _input.LA(1);
23619 				if (_la==LP_) {
23620 					{
23621 					setState(3409);
23622 					alterSetOnClause();
23623 					}
23624 				}
23625 
23626 				}
23627 				break;
23628 			default:
23629 				throw new NoViableAltException(this);
23630 			}
23631 			}
23632 		}
23633 		catch (RecognitionException re) {
23634 			_localctx.exception = re;
23635 			_errHandler.reportError(this, re);
23636 			_errHandler.recover(this, re);
23637 		}
23638 		finally {
23639 			exitRule();
23640 		}
23641 		return _localctx;
23642 	}
23643 
23644 	public static class AlterSetOnClauseContext extends ParserRuleContext {
23645 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
23646 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
23647 		public TerminalNode HISTORY_TABLE() { return getToken(SQLServerStatementParser.HISTORY_TABLE, 0); }
23648 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23649 		public TableNameContext tableName() {
23650 			return getRuleContext(TableNameContext.class,0);
23651 		}
23652 		public DataConsistencyCheckClauseContext dataConsistencyCheckClause() {
23653 			return getRuleContext(DataConsistencyCheckClauseContext.class,0);
23654 		}
23655 		public HistoryRetentionPeriodClauseContext historyRetentionPeriodClause() {
23656 			return getRuleContext(HistoryRetentionPeriodClauseContext.class,0);
23657 		}
23658 		public AlterSetOnClauseContext(ParserRuleContext parent, int invokingState) {
23659 			super(parent, invokingState);
23660 		}
23661 		@Override public int getRuleIndex() { return RULE_alterSetOnClause; }
23662 		@Override
23663 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23664 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterSetOnClause(this);
23665 			else return visitor.visitChildren(this);
23666 		}
23667 	}
23668 
23669 	public final AlterSetOnClauseContext alterSetOnClause() throws RecognitionException {
23670 		AlterSetOnClauseContext _localctx = new AlterSetOnClauseContext(_ctx, getState());
23671 		enterRule(_localctx, 496, RULE_alterSetOnClause);
23672 		int _la;
23673 		try {
23674 			enterOuterAlt(_localctx, 1);
23675 			{
23676 			setState(3414);
23677 			match(LP_);
23678 			setState(3418);
23679 			_errHandler.sync(this);
23680 			_la = _input.LA(1);
23681 			if (_la==HISTORY_TABLE) {
23682 				{
23683 				setState(3415);
23684 				match(HISTORY_TABLE);
23685 				setState(3416);
23686 				match(EQ_);
23687 				setState(3417);
23688 				tableName();
23689 				}
23690 			}
23691 
23692 			setState(3421);
23693 			_errHandler.sync(this);
23694 			switch ( getInterpreter().adaptivePredict(_input,317,_ctx) ) {
23695 			case 1:
23696 				{
23697 				setState(3420);
23698 				dataConsistencyCheckClause();
23699 				}
23700 				break;
23701 			}
23702 			setState(3424);
23703 			_errHandler.sync(this);
23704 			_la = _input.LA(1);
23705 			if (_la==COMMA_ || _la==HISTORY_RETENTION_PERIOD) {
23706 				{
23707 				setState(3423);
23708 				historyRetentionPeriodClause();
23709 				}
23710 			}
23711 
23712 			setState(3426);
23713 			match(RP_);
23714 			}
23715 		}
23716 		catch (RecognitionException re) {
23717 			_localctx.exception = re;
23718 			_errHandler.reportError(this, re);
23719 			_errHandler.recover(this, re);
23720 		}
23721 		finally {
23722 			exitRule();
23723 		}
23724 		return _localctx;
23725 	}
23726 
23727 	public static class DataConsistencyCheckClauseContext extends ParserRuleContext {
23728 		public TerminalNode DATA_CONSISTENCY_CHECK() { return getToken(SQLServerStatementParser.DATA_CONSISTENCY_CHECK, 0); }
23729 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23730 		public OnOffOptionContext onOffOption() {
23731 			return getRuleContext(OnOffOptionContext.class,0);
23732 		}
23733 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
23734 		public DataConsistencyCheckClauseContext(ParserRuleContext parent, int invokingState) {
23735 			super(parent, invokingState);
23736 		}
23737 		@Override public int getRuleIndex() { return RULE_dataConsistencyCheckClause; }
23738 		@Override
23739 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23740 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDataConsistencyCheckClause(this);
23741 			else return visitor.visitChildren(this);
23742 		}
23743 	}
23744 
23745 	public final DataConsistencyCheckClauseContext dataConsistencyCheckClause() throws RecognitionException {
23746 		DataConsistencyCheckClauseContext _localctx = new DataConsistencyCheckClauseContext(_ctx, getState());
23747 		enterRule(_localctx, 498, RULE_dataConsistencyCheckClause);
23748 		int _la;
23749 		try {
23750 			enterOuterAlt(_localctx, 1);
23751 			{
23752 			setState(3429);
23753 			_errHandler.sync(this);
23754 			_la = _input.LA(1);
23755 			if (_la==COMMA_) {
23756 				{
23757 				setState(3428);
23758 				match(COMMA_);
23759 				}
23760 			}
23761 
23762 			setState(3431);
23763 			match(DATA_CONSISTENCY_CHECK);
23764 			setState(3432);
23765 			match(EQ_);
23766 			setState(3433);
23767 			onOffOption();
23768 			}
23769 		}
23770 		catch (RecognitionException re) {
23771 			_localctx.exception = re;
23772 			_errHandler.reportError(this, re);
23773 			_errHandler.recover(this, re);
23774 		}
23775 		finally {
23776 			exitRule();
23777 		}
23778 		return _localctx;
23779 	}
23780 
23781 	public static class HistoryRetentionPeriodClauseContext extends ParserRuleContext {
23782 		public TerminalNode HISTORY_RETENTION_PERIOD() { return getToken(SQLServerStatementParser.HISTORY_RETENTION_PERIOD, 0); }
23783 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
23784 		public HistoryRetentionPeriodContext historyRetentionPeriod() {
23785 			return getRuleContext(HistoryRetentionPeriodContext.class,0);
23786 		}
23787 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
23788 		public HistoryRetentionPeriodClauseContext(ParserRuleContext parent, int invokingState) {
23789 			super(parent, invokingState);
23790 		}
23791 		@Override public int getRuleIndex() { return RULE_historyRetentionPeriodClause; }
23792 		@Override
23793 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23794 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHistoryRetentionPeriodClause(this);
23795 			else return visitor.visitChildren(this);
23796 		}
23797 	}
23798 
23799 	public final HistoryRetentionPeriodClauseContext historyRetentionPeriodClause() throws RecognitionException {
23800 		HistoryRetentionPeriodClauseContext _localctx = new HistoryRetentionPeriodClauseContext(_ctx, getState());
23801 		enterRule(_localctx, 500, RULE_historyRetentionPeriodClause);
23802 		int _la;
23803 		try {
23804 			enterOuterAlt(_localctx, 1);
23805 			{
23806 			setState(3436);
23807 			_errHandler.sync(this);
23808 			_la = _input.LA(1);
23809 			if (_la==COMMA_) {
23810 				{
23811 				setState(3435);
23812 				match(COMMA_);
23813 				}
23814 			}
23815 
23816 			setState(3438);
23817 			match(HISTORY_RETENTION_PERIOD);
23818 			setState(3439);
23819 			match(EQ_);
23820 			setState(3440);
23821 			historyRetentionPeriod();
23822 			}
23823 		}
23824 		catch (RecognitionException re) {
23825 			_localctx.exception = re;
23826 			_errHandler.reportError(this, re);
23827 			_errHandler.recover(this, re);
23828 		}
23829 		finally {
23830 			exitRule();
23831 		}
23832 		return _localctx;
23833 	}
23834 
23835 	public static class HistoryRetentionPeriodContext extends ParserRuleContext {
23836 		public TerminalNode INFINITE() { return getToken(SQLServerStatementParser.INFINITE, 0); }
23837 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
23838 		public TerminalNode DAY() { return getToken(SQLServerStatementParser.DAY, 0); }
23839 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
23840 		public TerminalNode WEEK() { return getToken(SQLServerStatementParser.WEEK, 0); }
23841 		public TerminalNode WEEKS() { return getToken(SQLServerStatementParser.WEEKS, 0); }
23842 		public TerminalNode MONTH() { return getToken(SQLServerStatementParser.MONTH, 0); }
23843 		public TerminalNode MONTHS() { return getToken(SQLServerStatementParser.MONTHS, 0); }
23844 		public TerminalNode YEAR() { return getToken(SQLServerStatementParser.YEAR, 0); }
23845 		public TerminalNode YEARS() { return getToken(SQLServerStatementParser.YEARS, 0); }
23846 		public HistoryRetentionPeriodContext(ParserRuleContext parent, int invokingState) {
23847 			super(parent, invokingState);
23848 		}
23849 		@Override public int getRuleIndex() { return RULE_historyRetentionPeriod; }
23850 		@Override
23851 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23852 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHistoryRetentionPeriod(this);
23853 			else return visitor.visitChildren(this);
23854 		}
23855 	}
23856 
23857 	public final HistoryRetentionPeriodContext historyRetentionPeriod() throws RecognitionException {
23858 		HistoryRetentionPeriodContext _localctx = new HistoryRetentionPeriodContext(_ctx, getState());
23859 		enterRule(_localctx, 502, RULE_historyRetentionPeriod);
23860 		int _la;
23861 		try {
23862 			setState(3445);
23863 			_errHandler.sync(this);
23864 			switch (_input.LA(1)) {
23865 			case INFINITE:
23866 				enterOuterAlt(_localctx, 1);
23867 				{
23868 				setState(3442);
23869 				match(INFINITE);
23870 				}
23871 				break;
23872 			case NUMBER_:
23873 				enterOuterAlt(_localctx, 2);
23874 				{
23875 				{
23876 				setState(3443);
23877 				match(NUMBER_);
23878 				setState(3444);
23879 				_la = _input.LA(1);
23880 				if ( !(((((_la - 140)) & ~0x3f) == 0 && ((1L << (_la - 140)) & ((1L << (YEAR - 140)) | (1L << (MONTH - 140)) | (1L << (WEEK - 140)) | (1L << (DAY - 140)))) != 0) || ((((_la - 275)) & ~0x3f) == 0 && ((1L << (_la - 275)) & ((1L << (YEARS - 275)) | (1L << (MONTHS - 275)) | (1L << (WEEKS - 275)) | (1L << (DAYS - 275)))) != 0)) ) {
23881 				_errHandler.recoverInline(this);
23882 				}
23883 				else {
23884 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
23885 					_errHandler.reportMatch(this);
23886 					consume();
23887 				}
23888 				}
23889 				}
23890 				break;
23891 			default:
23892 				throw new NoViableAltException(this);
23893 			}
23894 		}
23895 		catch (RecognitionException re) {
23896 			_localctx.exception = re;
23897 			_errHandler.reportError(this, re);
23898 			_errHandler.recover(this, re);
23899 		}
23900 		finally {
23901 			exitRule();
23902 		}
23903 		return _localctx;
23904 	}
23905 
23906 	public static class AlterTableTableIndexContext extends ParserRuleContext {
23907 		public IndexWithNameContext indexWithName() {
23908 			return getRuleContext(IndexWithNameContext.class,0);
23909 		}
23910 		public IndexNonClusterClauseContext indexNonClusterClause() {
23911 			return getRuleContext(IndexNonClusterClauseContext.class,0);
23912 		}
23913 		public IndexClusterClauseContext indexClusterClause() {
23914 			return getRuleContext(IndexClusterClauseContext.class,0);
23915 		}
23916 		public AlterTableTableIndexContext(ParserRuleContext parent, int invokingState) {
23917 			super(parent, invokingState);
23918 		}
23919 		@Override public int getRuleIndex() { return RULE_alterTableTableIndex; }
23920 		@Override
23921 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23922 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableTableIndex(this);
23923 			else return visitor.visitChildren(this);
23924 		}
23925 	}
23926 
23927 	public final AlterTableTableIndexContext alterTableTableIndex() throws RecognitionException {
23928 		AlterTableTableIndexContext _localctx = new AlterTableTableIndexContext(_ctx, getState());
23929 		enterRule(_localctx, 504, RULE_alterTableTableIndex);
23930 		try {
23931 			enterOuterAlt(_localctx, 1);
23932 			{
23933 			setState(3447);
23934 			indexWithName();
23935 			setState(3450);
23936 			_errHandler.sync(this);
23937 			switch (_input.LA(1)) {
23938 			case NONCLUSTERED:
23939 				{
23940 				setState(3448);
23941 				indexNonClusterClause();
23942 				}
23943 				break;
23944 			case CLUSTERED:
23945 				{
23946 				setState(3449);
23947 				indexClusterClause();
23948 				}
23949 				break;
23950 			default:
23951 				throw new NoViableAltException(this);
23952 			}
23953 			}
23954 		}
23955 		catch (RecognitionException re) {
23956 			_localctx.exception = re;
23957 			_errHandler.reportError(this, re);
23958 			_errHandler.recover(this, re);
23959 		}
23960 		finally {
23961 			exitRule();
23962 		}
23963 		return _localctx;
23964 	}
23965 
23966 	public static class IndexWithNameContext extends ParserRuleContext {
23967 		public TerminalNode INDEX() { return getToken(SQLServerStatementParser.INDEX, 0); }
23968 		public IndexNameContext indexName() {
23969 			return getRuleContext(IndexNameContext.class,0);
23970 		}
23971 		public IndexWithNameContext(ParserRuleContext parent, int invokingState) {
23972 			super(parent, invokingState);
23973 		}
23974 		@Override public int getRuleIndex() { return RULE_indexWithName; }
23975 		@Override
23976 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
23977 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexWithName(this);
23978 			else return visitor.visitChildren(this);
23979 		}
23980 	}
23981 
23982 	public final IndexWithNameContext indexWithName() throws RecognitionException {
23983 		IndexWithNameContext _localctx = new IndexWithNameContext(_ctx, getState());
23984 		enterRule(_localctx, 506, RULE_indexWithName);
23985 		try {
23986 			enterOuterAlt(_localctx, 1);
23987 			{
23988 			setState(3452);
23989 			match(INDEX);
23990 			setState(3453);
23991 			indexName();
23992 			}
23993 		}
23994 		catch (RecognitionException re) {
23995 			_localctx.exception = re;
23996 			_errHandler.reportError(this, re);
23997 			_errHandler.recover(this, re);
23998 		}
23999 		finally {
24000 			exitRule();
24001 		}
24002 		return _localctx;
24003 	}
24004 
24005 	public static class IndexNonClusterClauseContext extends ParserRuleContext {
24006 		public TerminalNode NONCLUSTERED() { return getToken(SQLServerStatementParser.NONCLUSTERED, 0); }
24007 		public HashWithBucketContext hashWithBucket() {
24008 			return getRuleContext(HashWithBucketContext.class,0);
24009 		}
24010 		public ColumnNamesWithSortContext columnNamesWithSort() {
24011 			return getRuleContext(ColumnNamesWithSortContext.class,0);
24012 		}
24013 		public AlterTableIndexOnClauseContext alterTableIndexOnClause() {
24014 			return getRuleContext(AlterTableIndexOnClauseContext.class,0);
24015 		}
24016 		public IndexNonClusterClauseContext(ParserRuleContext parent, int invokingState) {
24017 			super(parent, invokingState);
24018 		}
24019 		@Override public int getRuleIndex() { return RULE_indexNonClusterClause; }
24020 		@Override
24021 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24022 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexNonClusterClause(this);
24023 			else return visitor.visitChildren(this);
24024 		}
24025 	}
24026 
24027 	public final IndexNonClusterClauseContext indexNonClusterClause() throws RecognitionException {
24028 		IndexNonClusterClauseContext _localctx = new IndexNonClusterClauseContext(_ctx, getState());
24029 		enterRule(_localctx, 508, RULE_indexNonClusterClause);
24030 		int _la;
24031 		try {
24032 			enterOuterAlt(_localctx, 1);
24033 			{
24034 			setState(3455);
24035 			match(NONCLUSTERED);
24036 			setState(3461);
24037 			_errHandler.sync(this);
24038 			switch (_input.LA(1)) {
24039 			case HASH:
24040 				{
24041 				setState(3456);
24042 				hashWithBucket();
24043 				}
24044 				break;
24045 			case LP_:
24046 				{
24047 				setState(3457);
24048 				columnNamesWithSort();
24049 				setState(3459);
24050 				_errHandler.sync(this);
24051 				_la = _input.LA(1);
24052 				if (_la==ON || _la==DEFAULT) {
24053 					{
24054 					setState(3458);
24055 					alterTableIndexOnClause();
24056 					}
24057 				}
24058 
24059 				}
24060 				break;
24061 			default:
24062 				throw new NoViableAltException(this);
24063 			}
24064 			}
24065 		}
24066 		catch (RecognitionException re) {
24067 			_localctx.exception = re;
24068 			_errHandler.reportError(this, re);
24069 			_errHandler.recover(this, re);
24070 		}
24071 		finally {
24072 			exitRule();
24073 		}
24074 		return _localctx;
24075 	}
24076 
24077 	public static class AlterTableIndexOnClauseContext extends ParserRuleContext {
24078 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
24079 		public IgnoredIdentifierContext ignoredIdentifier() {
24080 			return getRuleContext(IgnoredIdentifierContext.class,0);
24081 		}
24082 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
24083 		public AlterTableIndexOnClauseContext(ParserRuleContext parent, int invokingState) {
24084 			super(parent, invokingState);
24085 		}
24086 		@Override public int getRuleIndex() { return RULE_alterTableIndexOnClause; }
24087 		@Override
24088 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24089 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableIndexOnClause(this);
24090 			else return visitor.visitChildren(this);
24091 		}
24092 	}
24093 
24094 	public final AlterTableIndexOnClauseContext alterTableIndexOnClause() throws RecognitionException {
24095 		AlterTableIndexOnClauseContext _localctx = new AlterTableIndexOnClauseContext(_ctx, getState());
24096 		enterRule(_localctx, 510, RULE_alterTableIndexOnClause);
24097 		try {
24098 			setState(3466);
24099 			_errHandler.sync(this);
24100 			switch (_input.LA(1)) {
24101 			case ON:
24102 				enterOuterAlt(_localctx, 1);
24103 				{
24104 				setState(3463);
24105 				match(ON);
24106 				setState(3464);
24107 				ignoredIdentifier();
24108 				}
24109 				break;
24110 			case DEFAULT:
24111 				enterOuterAlt(_localctx, 2);
24112 				{
24113 				setState(3465);
24114 				match(DEFAULT);
24115 				}
24116 				break;
24117 			default:
24118 				throw new NoViableAltException(this);
24119 			}
24120 		}
24121 		catch (RecognitionException re) {
24122 			_localctx.exception = re;
24123 			_errHandler.reportError(this, re);
24124 			_errHandler.recover(this, re);
24125 		}
24126 		finally {
24127 			exitRule();
24128 		}
24129 		return _localctx;
24130 	}
24131 
24132 	public static class IndexClusterClauseContext extends ParserRuleContext {
24133 		public TerminalNode CLUSTERED() { return getToken(SQLServerStatementParser.CLUSTERED, 0); }
24134 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
24135 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
24136 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
24137 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
24138 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
24139 		public IndexOnClauseContext indexOnClause() {
24140 			return getRuleContext(IndexOnClauseContext.class,0);
24141 		}
24142 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
24143 		public IndexClusterClauseContext(ParserRuleContext parent, int invokingState) {
24144 			super(parent, invokingState);
24145 		}
24146 		@Override public int getRuleIndex() { return RULE_indexClusterClause; }
24147 		@Override
24148 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24149 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIndexClusterClause(this);
24150 			else return visitor.visitChildren(this);
24151 		}
24152 	}
24153 
24154 	public final IndexClusterClauseContext indexClusterClause() throws RecognitionException {
24155 		IndexClusterClauseContext _localctx = new IndexClusterClauseContext(_ctx, getState());
24156 		enterRule(_localctx, 512, RULE_indexClusterClause);
24157 		int _la;
24158 		try {
24159 			enterOuterAlt(_localctx, 1);
24160 			{
24161 			setState(3468);
24162 			match(CLUSTERED);
24163 			setState(3469);
24164 			match(COLUMNSTORE);
24165 			setState(3477);
24166 			_errHandler.sync(this);
24167 			switch ( getInterpreter().adaptivePredict(_input,327,_ctx) ) {
24168 			case 1:
24169 				{
24170 				setState(3470);
24171 				match(WITH);
24172 				setState(3471);
24173 				match(COMPRESSION_DELAY);
24174 				setState(3472);
24175 				match(EQ_);
24176 				setState(3473);
24177 				match(NUMBER_);
24178 				setState(3475);
24179 				_errHandler.sync(this);
24180 				_la = _input.LA(1);
24181 				if (_la==MINUTES) {
24182 					{
24183 					setState(3474);
24184 					match(MINUTES);
24185 					}
24186 				}
24187 
24188 				}
24189 				break;
24190 			}
24191 			setState(3480);
24192 			_errHandler.sync(this);
24193 			_la = _input.LA(1);
24194 			if (_la==ON) {
24195 				{
24196 				setState(3479);
24197 				indexOnClause();
24198 				}
24199 			}
24200 
24201 			}
24202 		}
24203 		catch (RecognitionException re) {
24204 			_localctx.exception = re;
24205 			_errHandler.reportError(this, re);
24206 			_errHandler.recover(this, re);
24207 		}
24208 		finally {
24209 			exitRule();
24210 		}
24211 		return _localctx;
24212 	}
24213 
24214 	public static class AlterTableOptionContext extends ParserRuleContext {
24215 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
24216 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
24217 		public TerminalNode LOCK_ESCALATION() { return getToken(SQLServerStatementParser.LOCK_ESCALATION, 0); }
24218 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
24219 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
24220 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
24221 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
24222 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
24223 		public TerminalNode MEMORY_OPTIMIZED() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED, 0); }
24224 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
24225 		public TerminalNode DURABILITY() { return getToken(SQLServerStatementParser.DURABILITY, 0); }
24226 		public TerminalNode SCHEMA_ONLY() { return getToken(SQLServerStatementParser.SCHEMA_ONLY, 0); }
24227 		public TerminalNode SCHEMA_AND_DATA() { return getToken(SQLServerStatementParser.SCHEMA_AND_DATA, 0); }
24228 		public TerminalNode SYSTEM_VERSIONING() { return getToken(SQLServerStatementParser.SYSTEM_VERSIONING, 0); }
24229 		public OnHistoryTableClauseContext onHistoryTableClause() {
24230 			return getRuleContext(OnHistoryTableClauseContext.class,0);
24231 		}
24232 		public AlterTableOptionContext(ParserRuleContext parent, int invokingState) {
24233 			super(parent, invokingState);
24234 		}
24235 		@Override public int getRuleIndex() { return RULE_alterTableOption; }
24236 		@Override
24237 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24238 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterTableOption(this);
24239 			else return visitor.visitChildren(this);
24240 		}
24241 	}
24242 
24243 	public final AlterTableOptionContext alterTableOption() throws RecognitionException {
24244 		AlterTableOptionContext _localctx = new AlterTableOptionContext(_ctx, getState());
24245 		enterRule(_localctx, 514, RULE_alterTableOption);
24246 		int _la;
24247 		try {
24248 			setState(3500);
24249 			_errHandler.sync(this);
24250 			switch (_input.LA(1)) {
24251 			case SET:
24252 				enterOuterAlt(_localctx, 1);
24253 				{
24254 				setState(3482);
24255 				match(SET);
24256 				setState(3483);
24257 				match(LP_);
24258 				setState(3484);
24259 				match(LOCK_ESCALATION);
24260 				setState(3485);
24261 				match(EQ_);
24262 				setState(3486);
24263 				_la = _input.LA(1);
24264 				if ( !(_la==TABLE || _la==DISABLE || _la==AUTO) ) {
24265 				_errHandler.recoverInline(this);
24266 				}
24267 				else {
24268 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24269 					_errHandler.reportMatch(this);
24270 					consume();
24271 				}
24272 				setState(3487);
24273 				match(RP_);
24274 				}
24275 				break;
24276 			case MEMORY_OPTIMIZED:
24277 				enterOuterAlt(_localctx, 2);
24278 				{
24279 				setState(3488);
24280 				match(MEMORY_OPTIMIZED);
24281 				setState(3489);
24282 				match(EQ_);
24283 				setState(3490);
24284 				match(ON);
24285 				}
24286 				break;
24287 			case DURABILITY:
24288 				enterOuterAlt(_localctx, 3);
24289 				{
24290 				setState(3491);
24291 				match(DURABILITY);
24292 				setState(3492);
24293 				match(EQ_);
24294 				setState(3493);
24295 				_la = _input.LA(1);
24296 				if ( !(_la==SCHEMA_AND_DATA || _la==SCHEMA_ONLY) ) {
24297 				_errHandler.recoverInline(this);
24298 				}
24299 				else {
24300 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24301 					_errHandler.reportMatch(this);
24302 					consume();
24303 				}
24304 				}
24305 				break;
24306 			case SYSTEM_VERSIONING:
24307 				enterOuterAlt(_localctx, 4);
24308 				{
24309 				setState(3494);
24310 				match(SYSTEM_VERSIONING);
24311 				setState(3495);
24312 				match(EQ_);
24313 				setState(3496);
24314 				match(ON);
24315 				setState(3498);
24316 				_errHandler.sync(this);
24317 				_la = _input.LA(1);
24318 				if (_la==LP_) {
24319 					{
24320 					setState(3497);
24321 					onHistoryTableClause();
24322 					}
24323 				}
24324 
24325 				}
24326 				break;
24327 			default:
24328 				throw new NoViableAltException(this);
24329 			}
24330 		}
24331 		catch (RecognitionException re) {
24332 			_localctx.exception = re;
24333 			_errHandler.reportError(this, re);
24334 			_errHandler.recover(this, re);
24335 		}
24336 		finally {
24337 			exitRule();
24338 		}
24339 		return _localctx;
24340 	}
24341 
24342 	public static class OnHistoryTableClauseContext extends ParserRuleContext {
24343 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
24344 		public TerminalNode HISTORY_TABLE() { return getToken(SQLServerStatementParser.HISTORY_TABLE, 0); }
24345 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
24346 		public TerminalNode EQ_(int i) {
24347 			return getToken(SQLServerStatementParser.EQ_, i);
24348 		}
24349 		public TableNameContext tableName() {
24350 			return getRuleContext(TableNameContext.class,0);
24351 		}
24352 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
24353 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
24354 		public TerminalNode DATA_CONSISTENCY_CHECK() { return getToken(SQLServerStatementParser.DATA_CONSISTENCY_CHECK, 0); }
24355 		public OnOffOptionContext onOffOption() {
24356 			return getRuleContext(OnOffOptionContext.class,0);
24357 		}
24358 		public OnHistoryTableClauseContext(ParserRuleContext parent, int invokingState) {
24359 			super(parent, invokingState);
24360 		}
24361 		@Override public int getRuleIndex() { return RULE_onHistoryTableClause; }
24362 		@Override
24363 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24364 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnHistoryTableClause(this);
24365 			else return visitor.visitChildren(this);
24366 		}
24367 	}
24368 
24369 	public final OnHistoryTableClauseContext onHistoryTableClause() throws RecognitionException {
24370 		OnHistoryTableClauseContext _localctx = new OnHistoryTableClauseContext(_ctx, getState());
24371 		enterRule(_localctx, 516, RULE_onHistoryTableClause);
24372 		int _la;
24373 		try {
24374 			enterOuterAlt(_localctx, 1);
24375 			{
24376 			setState(3502);
24377 			match(LP_);
24378 			setState(3503);
24379 			match(HISTORY_TABLE);
24380 			setState(3504);
24381 			match(EQ_);
24382 			setState(3505);
24383 			tableName();
24384 			setState(3510);
24385 			_errHandler.sync(this);
24386 			_la = _input.LA(1);
24387 			if (_la==COMMA_) {
24388 				{
24389 				setState(3506);
24390 				match(COMMA_);
24391 				setState(3507);
24392 				match(DATA_CONSISTENCY_CHECK);
24393 				setState(3508);
24394 				match(EQ_);
24395 				setState(3509);
24396 				onOffOption();
24397 				}
24398 			}
24399 
24400 			setState(3512);
24401 			match(RP_);
24402 			}
24403 		}
24404 		catch (RecognitionException re) {
24405 			_localctx.exception = re;
24406 			_errHandler.reportError(this, re);
24407 			_errHandler.recover(this, re);
24408 		}
24409 		finally {
24410 			exitRule();
24411 		}
24412 		return _localctx;
24413 	}
24414 
24415 	public static class CreateDatabaseClauseContext extends ParserRuleContext {
24416 		public TerminalNode CONTAINMENT() { return getToken(SQLServerStatementParser.CONTAINMENT, 0); }
24417 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
24418 		public FileDefinitionClauseContext fileDefinitionClause() {
24419 			return getRuleContext(FileDefinitionClauseContext.class,0);
24420 		}
24421 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
24422 		public IgnoredIdentifierContext ignoredIdentifier() {
24423 			return getRuleContext(IgnoredIdentifierContext.class,0);
24424 		}
24425 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
24426 		public List<DatabaseOptionContext> databaseOption() {
24427 			return getRuleContexts(DatabaseOptionContext.class);
24428 		}
24429 		public DatabaseOptionContext databaseOption(int i) {
24430 			return getRuleContext(DatabaseOptionContext.class,i);
24431 		}
24432 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
24433 		public TerminalNode PARTIAL() { return getToken(SQLServerStatementParser.PARTIAL, 0); }
24434 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24435 		public TerminalNode COMMA_(int i) {
24436 			return getToken(SQLServerStatementParser.COMMA_, i);
24437 		}
24438 		public CreateDatabaseClauseContext(ParserRuleContext parent, int invokingState) {
24439 			super(parent, invokingState);
24440 		}
24441 		@Override public int getRuleIndex() { return RULE_createDatabaseClause; }
24442 		@Override
24443 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24444 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateDatabaseClause(this);
24445 			else return visitor.visitChildren(this);
24446 		}
24447 	}
24448 
24449 	public final CreateDatabaseClauseContext createDatabaseClause() throws RecognitionException {
24450 		CreateDatabaseClauseContext _localctx = new CreateDatabaseClauseContext(_ctx, getState());
24451 		enterRule(_localctx, 518, RULE_createDatabaseClause);
24452 		int _la;
24453 		try {
24454 			enterOuterAlt(_localctx, 1);
24455 			{
24456 			setState(3517);
24457 			_errHandler.sync(this);
24458 			_la = _input.LA(1);
24459 			if (_la==CONTAINMENT) {
24460 				{
24461 				setState(3514);
24462 				match(CONTAINMENT);
24463 				setState(3515);
24464 				match(EQ_);
24465 				setState(3516);
24466 				_la = _input.LA(1);
24467 				if ( !(_la==NONE || _la==PARTIAL) ) {
24468 				_errHandler.recoverInline(this);
24469 				}
24470 				else {
24471 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24472 					_errHandler.reportMatch(this);
24473 					consume();
24474 				}
24475 				}
24476 			}
24477 
24478 			setState(3520);
24479 			_errHandler.sync(this);
24480 			_la = _input.LA(1);
24481 			if (_la==ON) {
24482 				{
24483 				setState(3519);
24484 				fileDefinitionClause();
24485 				}
24486 			}
24487 
24488 			setState(3524);
24489 			_errHandler.sync(this);
24490 			_la = _input.LA(1);
24491 			if (_la==COLLATE) {
24492 				{
24493 				setState(3522);
24494 				match(COLLATE);
24495 				setState(3523);
24496 				ignoredIdentifier();
24497 				}
24498 			}
24499 
24500 			setState(3535);
24501 			_errHandler.sync(this);
24502 			_la = _input.LA(1);
24503 			if (_la==WITH) {
24504 				{
24505 				setState(3526);
24506 				match(WITH);
24507 				setState(3527);
24508 				databaseOption();
24509 				setState(3532);
24510 				_errHandler.sync(this);
24511 				_la = _input.LA(1);
24512 				while (_la==COMMA_) {
24513 					{
24514 					{
24515 					setState(3528);
24516 					match(COMMA_);
24517 					setState(3529);
24518 					databaseOption();
24519 					}
24520 					}
24521 					setState(3534);
24522 					_errHandler.sync(this);
24523 					_la = _input.LA(1);
24524 				}
24525 				}
24526 			}
24527 
24528 			}
24529 		}
24530 		catch (RecognitionException re) {
24531 			_localctx.exception = re;
24532 			_errHandler.reportError(this, re);
24533 			_errHandler.recover(this, re);
24534 		}
24535 		finally {
24536 			exitRule();
24537 		}
24538 		return _localctx;
24539 	}
24540 
24541 	public static class FileDefinitionClauseContext extends ParserRuleContext {
24542 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
24543 		public List<FileSpecContext> fileSpec() {
24544 			return getRuleContexts(FileSpecContext.class);
24545 		}
24546 		public FileSpecContext fileSpec(int i) {
24547 			return getRuleContext(FileSpecContext.class,i);
24548 		}
24549 		public DatabaseLogOnsContext databaseLogOns() {
24550 			return getRuleContext(DatabaseLogOnsContext.class,0);
24551 		}
24552 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
24553 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24554 		public TerminalNode COMMA_(int i) {
24555 			return getToken(SQLServerStatementParser.COMMA_, i);
24556 		}
24557 		public List<DatabaseFileGroupContext> databaseFileGroup() {
24558 			return getRuleContexts(DatabaseFileGroupContext.class);
24559 		}
24560 		public DatabaseFileGroupContext databaseFileGroup(int i) {
24561 			return getRuleContext(DatabaseFileGroupContext.class,i);
24562 		}
24563 		public FileDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
24564 			super(parent, invokingState);
24565 		}
24566 		@Override public int getRuleIndex() { return RULE_fileDefinitionClause; }
24567 		@Override
24568 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24569 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileDefinitionClause(this);
24570 			else return visitor.visitChildren(this);
24571 		}
24572 	}
24573 
24574 	public final FileDefinitionClauseContext fileDefinitionClause() throws RecognitionException {
24575 		FileDefinitionClauseContext _localctx = new FileDefinitionClauseContext(_ctx, getState());
24576 		enterRule(_localctx, 520, RULE_fileDefinitionClause);
24577 		int _la;
24578 		try {
24579 			int _alt;
24580 			enterOuterAlt(_localctx, 1);
24581 			{
24582 			setState(3537);
24583 			match(ON);
24584 			setState(3539);
24585 			_errHandler.sync(this);
24586 			_la = _input.LA(1);
24587 			if (_la==PRIMARY) {
24588 				{
24589 				setState(3538);
24590 				match(PRIMARY);
24591 				}
24592 			}
24593 
24594 			setState(3541);
24595 			fileSpec();
24596 			setState(3546);
24597 			_errHandler.sync(this);
24598 			_alt = getInterpreter().adaptivePredict(_input,338,_ctx);
24599 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
24600 				if ( _alt==1 ) {
24601 					{
24602 					{
24603 					setState(3542);
24604 					match(COMMA_);
24605 					setState(3543);
24606 					fileSpec();
24607 					}
24608 					} 
24609 				}
24610 				setState(3548);
24611 				_errHandler.sync(this);
24612 				_alt = getInterpreter().adaptivePredict(_input,338,_ctx);
24613 			}
24614 			setState(3553);
24615 			_errHandler.sync(this);
24616 			_la = _input.LA(1);
24617 			while (_la==COMMA_) {
24618 				{
24619 				{
24620 				setState(3549);
24621 				match(COMMA_);
24622 				setState(3550);
24623 				databaseFileGroup();
24624 				}
24625 				}
24626 				setState(3555);
24627 				_errHandler.sync(this);
24628 				_la = _input.LA(1);
24629 			}
24630 			setState(3556);
24631 			databaseLogOns();
24632 			}
24633 		}
24634 		catch (RecognitionException re) {
24635 			_localctx.exception = re;
24636 			_errHandler.reportError(this, re);
24637 			_errHandler.recover(this, re);
24638 		}
24639 		finally {
24640 			exitRule();
24641 		}
24642 		return _localctx;
24643 	}
24644 
24645 	public static class DatabaseOptionContext extends ParserRuleContext {
24646 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
24647 		public List<FileStreamOptionContext> fileStreamOption() {
24648 			return getRuleContexts(FileStreamOptionContext.class);
24649 		}
24650 		public FileStreamOptionContext fileStreamOption(int i) {
24651 			return getRuleContext(FileStreamOptionContext.class,i);
24652 		}
24653 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
24654 		public TerminalNode COMMA_(int i) {
24655 			return getToken(SQLServerStatementParser.COMMA_, i);
24656 		}
24657 		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
24658 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
24659 		public TerminalNode EQ_(int i) {
24660 			return getToken(SQLServerStatementParser.EQ_, i);
24661 		}
24662 		public IgnoredIdentifierContext ignoredIdentifier() {
24663 			return getRuleContext(IgnoredIdentifierContext.class,0);
24664 		}
24665 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
24666 		public TerminalNode NESTED_TRIGGERS() { return getToken(SQLServerStatementParser.NESTED_TRIGGERS, 0); }
24667 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
24668 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
24669 		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(SQLServerStatementParser.TRANSFORM_NOISE_WORDS, 0); }
24670 		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(SQLServerStatementParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
24671 		public TerminalNode DB_CHAINING() { return getToken(SQLServerStatementParser.DB_CHAINING, 0); }
24672 		public TerminalNode TRUSTWORTHY() { return getToken(SQLServerStatementParser.TRUSTWORTHY, 0); }
24673 		public TerminalNode PERSISTENT_LOG_BUFFER() { return getToken(SQLServerStatementParser.PERSISTENT_LOG_BUFFER, 0); }
24674 		public TerminalNode DIRECTORY_NAME() { return getToken(SQLServerStatementParser.DIRECTORY_NAME, 0); }
24675 		public DatabaseOptionContext(ParserRuleContext parent, int invokingState) {
24676 			super(parent, invokingState);
24677 		}
24678 		@Override public int getRuleIndex() { return RULE_databaseOption; }
24679 		@Override
24680 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24681 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseOption(this);
24682 			else return visitor.visitChildren(this);
24683 		}
24684 	}
24685 
24686 	public final DatabaseOptionContext databaseOption() throws RecognitionException {
24687 		DatabaseOptionContext _localctx = new DatabaseOptionContext(_ctx, getState());
24688 		enterRule(_localctx, 522, RULE_databaseOption);
24689 		int _la;
24690 		try {
24691 			int _alt;
24692 			setState(3592);
24693 			_errHandler.sync(this);
24694 			switch (_input.LA(1)) {
24695 			case FILESTREAM:
24696 				enterOuterAlt(_localctx, 1);
24697 				{
24698 				setState(3558);
24699 				match(FILESTREAM);
24700 				setState(3559);
24701 				fileStreamOption();
24702 				setState(3564);
24703 				_errHandler.sync(this);
24704 				_alt = getInterpreter().adaptivePredict(_input,340,_ctx);
24705 				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
24706 					if ( _alt==1 ) {
24707 						{
24708 						{
24709 						setState(3560);
24710 						match(COMMA_);
24711 						setState(3561);
24712 						fileStreamOption();
24713 						}
24714 						} 
24715 					}
24716 					setState(3566);
24717 					_errHandler.sync(this);
24718 					_alt = getInterpreter().adaptivePredict(_input,340,_ctx);
24719 				}
24720 				}
24721 				break;
24722 			case DEFAULT_FULLTEXT_LANGUAGE:
24723 				enterOuterAlt(_localctx, 2);
24724 				{
24725 				setState(3567);
24726 				match(DEFAULT_FULLTEXT_LANGUAGE);
24727 				setState(3568);
24728 				match(EQ_);
24729 				setState(3569);
24730 				ignoredIdentifier();
24731 				}
24732 				break;
24733 			case DEFAULT_LANGUAGE:
24734 				enterOuterAlt(_localctx, 3);
24735 				{
24736 				setState(3570);
24737 				match(DEFAULT_LANGUAGE);
24738 				setState(3571);
24739 				match(EQ_);
24740 				setState(3572);
24741 				ignoredIdentifier();
24742 				}
24743 				break;
24744 			case NESTED_TRIGGERS:
24745 				enterOuterAlt(_localctx, 4);
24746 				{
24747 				setState(3573);
24748 				match(NESTED_TRIGGERS);
24749 				setState(3574);
24750 				match(EQ_);
24751 				setState(3575);
24752 				_la = _input.LA(1);
24753 				if ( !(_la==ON || _la==OFF) ) {
24754 				_errHandler.recoverInline(this);
24755 				}
24756 				else {
24757 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24758 					_errHandler.reportMatch(this);
24759 					consume();
24760 				}
24761 				}
24762 				break;
24763 			case TRANSFORM_NOISE_WORDS:
24764 				enterOuterAlt(_localctx, 5);
24765 				{
24766 				setState(3576);
24767 				match(TRANSFORM_NOISE_WORDS);
24768 				setState(3577);
24769 				match(EQ_);
24770 				setState(3578);
24771 				_la = _input.LA(1);
24772 				if ( !(_la==ON || _la==OFF) ) {
24773 				_errHandler.recoverInline(this);
24774 				}
24775 				else {
24776 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24777 					_errHandler.reportMatch(this);
24778 					consume();
24779 				}
24780 				}
24781 				break;
24782 			case TWO_DIGIT_YEAR_CUTOFF:
24783 				enterOuterAlt(_localctx, 6);
24784 				{
24785 				setState(3579);
24786 				match(TWO_DIGIT_YEAR_CUTOFF);
24787 				setState(3580);
24788 				match(EQ_);
24789 				setState(3581);
24790 				ignoredIdentifier();
24791 				}
24792 				break;
24793 			case DB_CHAINING:
24794 				enterOuterAlt(_localctx, 7);
24795 				{
24796 				setState(3582);
24797 				match(DB_CHAINING);
24798 				setState(3583);
24799 				_la = _input.LA(1);
24800 				if ( !(_la==ON || _la==OFF) ) {
24801 				_errHandler.recoverInline(this);
24802 				}
24803 				else {
24804 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24805 					_errHandler.reportMatch(this);
24806 					consume();
24807 				}
24808 				}
24809 				break;
24810 			case TRUSTWORTHY:
24811 				enterOuterAlt(_localctx, 8);
24812 				{
24813 				setState(3584);
24814 				match(TRUSTWORTHY);
24815 				setState(3585);
24816 				_la = _input.LA(1);
24817 				if ( !(_la==ON || _la==OFF) ) {
24818 				_errHandler.recoverInline(this);
24819 				}
24820 				else {
24821 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24822 					_errHandler.reportMatch(this);
24823 					consume();
24824 				}
24825 				}
24826 				break;
24827 			case PERSISTENT_LOG_BUFFER:
24828 				enterOuterAlt(_localctx, 9);
24829 				{
24830 				setState(3586);
24831 				match(PERSISTENT_LOG_BUFFER);
24832 				setState(3587);
24833 				match(EQ_);
24834 				setState(3588);
24835 				match(ON);
24836 				{
24837 				setState(3589);
24838 				match(DIRECTORY_NAME);
24839 				setState(3590);
24840 				match(EQ_);
24841 				setState(3591);
24842 				ignoredIdentifier();
24843 				}
24844 				}
24845 				break;
24846 			default:
24847 				throw new NoViableAltException(this);
24848 			}
24849 		}
24850 		catch (RecognitionException re) {
24851 			_localctx.exception = re;
24852 			_errHandler.reportError(this, re);
24853 			_errHandler.recover(this, re);
24854 		}
24855 		finally {
24856 			exitRule();
24857 		}
24858 		return _localctx;
24859 	}
24860 
24861 	public static class FileStreamOptionContext extends ParserRuleContext {
24862 		public TerminalNode NON_TRANSACTED_ACCESS() { return getToken(SQLServerStatementParser.NON_TRANSACTED_ACCESS, 0); }
24863 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
24864 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
24865 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
24866 		public TerminalNode FULL() { return getToken(SQLServerStatementParser.FULL, 0); }
24867 		public TerminalNode DIRECTORY_NAME() { return getToken(SQLServerStatementParser.DIRECTORY_NAME, 0); }
24868 		public IgnoredIdentifierContext ignoredIdentifier() {
24869 			return getRuleContext(IgnoredIdentifierContext.class,0);
24870 		}
24871 		public FileStreamOptionContext(ParserRuleContext parent, int invokingState) {
24872 			super(parent, invokingState);
24873 		}
24874 		@Override public int getRuleIndex() { return RULE_fileStreamOption; }
24875 		@Override
24876 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24877 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileStreamOption(this);
24878 			else return visitor.visitChildren(this);
24879 		}
24880 	}
24881 
24882 	public final FileStreamOptionContext fileStreamOption() throws RecognitionException {
24883 		FileStreamOptionContext _localctx = new FileStreamOptionContext(_ctx, getState());
24884 		enterRule(_localctx, 524, RULE_fileStreamOption);
24885 		int _la;
24886 		try {
24887 			setState(3600);
24888 			_errHandler.sync(this);
24889 			switch (_input.LA(1)) {
24890 			case NON_TRANSACTED_ACCESS:
24891 				enterOuterAlt(_localctx, 1);
24892 				{
24893 				setState(3594);
24894 				match(NON_TRANSACTED_ACCESS);
24895 				setState(3595);
24896 				match(EQ_);
24897 				setState(3596);
24898 				_la = _input.LA(1);
24899 				if ( !(_la==FULL || _la==OFF || _la==READ_ONLY) ) {
24900 				_errHandler.recoverInline(this);
24901 				}
24902 				else {
24903 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
24904 					_errHandler.reportMatch(this);
24905 					consume();
24906 				}
24907 				}
24908 				break;
24909 			case DIRECTORY_NAME:
24910 				enterOuterAlt(_localctx, 2);
24911 				{
24912 				setState(3597);
24913 				match(DIRECTORY_NAME);
24914 				setState(3598);
24915 				match(EQ_);
24916 				setState(3599);
24917 				ignoredIdentifier();
24918 				}
24919 				break;
24920 			default:
24921 				throw new NoViableAltException(this);
24922 			}
24923 		}
24924 		catch (RecognitionException re) {
24925 			_localctx.exception = re;
24926 			_errHandler.reportError(this, re);
24927 			_errHandler.recover(this, re);
24928 		}
24929 		finally {
24930 			exitRule();
24931 		}
24932 		return _localctx;
24933 	}
24934 
24935 	public static class FileSpecContext extends ParserRuleContext {
24936 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
24937 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
24938 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
24939 		public TerminalNode EQ_(int i) {
24940 			return getToken(SQLServerStatementParser.EQ_, i);
24941 		}
24942 		public IgnoredIdentifierContext ignoredIdentifier() {
24943 			return getRuleContext(IgnoredIdentifierContext.class,0);
24944 		}
24945 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
24946 		public TerminalNode FILENAME() { return getToken(SQLServerStatementParser.FILENAME, 0); }
24947 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
24948 		public DatabaseFileSpecOptionContext databaseFileSpecOption() {
24949 			return getRuleContext(DatabaseFileSpecOptionContext.class,0);
24950 		}
24951 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
24952 		public FileSpecContext(ParserRuleContext parent, int invokingState) {
24953 			super(parent, invokingState);
24954 		}
24955 		@Override public int getRuleIndex() { return RULE_fileSpec; }
24956 		@Override
24957 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
24958 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileSpec(this);
24959 			else return visitor.visitChildren(this);
24960 		}
24961 	}
24962 
24963 	public final FileSpecContext fileSpec() throws RecognitionException {
24964 		FileSpecContext _localctx = new FileSpecContext(_ctx, getState());
24965 		enterRule(_localctx, 526, RULE_fileSpec);
24966 		try {
24967 			enterOuterAlt(_localctx, 1);
24968 			{
24969 			setState(3602);
24970 			match(LP_);
24971 			setState(3603);
24972 			match(NAME);
24973 			setState(3604);
24974 			match(EQ_);
24975 			setState(3605);
24976 			ignoredIdentifier();
24977 			setState(3606);
24978 			match(COMMA_);
24979 			setState(3607);
24980 			match(FILENAME);
24981 			setState(3608);
24982 			match(EQ_);
24983 			setState(3609);
24984 			match(STRING_);
24985 			setState(3610);
24986 			databaseFileSpecOption();
24987 			setState(3611);
24988 			match(RP_);
24989 			}
24990 		}
24991 		catch (RecognitionException re) {
24992 			_localctx.exception = re;
24993 			_errHandler.reportError(this, re);
24994 			_errHandler.recover(this, re);
24995 		}
24996 		finally {
24997 			exitRule();
24998 		}
24999 		return _localctx;
25000 	}
25001 
25002 	public static class DatabaseFileSpecOptionContext extends ParserRuleContext {
25003 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
25004 		public TerminalNode COMMA_(int i) {
25005 			return getToken(SQLServerStatementParser.COMMA_, i);
25006 		}
25007 		public TerminalNode SIZE() { return getToken(SQLServerStatementParser.SIZE, 0); }
25008 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
25009 		public TerminalNode EQ_(int i) {
25010 			return getToken(SQLServerStatementParser.EQ_, i);
25011 		}
25012 		public List<NumberLiteralsContext> numberLiterals() {
25013 			return getRuleContexts(NumberLiteralsContext.class);
25014 		}
25015 		public NumberLiteralsContext numberLiterals(int i) {
25016 			return getRuleContext(NumberLiteralsContext.class,i);
25017 		}
25018 		public TerminalNode MAXSIZE() { return getToken(SQLServerStatementParser.MAXSIZE, 0); }
25019 		public TerminalNode FILEGROWTH() { return getToken(SQLServerStatementParser.FILEGROWTH, 0); }
25020 		public TerminalNode UNLIMITED() { return getToken(SQLServerStatementParser.UNLIMITED, 0); }
25021 		public List<TerminalNode> KB() { return getTokens(SQLServerStatementParser.KB); }
25022 		public TerminalNode KB(int i) {
25023 			return getToken(SQLServerStatementParser.KB, i);
25024 		}
25025 		public List<TerminalNode> MB() { return getTokens(SQLServerStatementParser.MB); }
25026 		public TerminalNode MB(int i) {
25027 			return getToken(SQLServerStatementParser.MB, i);
25028 		}
25029 		public List<TerminalNode> GB() { return getTokens(SQLServerStatementParser.GB); }
25030 		public TerminalNode GB(int i) {
25031 			return getToken(SQLServerStatementParser.GB, i);
25032 		}
25033 		public List<TerminalNode> TB() { return getTokens(SQLServerStatementParser.TB); }
25034 		public TerminalNode TB(int i) {
25035 			return getToken(SQLServerStatementParser.TB, i);
25036 		}
25037 		public TerminalNode MOD_() { return getToken(SQLServerStatementParser.MOD_, 0); }
25038 		public DatabaseFileSpecOptionContext(ParserRuleContext parent, int invokingState) {
25039 			super(parent, invokingState);
25040 		}
25041 		@Override public int getRuleIndex() { return RULE_databaseFileSpecOption; }
25042 		@Override
25043 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25044 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseFileSpecOption(this);
25045 			else return visitor.visitChildren(this);
25046 		}
25047 	}
25048 
25049 	public final DatabaseFileSpecOptionContext databaseFileSpecOption() throws RecognitionException {
25050 		DatabaseFileSpecOptionContext _localctx = new DatabaseFileSpecOptionContext(_ctx, getState());
25051 		enterRule(_localctx, 528, RULE_databaseFileSpecOption);
25052 		int _la;
25053 		try {
25054 			enterOuterAlt(_localctx, 1);
25055 			{
25056 			setState(3620);
25057 			_errHandler.sync(this);
25058 			switch ( getInterpreter().adaptivePredict(_input,344,_ctx) ) {
25059 			case 1:
25060 				{
25061 				setState(3613);
25062 				match(COMMA_);
25063 				setState(3614);
25064 				match(SIZE);
25065 				setState(3615);
25066 				match(EQ_);
25067 				setState(3616);
25068 				numberLiterals();
25069 				setState(3618);
25070 				_errHandler.sync(this);
25071 				_la = _input.LA(1);
25072 				if (((((_la - 510)) & ~0x3f) == 0 && ((1L << (_la - 510)) & ((1L << (KB - 510)) | (1L << (MB - 510)) | (1L << (GB - 510)) | (1L << (TB - 510)))) != 0)) {
25073 					{
25074 					setState(3617);
25075 					_la = _input.LA(1);
25076 					if ( !(((((_la - 510)) & ~0x3f) == 0 && ((1L << (_la - 510)) & ((1L << (KB - 510)) | (1L << (MB - 510)) | (1L << (GB - 510)) | (1L << (TB - 510)))) != 0)) ) {
25077 					_errHandler.recoverInline(this);
25078 					}
25079 					else {
25080 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
25081 						_errHandler.reportMatch(this);
25082 						consume();
25083 					}
25084 					}
25085 				}
25086 
25087 				}
25088 				break;
25089 			}
25090 			setState(3632);
25091 			_errHandler.sync(this);
25092 			switch ( getInterpreter().adaptivePredict(_input,347,_ctx) ) {
25093 			case 1:
25094 				{
25095 				setState(3622);
25096 				match(COMMA_);
25097 				setState(3623);
25098 				match(MAXSIZE);
25099 				setState(3624);
25100 				match(EQ_);
25101 				setState(3630);
25102 				_errHandler.sync(this);
25103 				switch (_input.LA(1)) {
25104 				case PLUS_:
25105 				case MINUS_:
25106 				case NUMBER_:
25107 					{
25108 					setState(3625);
25109 					numberLiterals();
25110 					setState(3627);
25111 					_errHandler.sync(this);
25112 					_la = _input.LA(1);
25113 					if (((((_la - 510)) & ~0x3f) == 0 && ((1L << (_la - 510)) & ((1L << (KB - 510)) | (1L << (MB - 510)) | (1L << (GB - 510)) | (1L << (TB - 510)))) != 0)) {
25114 						{
25115 						setState(3626);
25116 						_la = _input.LA(1);
25117 						if ( !(((((_la - 510)) & ~0x3f) == 0 && ((1L << (_la - 510)) & ((1L << (KB - 510)) | (1L << (MB - 510)) | (1L << (GB - 510)) | (1L << (TB - 510)))) != 0)) ) {
25118 						_errHandler.recoverInline(this);
25119 						}
25120 						else {
25121 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
25122 							_errHandler.reportMatch(this);
25123 							consume();
25124 						}
25125 						}
25126 					}
25127 
25128 					}
25129 					break;
25130 				case UNLIMITED:
25131 					{
25132 					setState(3629);
25133 					match(UNLIMITED);
25134 					}
25135 					break;
25136 				default:
25137 					throw new NoViableAltException(this);
25138 				}
25139 				}
25140 				break;
25141 			}
25142 			setState(3641);
25143 			_errHandler.sync(this);
25144 			_la = _input.LA(1);
25145 			if (_la==COMMA_) {
25146 				{
25147 				setState(3634);
25148 				match(COMMA_);
25149 				setState(3635);
25150 				match(FILEGROWTH);
25151 				setState(3636);
25152 				match(EQ_);
25153 				setState(3637);
25154 				numberLiterals();
25155 				setState(3639);
25156 				_errHandler.sync(this);
25157 				_la = _input.LA(1);
25158 				if (_la==MOD_ || ((((_la - 510)) & ~0x3f) == 0 && ((1L << (_la - 510)) & ((1L << (KB - 510)) | (1L << (MB - 510)) | (1L << (GB - 510)) | (1L << (TB - 510)))) != 0)) {
25159 					{
25160 					setState(3638);
25161 					_la = _input.LA(1);
25162 					if ( !(_la==MOD_ || ((((_la - 510)) & ~0x3f) == 0 && ((1L << (_la - 510)) & ((1L << (KB - 510)) | (1L << (MB - 510)) | (1L << (GB - 510)) | (1L << (TB - 510)))) != 0)) ) {
25163 					_errHandler.recoverInline(this);
25164 					}
25165 					else {
25166 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
25167 						_errHandler.reportMatch(this);
25168 						consume();
25169 					}
25170 					}
25171 				}
25172 
25173 				}
25174 			}
25175 
25176 			}
25177 		}
25178 		catch (RecognitionException re) {
25179 			_localctx.exception = re;
25180 			_errHandler.reportError(this, re);
25181 			_errHandler.recover(this, re);
25182 		}
25183 		finally {
25184 			exitRule();
25185 		}
25186 		return _localctx;
25187 	}
25188 
25189 	public static class DatabaseFileGroupContext extends ParserRuleContext {
25190 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
25191 		public IgnoredIdentifierContext ignoredIdentifier() {
25192 			return getRuleContext(IgnoredIdentifierContext.class,0);
25193 		}
25194 		public List<FileSpecContext> fileSpec() {
25195 			return getRuleContexts(FileSpecContext.class);
25196 		}
25197 		public FileSpecContext fileSpec(int i) {
25198 			return getRuleContext(FileSpecContext.class,i);
25199 		}
25200 		public DatabaseFileGroupContainsContext databaseFileGroupContains() {
25201 			return getRuleContext(DatabaseFileGroupContainsContext.class,0);
25202 		}
25203 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
25204 		public TerminalNode COMMA_(int i) {
25205 			return getToken(SQLServerStatementParser.COMMA_, i);
25206 		}
25207 		public DatabaseFileGroupContext(ParserRuleContext parent, int invokingState) {
25208 			super(parent, invokingState);
25209 		}
25210 		@Override public int getRuleIndex() { return RULE_databaseFileGroup; }
25211 		@Override
25212 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25213 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseFileGroup(this);
25214 			else return visitor.visitChildren(this);
25215 		}
25216 	}
25217 
25218 	public final DatabaseFileGroupContext databaseFileGroup() throws RecognitionException {
25219 		DatabaseFileGroupContext _localctx = new DatabaseFileGroupContext(_ctx, getState());
25220 		enterRule(_localctx, 530, RULE_databaseFileGroup);
25221 		try {
25222 			int _alt;
25223 			enterOuterAlt(_localctx, 1);
25224 			{
25225 			setState(3643);
25226 			match(FILEGROUP);
25227 			setState(3644);
25228 			ignoredIdentifier();
25229 			setState(3646);
25230 			_errHandler.sync(this);
25231 			switch ( getInterpreter().adaptivePredict(_input,350,_ctx) ) {
25232 			case 1:
25233 				{
25234 				setState(3645);
25235 				databaseFileGroupContains();
25236 				}
25237 				break;
25238 			}
25239 			setState(3648);
25240 			fileSpec();
25241 			setState(3653);
25242 			_errHandler.sync(this);
25243 			_alt = getInterpreter().adaptivePredict(_input,351,_ctx);
25244 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
25245 				if ( _alt==1 ) {
25246 					{
25247 					{
25248 					setState(3649);
25249 					match(COMMA_);
25250 					setState(3650);
25251 					fileSpec();
25252 					}
25253 					} 
25254 				}
25255 				setState(3655);
25256 				_errHandler.sync(this);
25257 				_alt = getInterpreter().adaptivePredict(_input,351,_ctx);
25258 			}
25259 			}
25260 		}
25261 		catch (RecognitionException re) {
25262 			_localctx.exception = re;
25263 			_errHandler.reportError(this, re);
25264 			_errHandler.recover(this, re);
25265 		}
25266 		finally {
25267 			exitRule();
25268 		}
25269 		return _localctx;
25270 	}
25271 
25272 	public static class DatabaseFileGroupContainsContext extends ParserRuleContext {
25273 		public TerminalNode CONTAINS() { return getToken(SQLServerStatementParser.CONTAINS, 0); }
25274 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
25275 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
25276 		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_DATA, 0); }
25277 		public DatabaseFileGroupContainsContext(ParserRuleContext parent, int invokingState) {
25278 			super(parent, invokingState);
25279 		}
25280 		@Override public int getRuleIndex() { return RULE_databaseFileGroupContains; }
25281 		@Override
25282 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25283 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseFileGroupContains(this);
25284 			else return visitor.visitChildren(this);
25285 		}
25286 	}
25287 
25288 	public final DatabaseFileGroupContainsContext databaseFileGroupContains() throws RecognitionException {
25289 		DatabaseFileGroupContainsContext _localctx = new DatabaseFileGroupContainsContext(_ctx, getState());
25290 		enterRule(_localctx, 532, RULE_databaseFileGroupContains);
25291 		int _la;
25292 		try {
25293 			setState(3665);
25294 			_errHandler.sync(this);
25295 			switch ( getInterpreter().adaptivePredict(_input,354,_ctx) ) {
25296 			case 1:
25297 				enterOuterAlt(_localctx, 1);
25298 				{
25299 				setState(3658);
25300 				_errHandler.sync(this);
25301 				_la = _input.LA(1);
25302 				if (_la==CONTAINS) {
25303 					{
25304 					setState(3656);
25305 					match(CONTAINS);
25306 					setState(3657);
25307 					match(FILESTREAM);
25308 					}
25309 				}
25310 
25311 				setState(3661);
25312 				_errHandler.sync(this);
25313 				_la = _input.LA(1);
25314 				if (_la==DEFAULT) {
25315 					{
25316 					setState(3660);
25317 					match(DEFAULT);
25318 					}
25319 				}
25320 
25321 				}
25322 				break;
25323 			case 2:
25324 				enterOuterAlt(_localctx, 2);
25325 				{
25326 				setState(3663);
25327 				match(CONTAINS);
25328 				setState(3664);
25329 				match(MEMORY_OPTIMIZED_DATA);
25330 				}
25331 				break;
25332 			}
25333 		}
25334 		catch (RecognitionException re) {
25335 			_localctx.exception = re;
25336 			_errHandler.reportError(this, re);
25337 			_errHandler.recover(this, re);
25338 		}
25339 		finally {
25340 			exitRule();
25341 		}
25342 		return _localctx;
25343 	}
25344 
25345 	public static class DatabaseLogOnsContext extends ParserRuleContext {
25346 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
25347 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
25348 		public List<FileSpecContext> fileSpec() {
25349 			return getRuleContexts(FileSpecContext.class);
25350 		}
25351 		public FileSpecContext fileSpec(int i) {
25352 			return getRuleContext(FileSpecContext.class,i);
25353 		}
25354 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
25355 		public TerminalNode COMMA_(int i) {
25356 			return getToken(SQLServerStatementParser.COMMA_, i);
25357 		}
25358 		public DatabaseLogOnsContext(ParserRuleContext parent, int invokingState) {
25359 			super(parent, invokingState);
25360 		}
25361 		@Override public int getRuleIndex() { return RULE_databaseLogOns; }
25362 		@Override
25363 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25364 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseLogOns(this);
25365 			else return visitor.visitChildren(this);
25366 		}
25367 	}
25368 
25369 	public final DatabaseLogOnsContext databaseLogOns() throws RecognitionException {
25370 		DatabaseLogOnsContext _localctx = new DatabaseLogOnsContext(_ctx, getState());
25371 		enterRule(_localctx, 534, RULE_databaseLogOns);
25372 		int _la;
25373 		try {
25374 			enterOuterAlt(_localctx, 1);
25375 			{
25376 			setState(3677);
25377 			_errHandler.sync(this);
25378 			_la = _input.LA(1);
25379 			if (_la==LOG) {
25380 				{
25381 				setState(3667);
25382 				match(LOG);
25383 				setState(3668);
25384 				match(ON);
25385 				setState(3669);
25386 				fileSpec();
25387 				setState(3674);
25388 				_errHandler.sync(this);
25389 				_la = _input.LA(1);
25390 				while (_la==COMMA_) {
25391 					{
25392 					{
25393 					setState(3670);
25394 					match(COMMA_);
25395 					setState(3671);
25396 					fileSpec();
25397 					}
25398 					}
25399 					setState(3676);
25400 					_errHandler.sync(this);
25401 					_la = _input.LA(1);
25402 				}
25403 				}
25404 			}
25405 
25406 			}
25407 		}
25408 		catch (RecognitionException re) {
25409 			_localctx.exception = re;
25410 			_errHandler.reportError(this, re);
25411 			_errHandler.recover(this, re);
25412 		}
25413 		finally {
25414 			exitRule();
25415 		}
25416 		return _localctx;
25417 	}
25418 
25419 	public static class DeclareVariableContext extends ParserRuleContext {
25420 		public TerminalNode DECLARE() { return getToken(SQLServerStatementParser.DECLARE, 0); }
25421 		public List<VariableContext> variable() {
25422 			return getRuleContexts(VariableContext.class);
25423 		}
25424 		public VariableContext variable(int i) {
25425 			return getRuleContext(VariableContext.class,i);
25426 		}
25427 		public TableVariableContext tableVariable() {
25428 			return getRuleContext(TableVariableContext.class,0);
25429 		}
25430 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
25431 		public TerminalNode COMMA_(int i) {
25432 			return getToken(SQLServerStatementParser.COMMA_, i);
25433 		}
25434 		public DeclareVariableContext(ParserRuleContext parent, int invokingState) {
25435 			super(parent, invokingState);
25436 		}
25437 		@Override public int getRuleIndex() { return RULE_declareVariable; }
25438 		@Override
25439 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25440 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDeclareVariable(this);
25441 			else return visitor.visitChildren(this);
25442 		}
25443 	}
25444 
25445 	public final DeclareVariableContext declareVariable() throws RecognitionException {
25446 		DeclareVariableContext _localctx = new DeclareVariableContext(_ctx, getState());
25447 		enterRule(_localctx, 536, RULE_declareVariable);
25448 		int _la;
25449 		try {
25450 			enterOuterAlt(_localctx, 1);
25451 			{
25452 			setState(3679);
25453 			match(DECLARE);
25454 			setState(3689);
25455 			_errHandler.sync(this);
25456 			switch ( getInterpreter().adaptivePredict(_input,358,_ctx) ) {
25457 			case 1:
25458 				{
25459 				setState(3680);
25460 				variable();
25461 				setState(3685);
25462 				_errHandler.sync(this);
25463 				_la = _input.LA(1);
25464 				while (_la==COMMA_) {
25465 					{
25466 					{
25467 					setState(3681);
25468 					match(COMMA_);
25469 					setState(3682);
25470 					variable();
25471 					}
25472 					}
25473 					setState(3687);
25474 					_errHandler.sync(this);
25475 					_la = _input.LA(1);
25476 				}
25477 				}
25478 				break;
25479 			case 2:
25480 				{
25481 				setState(3688);
25482 				tableVariable();
25483 				}
25484 				break;
25485 			}
25486 			}
25487 		}
25488 		catch (RecognitionException re) {
25489 			_localctx.exception = re;
25490 			_errHandler.reportError(this, re);
25491 			_errHandler.recover(this, re);
25492 		}
25493 		finally {
25494 			exitRule();
25495 		}
25496 		return _localctx;
25497 	}
25498 
25499 	public static class VariableContext extends ParserRuleContext {
25500 		public VariableNameContext variableName() {
25501 			return getRuleContext(VariableNameContext.class,0);
25502 		}
25503 		public DataTypeContext dataType() {
25504 			return getRuleContext(DataTypeContext.class,0);
25505 		}
25506 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
25507 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
25508 		public SimpleExprContext simpleExpr() {
25509 			return getRuleContext(SimpleExprContext.class,0);
25510 		}
25511 		public TerminalNode CURSOR() { return getToken(SQLServerStatementParser.CURSOR, 0); }
25512 		public VariableContext(ParserRuleContext parent, int invokingState) {
25513 			super(parent, invokingState);
25514 		}
25515 		@Override public int getRuleIndex() { return RULE_variable; }
25516 		@Override
25517 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25518 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariable(this);
25519 			else return visitor.visitChildren(this);
25520 		}
25521 	}
25522 
25523 	public final VariableContext variable() throws RecognitionException {
25524 		VariableContext _localctx = new VariableContext(_ctx, getState());
25525 		enterRule(_localctx, 538, RULE_variable);
25526 		int _la;
25527 		try {
25528 			setState(3703);
25529 			_errHandler.sync(this);
25530 			switch ( getInterpreter().adaptivePredict(_input,361,_ctx) ) {
25531 			case 1:
25532 				enterOuterAlt(_localctx, 1);
25533 				{
25534 				setState(3691);
25535 				variableName();
25536 				setState(3693);
25537 				_errHandler.sync(this);
25538 				_la = _input.LA(1);
25539 				if (_la==AS) {
25540 					{
25541 					setState(3692);
25542 					match(AS);
25543 					}
25544 				}
25545 
25546 				setState(3695);
25547 				dataType();
25548 				setState(3698);
25549 				_errHandler.sync(this);
25550 				switch ( getInterpreter().adaptivePredict(_input,360,_ctx) ) {
25551 				case 1:
25552 					{
25553 					setState(3696);
25554 					match(EQ_);
25555 					setState(3697);
25556 					simpleExpr(0);
25557 					}
25558 					break;
25559 				}
25560 				}
25561 				break;
25562 			case 2:
25563 				enterOuterAlt(_localctx, 2);
25564 				{
25565 				setState(3700);
25566 				variableName();
25567 				setState(3701);
25568 				match(CURSOR);
25569 				}
25570 				break;
25571 			}
25572 		}
25573 		catch (RecognitionException re) {
25574 			_localctx.exception = re;
25575 			_errHandler.reportError(this, re);
25576 			_errHandler.recover(this, re);
25577 		}
25578 		finally {
25579 			exitRule();
25580 		}
25581 		return _localctx;
25582 	}
25583 
25584 	public static class TableVariableContext extends ParserRuleContext {
25585 		public VariableNameContext variableName() {
25586 			return getRuleContext(VariableNameContext.class,0);
25587 		}
25588 		public VariTableTypeDefinitionContext variTableTypeDefinition() {
25589 			return getRuleContext(VariTableTypeDefinitionContext.class,0);
25590 		}
25591 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
25592 		public TableVariableContext(ParserRuleContext parent, int invokingState) {
25593 			super(parent, invokingState);
25594 		}
25595 		@Override public int getRuleIndex() { return RULE_tableVariable; }
25596 		@Override
25597 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25598 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableVariable(this);
25599 			else return visitor.visitChildren(this);
25600 		}
25601 	}
25602 
25603 	public final TableVariableContext tableVariable() throws RecognitionException {
25604 		TableVariableContext _localctx = new TableVariableContext(_ctx, getState());
25605 		enterRule(_localctx, 540, RULE_tableVariable);
25606 		int _la;
25607 		try {
25608 			enterOuterAlt(_localctx, 1);
25609 			{
25610 			setState(3705);
25611 			variableName();
25612 			setState(3707);
25613 			_errHandler.sync(this);
25614 			_la = _input.LA(1);
25615 			if (_la==AS) {
25616 				{
25617 				setState(3706);
25618 				match(AS);
25619 				}
25620 			}
25621 
25622 			setState(3709);
25623 			variTableTypeDefinition();
25624 			}
25625 		}
25626 		catch (RecognitionException re) {
25627 			_localctx.exception = re;
25628 			_errHandler.reportError(this, re);
25629 			_errHandler.recover(this, re);
25630 		}
25631 		finally {
25632 			exitRule();
25633 		}
25634 		return _localctx;
25635 	}
25636 
25637 	public static class VariTableTypeDefinitionContext extends ParserRuleContext {
25638 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
25639 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
25640 		public List<TableVariableClauseContext> tableVariableClause() {
25641 			return getRuleContexts(TableVariableClauseContext.class);
25642 		}
25643 		public TableVariableClauseContext tableVariableClause(int i) {
25644 			return getRuleContext(TableVariableClauseContext.class,i);
25645 		}
25646 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
25647 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
25648 		public TerminalNode COMMA_(int i) {
25649 			return getToken(SQLServerStatementParser.COMMA_, i);
25650 		}
25651 		public VariTableTypeDefinitionContext(ParserRuleContext parent, int invokingState) {
25652 			super(parent, invokingState);
25653 		}
25654 		@Override public int getRuleIndex() { return RULE_variTableTypeDefinition; }
25655 		@Override
25656 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25657 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariTableTypeDefinition(this);
25658 			else return visitor.visitChildren(this);
25659 		}
25660 	}
25661 
25662 	public final VariTableTypeDefinitionContext variTableTypeDefinition() throws RecognitionException {
25663 		VariTableTypeDefinitionContext _localctx = new VariTableTypeDefinitionContext(_ctx, getState());
25664 		enterRule(_localctx, 542, RULE_variTableTypeDefinition);
25665 		int _la;
25666 		try {
25667 			enterOuterAlt(_localctx, 1);
25668 			{
25669 			setState(3711);
25670 			match(TABLE);
25671 			setState(3712);
25672 			match(LP_);
25673 			setState(3713);
25674 			tableVariableClause();
25675 			setState(3718);
25676 			_errHandler.sync(this);
25677 			_la = _input.LA(1);
25678 			while (_la==COMMA_) {
25679 				{
25680 				{
25681 				setState(3714);
25682 				match(COMMA_);
25683 				setState(3715);
25684 				tableVariableClause();
25685 				}
25686 				}
25687 				setState(3720);
25688 				_errHandler.sync(this);
25689 				_la = _input.LA(1);
25690 			}
25691 			setState(3721);
25692 			match(RP_);
25693 			}
25694 		}
25695 		catch (RecognitionException re) {
25696 			_localctx.exception = re;
25697 			_errHandler.reportError(this, re);
25698 			_errHandler.recover(this, re);
25699 		}
25700 		finally {
25701 			exitRule();
25702 		}
25703 		return _localctx;
25704 	}
25705 
25706 	public static class TableVariableClauseContext extends ParserRuleContext {
25707 		public VariableTableColumnDefinitionContext variableTableColumnDefinition() {
25708 			return getRuleContext(VariableTableColumnDefinitionContext.class,0);
25709 		}
25710 		public VariableTableConstraintContext variableTableConstraint() {
25711 			return getRuleContext(VariableTableConstraintContext.class,0);
25712 		}
25713 		public TableVariableClauseContext(ParserRuleContext parent, int invokingState) {
25714 			super(parent, invokingState);
25715 		}
25716 		@Override public int getRuleIndex() { return RULE_tableVariableClause; }
25717 		@Override
25718 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
25719 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableVariableClause(this);
25720 			else return visitor.visitChildren(this);
25721 		}
25722 	}
25723 
25724 	public final TableVariableClauseContext tableVariableClause() throws RecognitionException {
25725 		TableVariableClauseContext _localctx = new TableVariableClauseContext(_ctx, getState());
25726 		enterRule(_localctx, 544, RULE_tableVariableClause);
25727 		try {
25728 			setState(3725);
25729 			_errHandler.sync(this);
25730 			switch (_input.LA(1)) {
25731 			case DOLLAR_:
25732 			case TRUNCATE:
25733 			case SCHEMA:
25734 			case COLUMNS:
25735 			case PRECISION:
25736 			case FUNCTION:
25737 			case TRIGGER:
25738 			case CAST:
25739 			case TRIM:
25740 			case SUBSTRING:
25741 			case RIGHT:
25742 			case OFF:
25743 			case GROUP:
25744 			case LIMIT:
25745 			case OFFSET:
25746 			case SAVEPOINT:
25747 			case BOOLEAN:
25748 			case ARRAY:
25749 			case DATE:
25750 			case TIMESTAMP:
25751 			case LOCALTIME:
25752 			case LOCALTIMESTAMP:
25753 			case YEAR:
25754 			case QUARTER:
25755 			case MONTH:
25756 			case WEEK:
25757 			case DAY:
25758 			case SECOND:
25759 			case MICROSECOND:
25760 			case MAX:
25761 			case MIN:
25762 			case SUM:
25763 			case COUNT:
25764 			case AVG:
25765 			case ENABLE:
25766 			case DISABLE:
25767 			case INSTANCE:
25768 			case DO:
25769 			case DEFINER:
25770 			case SQL:
25771 			case CASCADED:
25772 			case LOCAL:
25773 			case NEXT:
25774 			case NAME:
25775 			case INTEGER:
25776 			case TYPE:
25777 			case TEXT:
25778 			case VIEWS:
25779 			case READ_ONLY:
25780 			case DATABASE:
25781 			case RETURNS:
25782 			case DATEPART:
25783 			case PASSWORD:
25784 			case BINARY:
25785 			case HIDDEN_:
25786 			case MOD:
25787 			case PARTITION:
25788 			case PARTITIONS:
25789 			case TOP:
25790 			case ROW:
25791 			case ROWS:
25792 			case XOR:
25793 			case ALWAYS:
25794 			case USER:
25795 			case ROLE:
25796 			case START:
25797 			case ALGORITHM:
25798 			case AUTO:
25799 			case BLOCKERS:
25800 			case CLUSTERED:
25801 			case NONCLUSTERED:
25802 			case COLUMNSTORE:
25803 			case CONTENT:
25804 			case YEARS:
25805 			case MONTHS:
25806 			case WEEKS:
25807 			case DAYS:
25808 			case MINUTES:
25809 			case DENY:
25810 			case DETERMINISTIC:
25811 			case DISTRIBUTION:
25812 			case DOCUMENT:
25813 			case DURABILITY:
25814 			case ENCRYPTED:
25815 			case FILESTREAM:
25816 			case FILETABLE:
25817 			case FILLFACTOR:
25818 			case FOLLOWING:
25819 			case HASH:
25820 			case HEAP:
25821 			case INBOUND:
25822 			case OUTBOUND:
25823 			case UNBOUNDED:
25824 			case INFINITE:
25825 			case LOGIN:
25826 			case MASKED:
25827 			case MAXDOP:
25828 			case MOVE:
25829 			case NOCHECK:
25830 			case OBJECT:
25831 			case ONLINE:
25832 			case OVER:
25833 			case PAGE:
25834 			case PAUSED:
25835 			case PERIOD:
25836 			case PERSISTED:
25837 			case PRECEDING:
25838 			case RANDOMIZED:
25839 			case RANGE:
25840 			case REBUILD:
25841 			case REPLICATE:
25842 			case REPLICATION:
25843 			case RESUMABLE:
25844 			case ROWGUIDCOL:
25845 			case SAVE:
25846 			case SELF:
25847 			case SPARSE:
25848 			case SWITCH:
25849 			case TRAN:
25850 			case TRANCOUNT:
25851 			case CONTROL:
25852 			case CONCAT:
25853 			case TAKE:
25854 			case OWNERSHIP:
25855 			case DEFINITION:
25856 			case APPLICATION:
25857 			case ASSEMBLY:
25858 			case SYMMETRIC:
25859 			case ASYMMETRIC:
25860 			case SERVER:
25861 			case RECEIVE:
25862 			case CHANGE:
25863 			case TRACE:
25864 			case TRACKING:
25865 			case RESOURCES:
25866 			case SETTINGS:
25867 			case STATE:
25868 			case AVAILABILITY:
25869 			case CREDENTIAL:
25870 			case ENDPOINT:
25871 			case EVENT:
25872 			case NOTIFICATION:
25873 			case LINKED:
25874 			case AUDIT:
25875 			case DDL:
25876 			case XML:
25877 			case IMPERSONATE:
25878 			case SECURABLES:
25879 			case AUTHENTICATE:
25880 			case EXTERNAL:
25881 			case ACCESS:
25882 			case ADMINISTER:
25883 			case BULK:
25884 			case OPERATIONS:
25885 			case UNSAFE:
25886 			case SHUTDOWN:
25887 			case SCOPED:
25888 			case CONFIGURATION:
25889 			case DATASPACE:
25890 			case SERVICE:
25891 			case CERTIFICATE:
25892 			case CONTRACT:
25893 			case ENCRYPTION:
25894 			case MASTER:
25895 			case DATA:
25896 			case SOURCE:
25897 			case FILE:
25898 			case FORMAT:
25899 			case LIBRARY:
25900 			case FULLTEXT:
25901 			case MASK:
25902 			case UNMASK:
25903 			case MESSAGE:
25904 			case REMOTE:
25905 			case BINDING:
25906 			case ROUTE:
25907 			case SECURITY:
25908 			case POLICY:
25909 			case AGGREGATE:
25910 			case QUEUE:
25911 			case RULE:
25912 			case SYNONYM:
25913 			case COLLECTION:
25914 			case SCRIPT:
25915 			case KILL:
25916 			case BACKUP:
25917 			case LOG:
25918 			case SHOWPLAN:
25919 			case SUBSCRIBE:
25920 			case QUERY:
25921 			case NOTIFICATIONS:
25922 			case CHECKPOINT:
25923 			case SEQUENCE:
25924 			case ABORT_AFTER_WAIT:
25925 			case ALLOW_PAGE_LOCKS:
25926 			case ALLOW_ROW_LOCKS:
25927 			case ALL_SPARSE_COLUMNS:
25928 			case BUCKET_COUNT:
25929 			case COLUMNSTORE_ARCHIVE:
25930 			case COLUMN_ENCRYPTION_KEY:
25931 			case COLUMN_SET:
25932 			case COMPRESSION_DELAY:
25933 			case DATABASE_DEAULT:
25934 			case DATA_COMPRESSION:
25935 			case DATA_CONSISTENCY_CHECK:
25936 			case ENCRYPTION_TYPE:
25937 			case SYSTEM_TIME:
25938 			case SYSTEM_VERSIONING:
25939 			case TEXTIMAGE_ON:
25940 			case WAIT_AT_LOW_PRIORITY:
25941 			case STATISTICS_INCREMENTAL:
25942 			case STATISTICS_NORECOMPUTE:
25943 			case ROUND_ROBIN:
25944 			case SCHEMA_AND_DATA:
25945 			case SCHEMA_ONLY:
25946 			case SORT_IN_TEMPDB:
25947 			case IGNORE_DUP_KEY:
25948 			case IMPLICIT_TRANSACTIONS:
25949 			case MAX_DURATION:
25950 			case MEMORY_OPTIMIZED:
25951 			case MIGRATION_STATE:
25952 			case PAD_INDEX:
25953 			case REMOTE_DATA_ARCHIVE:
25954 			case FILESTREAM_ON:
25955 			case FILETABLE_COLLATE_FILENAME:
25956 			case FILETABLE_DIRECTORY:
25957 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
25958 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
25959 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
25960 			case FILTER_PREDICATE:
25961 			case HISTORY_RETENTION_PERIOD:
25962 			case HISTORY_TABLE:
25963 			case LOCK_ESCALATION:
25964 			case DROP_EXISTING:
25965 			case ROW_NUMBER:
25966 			case FIRST:
25967 			case DATETIME2:
25968 			case OUTPUT:
25969 			case INSERTED:
25970 			case DELETED:
25971 			case FILENAME:
25972 			case SIZE:
25973 			case MAXSIZE:
25974 			case FILEGROWTH:
25975 			case UNLIMITED:
25976 			case KB:
25977 			case MB:
25978 			case GB:
25979 			case TB:
25980 			case CONTAINS:
25981 			case MEMORY_OPTIMIZED_DATA:
25982 			case FILEGROUP:
25983 			case NON_TRANSACTED_ACCESS:
25984 			case DB_CHAINING:
25985 			case TRUSTWORTHY:
25986 			case FORWARD_ONLY:
25987 			case KEYSET:
25988 			case FAST_FORWARD:
25989 			case SCROLL_LOCKS:
25990 			case OPTIMISTIC:
25991 			case TYPE_WARNING:
25992 			case SCHEMABINDING:
25993 			case CALLER:
25994 			case INPUT:
25995 			case OWNER:
25996 			case SNAPSHOT:
25997 			case REPEATABLE:
25998 			case SERIALIZABLE:
25999 			case NATIVE_COMPILATION:
26000 			case VIEW_METADATA:
26001 			case INSTEAD:
26002 			case APPEND:
26003 			case INCREMENT:
26004 			case CACHE:
26005 			case MINVALUE:
26006 			case MAXVALUE:
26007 			case RESTART:
26008 			case LOB_COMPACTION:
26009 			case COMPRESS_ALL_ROW_GROUPS:
26010 			case REORGANIZE:
26011 			case RESUME:
26012 			case PAUSE:
26013 			case ABORT:
26014 			case ACCELERATED_DATABASE_RECOVERY:
26015 			case PERSISTENT_VERSION_STORE_FILEGROUP:
26016 			case IMMEDIATE:
26017 			case NO_WAIT:
26018 			case TARGET_RECOVERY_TIME:
26019 			case SECONDS:
26020 			case HONOR_BROKER_PRIORITY:
26021 			case ERROR_BROKER_CONVERSATIONS:
26022 			case NEW_BROKER:
26023 			case DISABLE_BROKER:
26024 			case ENABLE_BROKER:
26025 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
26026 			case READ_COMMITTED_SNAPSHOT:
26027 			case ALLOW_SNAPSHOT_ISOLATION:
26028 			case RECURSIVE_TRIGGERS:
26029 			case QUOTED_IDENTIFIER:
26030 			case NUMERIC_ROUNDABORT:
26031 			case CONCAT_NULL_YIELDS_NULL:
26032 			case COMPATIBILITY_LEVEL:
26033 			case ARITHABORT:
26034 			case ANSI_WARNINGS:
26035 			case ANSI_PADDING:
26036 			case ANSI_NULLS:
26037 			case ANSI_NULL_DEFAULT:
26038 			case PAGE_VERIFY:
26039 			case CHECKSUM:
26040 			case TORN_PAGE_DETECTION:
26041 			case BULK_LOGGED:
26042 			case RECOVERY:
26043 			case TOTAL_EXECUTION_CPU_TIME_MS:
26044 			case TOTAL_COMPILE_CPU_TIME_MS:
26045 			case STALE_CAPTURE_POLICY_THRESHOLD:
26046 			case EXECUTION_COUNT:
26047 			case QUERY_CAPTURE_POLICY:
26048 			case WAIT_STATS_CAPTURE_MODE:
26049 			case MAX_PLANS_PER_QUERY:
26050 			case QUERY_CAPTURE_MODE:
26051 			case SIZE_BASED_CLEANUP_MODE:
26052 			case INTERVAL_LENGTH_MINUTES:
26053 			case MAX_STORAGE_SIZE_MB:
26054 			case DATA_FLUSH_INTERVAL_SECONDS:
26055 			case CLEANUP_POLICY:
26056 			case CUSTOM:
26057 			case STALE_QUERY_THRESHOLD_DAYS:
26058 			case OPERATION_MODE:
26059 			case QUERY_STORE:
26060 			case CURSOR_DEFAULT:
26061 			case GLOBAL:
26062 			case CURSOR_CLOSE_ON_COMMIT:
26063 			case HOURS:
26064 			case CHANGE_RETENTION:
26065 			case AUTO_CLEANUP:
26066 			case CHANGE_TRACKING:
26067 			case AUTOMATIC_TUNING:
26068 			case FORCE_LAST_GOOD_PLAN:
26069 			case AUTO_UPDATE_STATISTICS_ASYNC:
26070 			case AUTO_UPDATE_STATISTICS:
26071 			case AUTO_SHRINK:
26072 			case AUTO_CREATE_STATISTICS:
26073 			case INCREMENTAL:
26074 			case AUTO_CLOSE:
26075 			case DATA_RETENTION:
26076 			case TEMPORAL_HISTORY_RETENTION:
26077 			case EDITION:
26078 			case MIXED_PAGE_ALLOCATION:
26079 			case DISABLED:
26080 			case ALLOWED:
26081 			case HADR:
26082 			case MULTI_USER:
26083 			case RESTRICTED_USER:
26084 			case SINGLE_USER:
26085 			case OFFLINE:
26086 			case EMERGENCY:
26087 			case SUSPEND:
26088 			case DATE_CORRELATION_OPTIMIZATION:
26089 			case ELASTIC_POOL:
26090 			case SERVICE_OBJECTIVE:
26091 			case DATABASE_NAME:
26092 			case ALLOW_CONNECTIONS:
26093 			case GEO:
26094 			case NAMED:
26095 			case DATEFIRST:
26096 			case BACKUP_STORAGE_REDUNDANCY:
26097 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
26098 			case SECONDARY:
26099 			case FAILOVER:
26100 			case DEFAULT_FULLTEXT_LANGUAGE:
26101 			case DEFAULT_LANGUAGE:
26102 			case INLINE:
26103 			case NESTED_TRIGGERS:
26104 			case TRANSFORM_NOISE_WORDS:
26105 			case TWO_DIGIT_YEAR_CUTOFF:
26106 			case PERSISTENT_LOG_BUFFER:
26107 			case DIRECTORY_NAME:
26108 			case DATEFORMAT:
26109 			case DELAYED_DURABILITY:
26110 			case AUTHORIZATION:
26111 			case TRANSFER:
26112 			case PROVIDER:
26113 			case SID:
26114 			case SEARCH:
26115 			case MEMBER:
26116 			case JSON:
26117 			case IDENTIFIER_:
26118 			case DELIMITED_IDENTIFIER_:
26119 				enterOuterAlt(_localctx, 1);
26120 				{
26121 				setState(3723);
26122 				variableTableColumnDefinition();
26123 				}
26124 				break;
26125 			case PRIMARY:
26126 			case UNIQUE:
26127 			case CHECK:
26128 				enterOuterAlt(_localctx, 2);
26129 				{
26130 				setState(3724);
26131 				variableTableConstraint();
26132 				}
26133 				break;
26134 			default:
26135 				throw new NoViableAltException(this);
26136 			}
26137 		}
26138 		catch (RecognitionException re) {
26139 			_localctx.exception = re;
26140 			_errHandler.reportError(this, re);
26141 			_errHandler.recover(this, re);
26142 		}
26143 		finally {
26144 			exitRule();
26145 		}
26146 		return _localctx;
26147 	}
26148 
26149 	public static class VariableTableColumnDefinitionContext extends ParserRuleContext {
26150 		public ColumnNameContext columnName() {
26151 			return getRuleContext(ColumnNameContext.class,0);
26152 		}
26153 		public VariableTableColumnConstraintContext variableTableColumnConstraint() {
26154 			return getRuleContext(VariableTableColumnConstraintContext.class,0);
26155 		}
26156 		public DataTypeNameContext dataTypeName() {
26157 			return getRuleContext(DataTypeNameContext.class,0);
26158 		}
26159 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
26160 		public List<ExprContext> expr() {
26161 			return getRuleContexts(ExprContext.class);
26162 		}
26163 		public ExprContext expr(int i) {
26164 			return getRuleContext(ExprContext.class,i);
26165 		}
26166 		public TerminalNode IDENTITY() { return getToken(SQLServerStatementParser.IDENTITY, 0); }
26167 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
26168 		public CollationNameContext collationName() {
26169 			return getRuleContext(CollationNameContext.class,0);
26170 		}
26171 		public TerminalNode ROWGUIDCOL() { return getToken(SQLServerStatementParser.ROWGUIDCOL, 0); }
26172 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
26173 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
26174 		public List<TerminalNode> NUMBER_() { return getTokens(SQLServerStatementParser.NUMBER_); }
26175 		public TerminalNode NUMBER_(int i) {
26176 			return getToken(SQLServerStatementParser.NUMBER_, i);
26177 		}
26178 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
26179 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
26180 		public VariableTableColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
26181 			super(parent, invokingState);
26182 		}
26183 		@Override public int getRuleIndex() { return RULE_variableTableColumnDefinition; }
26184 		@Override
26185 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26186 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableTableColumnDefinition(this);
26187 			else return visitor.visitChildren(this);
26188 		}
26189 	}
26190 
26191 	public final VariableTableColumnDefinitionContext variableTableColumnDefinition() throws RecognitionException {
26192 		VariableTableColumnDefinitionContext _localctx = new VariableTableColumnDefinitionContext(_ctx, getState());
26193 		enterRule(_localctx, 546, RULE_variableTableColumnDefinition);
26194 		int _la;
26195 		try {
26196 			enterOuterAlt(_localctx, 1);
26197 			{
26198 			setState(3727);
26199 			columnName();
26200 			setState(3731);
26201 			_errHandler.sync(this);
26202 			switch (_input.LA(1)) {
26203 			case CHAR:
26204 			case DATE:
26205 			case TIME:
26206 			case INTEGER:
26207 			case REAL:
26208 			case DECIMAL:
26209 			case BIT:
26210 			case SMALLINT:
26211 			case INT:
26212 			case TINYINT:
26213 			case NUMERIC:
26214 			case FLOAT:
26215 			case BIGINT:
26216 			case TEXT:
26217 			case VARCHAR:
26218 			case BINARY:
26219 			case XML:
26220 			case MONEY:
26221 			case SMALLMONEY:
26222 			case DATETIMEOFFSET:
26223 			case DATETIME:
26224 			case DATETIME2:
26225 			case SMALLDATETIME:
26226 			case NCHAR:
26227 			case NVARCHAR:
26228 			case NTEXT:
26229 			case VARBINARY:
26230 			case IMAGE:
26231 			case SQL_VARIANT:
26232 			case UNIQUEIDENTIFIER:
26233 			case HIERARCHYID:
26234 			case GEOMETRY:
26235 			case GEOGRAPHY:
26236 			case IDENTIFIER_:
26237 				{
26238 				setState(3728);
26239 				dataTypeName();
26240 				}
26241 				break;
26242 			case AS:
26243 				{
26244 				setState(3729);
26245 				match(AS);
26246 				setState(3730);
26247 				expr(0);
26248 				}
26249 				break;
26250 			default:
26251 				throw new NoViableAltException(this);
26252 			}
26253 			setState(3735);
26254 			_errHandler.sync(this);
26255 			_la = _input.LA(1);
26256 			if (_la==COLLATE) {
26257 				{
26258 				setState(3733);
26259 				match(COLLATE);
26260 				setState(3734);
26261 				collationName();
26262 				}
26263 			}
26264 
26265 			setState(3749);
26266 			_errHandler.sync(this);
26267 			switch (_input.LA(1)) {
26268 			case RP_:
26269 			case COMMA_:
26270 			case PRIMARY:
26271 			case UNIQUE:
26272 			case WITH:
26273 			case NOT:
26274 			case NULL:
26275 			case DEFAULT:
26276 			case CHECK:
26277 			case ROWGUIDCOL:
26278 				{
26279 				setState(3739);
26280 				_errHandler.sync(this);
26281 				_la = _input.LA(1);
26282 				if (_la==DEFAULT) {
26283 					{
26284 					setState(3737);
26285 					match(DEFAULT);
26286 					setState(3738);
26287 					expr(0);
26288 					}
26289 				}
26290 
26291 				}
26292 				break;
26293 			case IDENTITY:
26294 				{
26295 				setState(3741);
26296 				match(IDENTITY);
26297 				setState(3747);
26298 				_errHandler.sync(this);
26299 				_la = _input.LA(1);
26300 				if (_la==LP_) {
26301 					{
26302 					setState(3742);
26303 					match(LP_);
26304 					setState(3743);
26305 					match(NUMBER_);
26306 					setState(3744);
26307 					match(COMMA_);
26308 					setState(3745);
26309 					match(NUMBER_);
26310 					setState(3746);
26311 					match(RP_);
26312 					}
26313 				}
26314 
26315 				}
26316 				break;
26317 			default:
26318 				throw new NoViableAltException(this);
26319 			}
26320 			setState(3752);
26321 			_errHandler.sync(this);
26322 			_la = _input.LA(1);
26323 			if (_la==ROWGUIDCOL) {
26324 				{
26325 				setState(3751);
26326 				match(ROWGUIDCOL);
26327 				}
26328 			}
26329 
26330 			setState(3754);
26331 			variableTableColumnConstraint();
26332 			}
26333 		}
26334 		catch (RecognitionException re) {
26335 			_localctx.exception = re;
26336 			_errHandler.reportError(this, re);
26337 			_errHandler.recover(this, re);
26338 		}
26339 		finally {
26340 			exitRule();
26341 		}
26342 		return _localctx;
26343 	}
26344 
26345 	public static class VariableTableColumnConstraintContext extends ParserRuleContext {
26346 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
26347 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
26348 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
26349 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
26350 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
26351 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
26352 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
26353 		public ExprContext expr() {
26354 			return getRuleContext(ExprContext.class,0);
26355 		}
26356 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
26357 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
26358 		public IndexOptionContext indexOption() {
26359 			return getRuleContext(IndexOptionContext.class,0);
26360 		}
26361 		public VariableTableColumnConstraintContext(ParserRuleContext parent, int invokingState) {
26362 			super(parent, invokingState);
26363 		}
26364 		@Override public int getRuleIndex() { return RULE_variableTableColumnConstraint; }
26365 		@Override
26366 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26367 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableTableColumnConstraint(this);
26368 			else return visitor.visitChildren(this);
26369 		}
26370 	}
26371 
26372 	public final VariableTableColumnConstraintContext variableTableColumnConstraint() throws RecognitionException {
26373 		VariableTableColumnConstraintContext _localctx = new VariableTableColumnConstraintContext(_ctx, getState());
26374 		enterRule(_localctx, 548, RULE_variableTableColumnConstraint);
26375 		try {
26376 			setState(3773);
26377 			_errHandler.sync(this);
26378 			switch ( getInterpreter().adaptivePredict(_input,373,_ctx) ) {
26379 			case 1:
26380 				enterOuterAlt(_localctx, 1);
26381 				{
26382 				setState(3759);
26383 				_errHandler.sync(this);
26384 				switch (_input.LA(1)) {
26385 				case NULL:
26386 					{
26387 					setState(3756);
26388 					match(NULL);
26389 					}
26390 					break;
26391 				case NOT:
26392 					{
26393 					setState(3757);
26394 					match(NOT);
26395 					setState(3758);
26396 					match(NULL);
26397 					}
26398 					break;
26399 				case RP_:
26400 				case COMMA_:
26401 					break;
26402 				default:
26403 					break;
26404 				}
26405 				}
26406 				break;
26407 			case 2:
26408 				enterOuterAlt(_localctx, 2);
26409 				{
26410 				setState(3764);
26411 				_errHandler.sync(this);
26412 				switch (_input.LA(1)) {
26413 				case PRIMARY:
26414 					{
26415 					setState(3761);
26416 					match(PRIMARY);
26417 					setState(3762);
26418 					match(KEY);
26419 					}
26420 					break;
26421 				case UNIQUE:
26422 					{
26423 					setState(3763);
26424 					match(UNIQUE);
26425 					}
26426 					break;
26427 				case RP_:
26428 				case COMMA_:
26429 					break;
26430 				default:
26431 					break;
26432 				}
26433 				}
26434 				break;
26435 			case 3:
26436 				enterOuterAlt(_localctx, 3);
26437 				{
26438 				setState(3766);
26439 				match(CHECK);
26440 				setState(3767);
26441 				match(LP_);
26442 				setState(3768);
26443 				expr(0);
26444 				setState(3769);
26445 				match(RP_);
26446 				}
26447 				break;
26448 			case 4:
26449 				enterOuterAlt(_localctx, 4);
26450 				{
26451 				setState(3771);
26452 				match(WITH);
26453 				setState(3772);
26454 				indexOption();
26455 				}
26456 				break;
26457 			}
26458 		}
26459 		catch (RecognitionException re) {
26460 			_localctx.exception = re;
26461 			_errHandler.reportError(this, re);
26462 			_errHandler.recover(this, re);
26463 		}
26464 		finally {
26465 			exitRule();
26466 		}
26467 		return _localctx;
26468 	}
26469 
26470 	public static class VariableTableConstraintContext extends ParserRuleContext {
26471 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
26472 		public List<ColumnNameContext> columnName() {
26473 			return getRuleContexts(ColumnNameContext.class);
26474 		}
26475 		public ColumnNameContext columnName(int i) {
26476 			return getRuleContext(ColumnNameContext.class,i);
26477 		}
26478 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
26479 		public TerminalNode PRIMARY() { return getToken(SQLServerStatementParser.PRIMARY, 0); }
26480 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
26481 		public TerminalNode UNIQUE() { return getToken(SQLServerStatementParser.UNIQUE, 0); }
26482 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
26483 		public TerminalNode COMMA_(int i) {
26484 			return getToken(SQLServerStatementParser.COMMA_, i);
26485 		}
26486 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
26487 		public ExprContext expr() {
26488 			return getRuleContext(ExprContext.class,0);
26489 		}
26490 		public VariableTableConstraintContext(ParserRuleContext parent, int invokingState) {
26491 			super(parent, invokingState);
26492 		}
26493 		@Override public int getRuleIndex() { return RULE_variableTableConstraint; }
26494 		@Override
26495 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26496 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitVariableTableConstraint(this);
26497 			else return visitor.visitChildren(this);
26498 		}
26499 	}
26500 
26501 	public final VariableTableConstraintContext variableTableConstraint() throws RecognitionException {
26502 		VariableTableConstraintContext _localctx = new VariableTableConstraintContext(_ctx, getState());
26503 		enterRule(_localctx, 550, RULE_variableTableConstraint);
26504 		int _la;
26505 		try {
26506 			setState(3793);
26507 			_errHandler.sync(this);
26508 			switch (_input.LA(1)) {
26509 			case PRIMARY:
26510 			case UNIQUE:
26511 				enterOuterAlt(_localctx, 1);
26512 				{
26513 				setState(3778);
26514 				_errHandler.sync(this);
26515 				switch (_input.LA(1)) {
26516 				case PRIMARY:
26517 					{
26518 					setState(3775);
26519 					match(PRIMARY);
26520 					setState(3776);
26521 					match(KEY);
26522 					}
26523 					break;
26524 				case UNIQUE:
26525 					{
26526 					setState(3777);
26527 					match(UNIQUE);
26528 					}
26529 					break;
26530 				default:
26531 					throw new NoViableAltException(this);
26532 				}
26533 				setState(3780);
26534 				match(LP_);
26535 				setState(3781);
26536 				columnName();
26537 				setState(3786);
26538 				_errHandler.sync(this);
26539 				_la = _input.LA(1);
26540 				while (_la==COMMA_) {
26541 					{
26542 					{
26543 					setState(3782);
26544 					match(COMMA_);
26545 					setState(3783);
26546 					columnName();
26547 					}
26548 					}
26549 					setState(3788);
26550 					_errHandler.sync(this);
26551 					_la = _input.LA(1);
26552 				}
26553 				setState(3789);
26554 				match(RP_);
26555 				}
26556 				break;
26557 			case CHECK:
26558 				enterOuterAlt(_localctx, 2);
26559 				{
26560 				setState(3791);
26561 				match(CHECK);
26562 				setState(3792);
26563 				expr(0);
26564 				}
26565 				break;
26566 			default:
26567 				throw new NoViableAltException(this);
26568 			}
26569 		}
26570 		catch (RecognitionException re) {
26571 			_localctx.exception = re;
26572 			_errHandler.reportError(this, re);
26573 			_errHandler.recover(this, re);
26574 		}
26575 		finally {
26576 			exitRule();
26577 		}
26578 		return _localctx;
26579 	}
26580 
26581 	public static class SetVariableContext extends ParserRuleContext {
26582 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
26583 		public VariableNameContext variableName() {
26584 			return getRuleContext(VariableNameContext.class,0);
26585 		}
26586 		public SetVariableClauseContext setVariableClause() {
26587 			return getRuleContext(SetVariableClauseContext.class,0);
26588 		}
26589 		public SetVariableContext(ParserRuleContext parent, int invokingState) {
26590 			super(parent, invokingState);
26591 		}
26592 		@Override public int getRuleIndex() { return RULE_setVariable; }
26593 		@Override
26594 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26595 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetVariable(this);
26596 			else return visitor.visitChildren(this);
26597 		}
26598 	}
26599 
26600 	public final SetVariableContext setVariable() throws RecognitionException {
26601 		SetVariableContext _localctx = new SetVariableContext(_ctx, getState());
26602 		enterRule(_localctx, 552, RULE_setVariable);
26603 		try {
26604 			enterOuterAlt(_localctx, 1);
26605 			{
26606 			setState(3795);
26607 			match(SET);
26608 			setState(3796);
26609 			variableName();
26610 			setState(3797);
26611 			setVariableClause();
26612 			}
26613 		}
26614 		catch (RecognitionException re) {
26615 			_localctx.exception = re;
26616 			_errHandler.reportError(this, re);
26617 			_errHandler.recover(this, re);
26618 		}
26619 		finally {
26620 			exitRule();
26621 		}
26622 		return _localctx;
26623 	}
26624 
26625 	public static class SetVariableClauseContext extends ParserRuleContext {
26626 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
26627 		public ExprContext expr() {
26628 			return getRuleContext(ExprContext.class,0);
26629 		}
26630 		public List<IdentifierContext> identifier() {
26631 			return getRuleContexts(IdentifierContext.class);
26632 		}
26633 		public IdentifierContext identifier(int i) {
26634 			return getRuleContext(IdentifierContext.class,i);
26635 		}
26636 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
26637 		public TerminalNode DOT_(int i) {
26638 			return getToken(SQLServerStatementParser.DOT_, i);
26639 		}
26640 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
26641 		public CompoundOperationContext compoundOperation() {
26642 			return getRuleContext(CompoundOperationContext.class,0);
26643 		}
26644 		public CursorVariableContext cursorVariable() {
26645 			return getRuleContext(CursorVariableContext.class,0);
26646 		}
26647 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
26648 		public SelectContext select() {
26649 			return getRuleContext(SelectContext.class,0);
26650 		}
26651 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
26652 		public SetVariableClauseContext(ParserRuleContext parent, int invokingState) {
26653 			super(parent, invokingState);
26654 		}
26655 		@Override public int getRuleIndex() { return RULE_setVariableClause; }
26656 		@Override
26657 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26658 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetVariableClause(this);
26659 			else return visitor.visitChildren(this);
26660 		}
26661 	}
26662 
26663 	public final SetVariableClauseContext setVariableClause() throws RecognitionException {
26664 		SetVariableClauseContext _localctx = new SetVariableClauseContext(_ctx, getState());
26665 		enterRule(_localctx, 554, RULE_setVariableClause);
26666 		int _la;
26667 		try {
26668 			setState(3822);
26669 			_errHandler.sync(this);
26670 			switch ( getInterpreter().adaptivePredict(_input,379,_ctx) ) {
26671 			case 1:
26672 				enterOuterAlt(_localctx, 1);
26673 				{
26674 				setState(3801);
26675 				_errHandler.sync(this);
26676 				_la = _input.LA(1);
26677 				if (_la==DOT_) {
26678 					{
26679 					setState(3799);
26680 					match(DOT_);
26681 					setState(3800);
26682 					identifier();
26683 					}
26684 				}
26685 
26686 				setState(3803);
26687 				match(EQ_);
26688 				setState(3810);
26689 				_errHandler.sync(this);
26690 				switch ( getInterpreter().adaptivePredict(_input,378,_ctx) ) {
26691 				case 1:
26692 					{
26693 					setState(3804);
26694 					expr(0);
26695 					}
26696 					break;
26697 				case 2:
26698 					{
26699 					setState(3805);
26700 					identifier();
26701 					setState(3806);
26702 					match(DOT_);
26703 					setState(3807);
26704 					identifier();
26705 					}
26706 					break;
26707 				case 3:
26708 					{
26709 					setState(3809);
26710 					match(NCHAR_TEXT);
26711 					}
26712 					break;
26713 				}
26714 				}
26715 				break;
26716 			case 2:
26717 				enterOuterAlt(_localctx, 2);
26718 				{
26719 				setState(3812);
26720 				compoundOperation();
26721 				setState(3813);
26722 				expr(0);
26723 				}
26724 				break;
26725 			case 3:
26726 				enterOuterAlt(_localctx, 3);
26727 				{
26728 				setState(3815);
26729 				match(EQ_);
26730 				setState(3816);
26731 				cursorVariable();
26732 				}
26733 				break;
26734 			case 4:
26735 				enterOuterAlt(_localctx, 4);
26736 				{
26737 				setState(3817);
26738 				match(EQ_);
26739 				setState(3818);
26740 				match(LP_);
26741 				setState(3819);
26742 				select();
26743 				setState(3820);
26744 				match(RP_);
26745 				}
26746 				break;
26747 			}
26748 		}
26749 		catch (RecognitionException re) {
26750 			_localctx.exception = re;
26751 			_errHandler.reportError(this, re);
26752 			_errHandler.recover(this, re);
26753 		}
26754 		finally {
26755 			exitRule();
26756 		}
26757 		return _localctx;
26758 	}
26759 
26760 	public static class CursorVariableContext extends ParserRuleContext {
26761 		public VariableNameContext variableName() {
26762 			return getRuleContext(VariableNameContext.class,0);
26763 		}
26764 		public TerminalNode CURSOR() { return getToken(SQLServerStatementParser.CURSOR, 0); }
26765 		public CursorClauseContext cursorClause() {
26766 			return getRuleContext(CursorClauseContext.class,0);
26767 		}
26768 		public List<TerminalNode> FOR() { return getTokens(SQLServerStatementParser.FOR); }
26769 		public TerminalNode FOR(int i) {
26770 			return getToken(SQLServerStatementParser.FOR, i);
26771 		}
26772 		public SelectContext select() {
26773 			return getRuleContext(SelectContext.class,0);
26774 		}
26775 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
26776 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
26777 		public TerminalNode OF() { return getToken(SQLServerStatementParser.OF, 0); }
26778 		public List<NameContext> name() {
26779 			return getRuleContexts(NameContext.class);
26780 		}
26781 		public NameContext name(int i) {
26782 			return getRuleContext(NameContext.class,i);
26783 		}
26784 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
26785 		public TerminalNode COMMA_(int i) {
26786 			return getToken(SQLServerStatementParser.COMMA_, i);
26787 		}
26788 		public CursorVariableContext(ParserRuleContext parent, int invokingState) {
26789 			super(parent, invokingState);
26790 		}
26791 		@Override public int getRuleIndex() { return RULE_cursorVariable; }
26792 		@Override
26793 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
26794 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCursorVariable(this);
26795 			else return visitor.visitChildren(this);
26796 		}
26797 	}
26798 
26799 	public final CursorVariableContext cursorVariable() throws RecognitionException {
26800 		CursorVariableContext _localctx = new CursorVariableContext(_ctx, getState());
26801 		enterRule(_localctx, 556, RULE_cursorVariable);
26802 		int _la;
26803 		try {
26804 			setState(3843);
26805 			_errHandler.sync(this);
26806 			switch (_input.LA(1)) {
26807 			case TRUNCATE:
26808 			case SCHEMA:
26809 			case COLUMNS:
26810 			case PRECISION:
26811 			case FUNCTION:
26812 			case TRIGGER:
26813 			case CAST:
26814 			case TRIM:
26815 			case SUBSTRING:
26816 			case RIGHT:
26817 			case OFF:
26818 			case GROUP:
26819 			case LIMIT:
26820 			case OFFSET:
26821 			case SAVEPOINT:
26822 			case BOOLEAN:
26823 			case ARRAY:
26824 			case DATE:
26825 			case TIMESTAMP:
26826 			case LOCALTIME:
26827 			case LOCALTIMESTAMP:
26828 			case YEAR:
26829 			case QUARTER:
26830 			case MONTH:
26831 			case WEEK:
26832 			case DAY:
26833 			case SECOND:
26834 			case MICROSECOND:
26835 			case MAX:
26836 			case MIN:
26837 			case SUM:
26838 			case COUNT:
26839 			case AVG:
26840 			case ENABLE:
26841 			case DISABLE:
26842 			case INSTANCE:
26843 			case DO:
26844 			case DEFINER:
26845 			case SQL:
26846 			case CASCADED:
26847 			case LOCAL:
26848 			case NEXT:
26849 			case NAME:
26850 			case INTEGER:
26851 			case TYPE:
26852 			case TEXT:
26853 			case VIEWS:
26854 			case READ_ONLY:
26855 			case DATABASE:
26856 			case RETURNS:
26857 			case DATEPART:
26858 			case PASSWORD:
26859 			case BINARY:
26860 			case HIDDEN_:
26861 			case MOD:
26862 			case PARTITION:
26863 			case PARTITIONS:
26864 			case TOP:
26865 			case ROW:
26866 			case ROWS:
26867 			case XOR:
26868 			case ALWAYS:
26869 			case USER:
26870 			case ROLE:
26871 			case START:
26872 			case ALGORITHM:
26873 			case AUTO:
26874 			case BLOCKERS:
26875 			case CLUSTERED:
26876 			case NONCLUSTERED:
26877 			case COLUMNSTORE:
26878 			case CONTENT:
26879 			case YEARS:
26880 			case MONTHS:
26881 			case WEEKS:
26882 			case DAYS:
26883 			case MINUTES:
26884 			case DENY:
26885 			case DETERMINISTIC:
26886 			case DISTRIBUTION:
26887 			case DOCUMENT:
26888 			case DURABILITY:
26889 			case ENCRYPTED:
26890 			case FILESTREAM:
26891 			case FILETABLE:
26892 			case FILLFACTOR:
26893 			case FOLLOWING:
26894 			case HASH:
26895 			case HEAP:
26896 			case INBOUND:
26897 			case OUTBOUND:
26898 			case UNBOUNDED:
26899 			case INFINITE:
26900 			case LOGIN:
26901 			case MASKED:
26902 			case MAXDOP:
26903 			case MOVE:
26904 			case NOCHECK:
26905 			case OBJECT:
26906 			case ONLINE:
26907 			case OVER:
26908 			case PAGE:
26909 			case PAUSED:
26910 			case PERIOD:
26911 			case PERSISTED:
26912 			case PRECEDING:
26913 			case RANDOMIZED:
26914 			case RANGE:
26915 			case REBUILD:
26916 			case REPLICATE:
26917 			case REPLICATION:
26918 			case RESUMABLE:
26919 			case ROWGUIDCOL:
26920 			case SAVE:
26921 			case SELF:
26922 			case SPARSE:
26923 			case SWITCH:
26924 			case TRAN:
26925 			case TRANCOUNT:
26926 			case CONTROL:
26927 			case CONCAT:
26928 			case TAKE:
26929 			case OWNERSHIP:
26930 			case DEFINITION:
26931 			case APPLICATION:
26932 			case ASSEMBLY:
26933 			case SYMMETRIC:
26934 			case ASYMMETRIC:
26935 			case SERVER:
26936 			case RECEIVE:
26937 			case CHANGE:
26938 			case TRACE:
26939 			case TRACKING:
26940 			case RESOURCES:
26941 			case SETTINGS:
26942 			case STATE:
26943 			case AVAILABILITY:
26944 			case CREDENTIAL:
26945 			case ENDPOINT:
26946 			case EVENT:
26947 			case NOTIFICATION:
26948 			case LINKED:
26949 			case AUDIT:
26950 			case DDL:
26951 			case XML:
26952 			case IMPERSONATE:
26953 			case SECURABLES:
26954 			case AUTHENTICATE:
26955 			case EXTERNAL:
26956 			case ACCESS:
26957 			case ADMINISTER:
26958 			case BULK:
26959 			case OPERATIONS:
26960 			case UNSAFE:
26961 			case SHUTDOWN:
26962 			case SCOPED:
26963 			case CONFIGURATION:
26964 			case DATASPACE:
26965 			case SERVICE:
26966 			case CERTIFICATE:
26967 			case CONTRACT:
26968 			case ENCRYPTION:
26969 			case MASTER:
26970 			case DATA:
26971 			case SOURCE:
26972 			case FILE:
26973 			case FORMAT:
26974 			case LIBRARY:
26975 			case FULLTEXT:
26976 			case MASK:
26977 			case UNMASK:
26978 			case MESSAGE:
26979 			case REMOTE:
26980 			case BINDING:
26981 			case ROUTE:
26982 			case SECURITY:
26983 			case POLICY:
26984 			case AGGREGATE:
26985 			case QUEUE:
26986 			case RULE:
26987 			case SYNONYM:
26988 			case COLLECTION:
26989 			case SCRIPT:
26990 			case KILL:
26991 			case BACKUP:
26992 			case LOG:
26993 			case SHOWPLAN:
26994 			case SUBSCRIBE:
26995 			case QUERY:
26996 			case NOTIFICATIONS:
26997 			case CHECKPOINT:
26998 			case SEQUENCE:
26999 			case ABORT_AFTER_WAIT:
27000 			case ALLOW_PAGE_LOCKS:
27001 			case ALLOW_ROW_LOCKS:
27002 			case ALL_SPARSE_COLUMNS:
27003 			case BUCKET_COUNT:
27004 			case COLUMNSTORE_ARCHIVE:
27005 			case COLUMN_ENCRYPTION_KEY:
27006 			case COLUMN_SET:
27007 			case COMPRESSION_DELAY:
27008 			case DATABASE_DEAULT:
27009 			case DATA_COMPRESSION:
27010 			case DATA_CONSISTENCY_CHECK:
27011 			case ENCRYPTION_TYPE:
27012 			case SYSTEM_TIME:
27013 			case SYSTEM_VERSIONING:
27014 			case TEXTIMAGE_ON:
27015 			case WAIT_AT_LOW_PRIORITY:
27016 			case STATISTICS_INCREMENTAL:
27017 			case STATISTICS_NORECOMPUTE:
27018 			case ROUND_ROBIN:
27019 			case SCHEMA_AND_DATA:
27020 			case SCHEMA_ONLY:
27021 			case SORT_IN_TEMPDB:
27022 			case IGNORE_DUP_KEY:
27023 			case IMPLICIT_TRANSACTIONS:
27024 			case MAX_DURATION:
27025 			case MEMORY_OPTIMIZED:
27026 			case MIGRATION_STATE:
27027 			case PAD_INDEX:
27028 			case REMOTE_DATA_ARCHIVE:
27029 			case FILESTREAM_ON:
27030 			case FILETABLE_COLLATE_FILENAME:
27031 			case FILETABLE_DIRECTORY:
27032 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
27033 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
27034 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
27035 			case FILTER_PREDICATE:
27036 			case HISTORY_RETENTION_PERIOD:
27037 			case HISTORY_TABLE:
27038 			case LOCK_ESCALATION:
27039 			case DROP_EXISTING:
27040 			case ROW_NUMBER:
27041 			case FIRST:
27042 			case DATETIME2:
27043 			case OUTPUT:
27044 			case INSERTED:
27045 			case DELETED:
27046 			case FILENAME:
27047 			case SIZE:
27048 			case MAXSIZE:
27049 			case FILEGROWTH:
27050 			case UNLIMITED:
27051 			case KB:
27052 			case MB:
27053 			case GB:
27054 			case TB:
27055 			case CONTAINS:
27056 			case MEMORY_OPTIMIZED_DATA:
27057 			case FILEGROUP:
27058 			case NON_TRANSACTED_ACCESS:
27059 			case DB_CHAINING:
27060 			case TRUSTWORTHY:
27061 			case FORWARD_ONLY:
27062 			case KEYSET:
27063 			case FAST_FORWARD:
27064 			case SCROLL_LOCKS:
27065 			case OPTIMISTIC:
27066 			case TYPE_WARNING:
27067 			case SCHEMABINDING:
27068 			case CALLER:
27069 			case INPUT:
27070 			case OWNER:
27071 			case SNAPSHOT:
27072 			case REPEATABLE:
27073 			case SERIALIZABLE:
27074 			case NATIVE_COMPILATION:
27075 			case VIEW_METADATA:
27076 			case INSTEAD:
27077 			case APPEND:
27078 			case INCREMENT:
27079 			case CACHE:
27080 			case MINVALUE:
27081 			case MAXVALUE:
27082 			case RESTART:
27083 			case LOB_COMPACTION:
27084 			case COMPRESS_ALL_ROW_GROUPS:
27085 			case REORGANIZE:
27086 			case RESUME:
27087 			case PAUSE:
27088 			case ABORT:
27089 			case ACCELERATED_DATABASE_RECOVERY:
27090 			case PERSISTENT_VERSION_STORE_FILEGROUP:
27091 			case IMMEDIATE:
27092 			case NO_WAIT:
27093 			case TARGET_RECOVERY_TIME:
27094 			case SECONDS:
27095 			case HONOR_BROKER_PRIORITY:
27096 			case ERROR_BROKER_CONVERSATIONS:
27097 			case NEW_BROKER:
27098 			case DISABLE_BROKER:
27099 			case ENABLE_BROKER:
27100 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
27101 			case READ_COMMITTED_SNAPSHOT:
27102 			case ALLOW_SNAPSHOT_ISOLATION:
27103 			case RECURSIVE_TRIGGERS:
27104 			case QUOTED_IDENTIFIER:
27105 			case NUMERIC_ROUNDABORT:
27106 			case CONCAT_NULL_YIELDS_NULL:
27107 			case COMPATIBILITY_LEVEL:
27108 			case ARITHABORT:
27109 			case ANSI_WARNINGS:
27110 			case ANSI_PADDING:
27111 			case ANSI_NULLS:
27112 			case ANSI_NULL_DEFAULT:
27113 			case PAGE_VERIFY:
27114 			case CHECKSUM:
27115 			case TORN_PAGE_DETECTION:
27116 			case BULK_LOGGED:
27117 			case RECOVERY:
27118 			case TOTAL_EXECUTION_CPU_TIME_MS:
27119 			case TOTAL_COMPILE_CPU_TIME_MS:
27120 			case STALE_CAPTURE_POLICY_THRESHOLD:
27121 			case EXECUTION_COUNT:
27122 			case QUERY_CAPTURE_POLICY:
27123 			case WAIT_STATS_CAPTURE_MODE:
27124 			case MAX_PLANS_PER_QUERY:
27125 			case QUERY_CAPTURE_MODE:
27126 			case SIZE_BASED_CLEANUP_MODE:
27127 			case INTERVAL_LENGTH_MINUTES:
27128 			case MAX_STORAGE_SIZE_MB:
27129 			case DATA_FLUSH_INTERVAL_SECONDS:
27130 			case CLEANUP_POLICY:
27131 			case CUSTOM:
27132 			case STALE_QUERY_THRESHOLD_DAYS:
27133 			case OPERATION_MODE:
27134 			case QUERY_STORE:
27135 			case CURSOR_DEFAULT:
27136 			case GLOBAL:
27137 			case CURSOR_CLOSE_ON_COMMIT:
27138 			case HOURS:
27139 			case CHANGE_RETENTION:
27140 			case AUTO_CLEANUP:
27141 			case CHANGE_TRACKING:
27142 			case AUTOMATIC_TUNING:
27143 			case FORCE_LAST_GOOD_PLAN:
27144 			case AUTO_UPDATE_STATISTICS_ASYNC:
27145 			case AUTO_UPDATE_STATISTICS:
27146 			case AUTO_SHRINK:
27147 			case AUTO_CREATE_STATISTICS:
27148 			case INCREMENTAL:
27149 			case AUTO_CLOSE:
27150 			case DATA_RETENTION:
27151 			case TEMPORAL_HISTORY_RETENTION:
27152 			case EDITION:
27153 			case MIXED_PAGE_ALLOCATION:
27154 			case DISABLED:
27155 			case ALLOWED:
27156 			case HADR:
27157 			case MULTI_USER:
27158 			case RESTRICTED_USER:
27159 			case SINGLE_USER:
27160 			case OFFLINE:
27161 			case EMERGENCY:
27162 			case SUSPEND:
27163 			case DATE_CORRELATION_OPTIMIZATION:
27164 			case ELASTIC_POOL:
27165 			case SERVICE_OBJECTIVE:
27166 			case DATABASE_NAME:
27167 			case ALLOW_CONNECTIONS:
27168 			case GEO:
27169 			case NAMED:
27170 			case DATEFIRST:
27171 			case BACKUP_STORAGE_REDUNDANCY:
27172 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
27173 			case SECONDARY:
27174 			case FAILOVER:
27175 			case DEFAULT_FULLTEXT_LANGUAGE:
27176 			case DEFAULT_LANGUAGE:
27177 			case INLINE:
27178 			case NESTED_TRIGGERS:
27179 			case TRANSFORM_NOISE_WORDS:
27180 			case TWO_DIGIT_YEAR_CUTOFF:
27181 			case PERSISTENT_LOG_BUFFER:
27182 			case DIRECTORY_NAME:
27183 			case DATEFORMAT:
27184 			case DELAYED_DURABILITY:
27185 			case AUTHORIZATION:
27186 			case TRANSFER:
27187 			case PROVIDER:
27188 			case SID:
27189 			case SEARCH:
27190 			case MEMBER:
27191 			case JSON:
27192 			case IDENTIFIER_:
27193 			case DELIMITED_IDENTIFIER_:
27194 				enterOuterAlt(_localctx, 1);
27195 				{
27196 				setState(3824);
27197 				variableName();
27198 				}
27199 				break;
27200 			case CURSOR:
27201 				enterOuterAlt(_localctx, 2);
27202 				{
27203 				setState(3825);
27204 				match(CURSOR);
27205 				setState(3826);
27206 				cursorClause();
27207 				setState(3827);
27208 				match(FOR);
27209 				setState(3828);
27210 				select();
27211 				{
27212 				setState(3829);
27213 				match(FOR);
27214 				setState(3841);
27215 				_errHandler.sync(this);
27216 				switch (_input.LA(1)) {
27217 				case READ_ONLY:
27218 					{
27219 					setState(3830);
27220 					match(READ_ONLY);
27221 					}
27222 					break;
27223 				case UPDATE:
27224 					{
27225 					setState(3831);
27226 					match(UPDATE);
27227 					{
27228 					setState(3832);
27229 					match(OF);
27230 					setState(3833);
27231 					name();
27232 					setState(3838);
27233 					_errHandler.sync(this);
27234 					_la = _input.LA(1);
27235 					while (_la==COMMA_) {
27236 						{
27237 						{
27238 						setState(3834);
27239 						match(COMMA_);
27240 						setState(3835);
27241 						name();
27242 						}
27243 						}
27244 						setState(3840);
27245 						_errHandler.sync(this);
27246 						_la = _input.LA(1);
27247 					}
27248 					}
27249 					}
27250 					break;
27251 				default:
27252 					throw new NoViableAltException(this);
27253 				}
27254 				}
27255 				}
27256 				break;
27257 			default:
27258 				throw new NoViableAltException(this);
27259 			}
27260 		}
27261 		catch (RecognitionException re) {
27262 			_localctx.exception = re;
27263 			_errHandler.reportError(this, re);
27264 			_errHandler.recover(this, re);
27265 		}
27266 		finally {
27267 			exitRule();
27268 		}
27269 		return _localctx;
27270 	}
27271 
27272 	public static class CursorClauseContext extends ParserRuleContext {
27273 		public TerminalNode TYPE_WARNING() { return getToken(SQLServerStatementParser.TYPE_WARNING, 0); }
27274 		public TerminalNode FORWARD_ONLY() { return getToken(SQLServerStatementParser.FORWARD_ONLY, 0); }
27275 		public TerminalNode SCROLL() { return getToken(SQLServerStatementParser.SCROLL, 0); }
27276 		public TerminalNode STATIC() { return getToken(SQLServerStatementParser.STATIC, 0); }
27277 		public TerminalNode KEYSET() { return getToken(SQLServerStatementParser.KEYSET, 0); }
27278 		public TerminalNode DYNAMIC() { return getToken(SQLServerStatementParser.DYNAMIC, 0); }
27279 		public TerminalNode FAST_FORWARD() { return getToken(SQLServerStatementParser.FAST_FORWARD, 0); }
27280 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
27281 		public TerminalNode SCROLL_LOCKS() { return getToken(SQLServerStatementParser.SCROLL_LOCKS, 0); }
27282 		public TerminalNode OPTIMISTIC() { return getToken(SQLServerStatementParser.OPTIMISTIC, 0); }
27283 		public CursorClauseContext(ParserRuleContext parent, int invokingState) {
27284 			super(parent, invokingState);
27285 		}
27286 		@Override public int getRuleIndex() { return RULE_cursorClause; }
27287 		@Override
27288 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27289 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCursorClause(this);
27290 			else return visitor.visitChildren(this);
27291 		}
27292 	}
27293 
27294 	public final CursorClauseContext cursorClause() throws RecognitionException {
27295 		CursorClauseContext _localctx = new CursorClauseContext(_ctx, getState());
27296 		enterRule(_localctx, 558, RULE_cursorClause);
27297 		int _la;
27298 		try {
27299 			enterOuterAlt(_localctx, 1);
27300 			{
27301 			setState(3846);
27302 			_errHandler.sync(this);
27303 			_la = _input.LA(1);
27304 			if (_la==FORWARD_ONLY || _la==SCROLL) {
27305 				{
27306 				setState(3845);
27307 				_la = _input.LA(1);
27308 				if ( !(_la==FORWARD_ONLY || _la==SCROLL) ) {
27309 				_errHandler.recoverInline(this);
27310 				}
27311 				else {
27312 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
27313 					_errHandler.reportMatch(this);
27314 					consume();
27315 				}
27316 				}
27317 			}
27318 
27319 			setState(3849);
27320 			_errHandler.sync(this);
27321 			_la = _input.LA(1);
27322 			if (((((_la - 522)) & ~0x3f) == 0 && ((1L << (_la - 522)) & ((1L << (STATIC - 522)) | (1L << (KEYSET - 522)) | (1L << (DYNAMIC - 522)) | (1L << (FAST_FORWARD - 522)))) != 0)) {
27323 				{
27324 				setState(3848);
27325 				_la = _input.LA(1);
27326 				if ( !(((((_la - 522)) & ~0x3f) == 0 && ((1L << (_la - 522)) & ((1L << (STATIC - 522)) | (1L << (KEYSET - 522)) | (1L << (DYNAMIC - 522)) | (1L << (FAST_FORWARD - 522)))) != 0)) ) {
27327 				_errHandler.recoverInline(this);
27328 				}
27329 				else {
27330 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
27331 					_errHandler.reportMatch(this);
27332 					consume();
27333 				}
27334 				}
27335 			}
27336 
27337 			setState(3852);
27338 			_errHandler.sync(this);
27339 			_la = _input.LA(1);
27340 			if (_la==READ_ONLY || _la==SCROLL_LOCKS || _la==OPTIMISTIC) {
27341 				{
27342 				setState(3851);
27343 				_la = _input.LA(1);
27344 				if ( !(_la==READ_ONLY || _la==SCROLL_LOCKS || _la==OPTIMISTIC) ) {
27345 				_errHandler.recoverInline(this);
27346 				}
27347 				else {
27348 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
27349 					_errHandler.reportMatch(this);
27350 					consume();
27351 				}
27352 				}
27353 			}
27354 
27355 			setState(3855);
27356 			_errHandler.sync(this);
27357 			_la = _input.LA(1);
27358 			if (_la==TYPE_WARNING) {
27359 				{
27360 				setState(3854);
27361 				match(TYPE_WARNING);
27362 				}
27363 			}
27364 
27365 			}
27366 		}
27367 		catch (RecognitionException re) {
27368 			_localctx.exception = re;
27369 			_errHandler.reportError(this, re);
27370 			_errHandler.recover(this, re);
27371 		}
27372 		finally {
27373 			exitRule();
27374 		}
27375 		return _localctx;
27376 	}
27377 
27378 	public static class CompoundOperationContext extends ParserRuleContext {
27379 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
27380 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
27381 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
27382 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
27383 		public TerminalNode SLASH_() { return getToken(SQLServerStatementParser.SLASH_, 0); }
27384 		public TerminalNode MOD_() { return getToken(SQLServerStatementParser.MOD_, 0); }
27385 		public TerminalNode AMPERSAND_() { return getToken(SQLServerStatementParser.AMPERSAND_, 0); }
27386 		public TerminalNode CARET_() { return getToken(SQLServerStatementParser.CARET_, 0); }
27387 		public TerminalNode VERTICAL_BAR_() { return getToken(SQLServerStatementParser.VERTICAL_BAR_, 0); }
27388 		public CompoundOperationContext(ParserRuleContext parent, int invokingState) {
27389 			super(parent, invokingState);
27390 		}
27391 		@Override public int getRuleIndex() { return RULE_compoundOperation; }
27392 		@Override
27393 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27394 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCompoundOperation(this);
27395 			else return visitor.visitChildren(this);
27396 		}
27397 	}
27398 
27399 	public final CompoundOperationContext compoundOperation() throws RecognitionException {
27400 		CompoundOperationContext _localctx = new CompoundOperationContext(_ctx, getState());
27401 		enterRule(_localctx, 560, RULE_compoundOperation);
27402 		try {
27403 			setState(3873);
27404 			_errHandler.sync(this);
27405 			switch (_input.LA(1)) {
27406 			case PLUS_:
27407 				enterOuterAlt(_localctx, 1);
27408 				{
27409 				setState(3857);
27410 				match(PLUS_);
27411 				setState(3858);
27412 				match(EQ_);
27413 				}
27414 				break;
27415 			case MINUS_:
27416 				enterOuterAlt(_localctx, 2);
27417 				{
27418 				setState(3859);
27419 				match(MINUS_);
27420 				setState(3860);
27421 				match(EQ_);
27422 				}
27423 				break;
27424 			case ASTERISK_:
27425 				enterOuterAlt(_localctx, 3);
27426 				{
27427 				setState(3861);
27428 				match(ASTERISK_);
27429 				setState(3862);
27430 				match(EQ_);
27431 				}
27432 				break;
27433 			case SLASH_:
27434 				enterOuterAlt(_localctx, 4);
27435 				{
27436 				setState(3863);
27437 				match(SLASH_);
27438 				setState(3864);
27439 				match(EQ_);
27440 				}
27441 				break;
27442 			case MOD_:
27443 				enterOuterAlt(_localctx, 5);
27444 				{
27445 				setState(3865);
27446 				match(MOD_);
27447 				setState(3866);
27448 				match(EQ_);
27449 				}
27450 				break;
27451 			case AMPERSAND_:
27452 				enterOuterAlt(_localctx, 6);
27453 				{
27454 				setState(3867);
27455 				match(AMPERSAND_);
27456 				setState(3868);
27457 				match(EQ_);
27458 				}
27459 				break;
27460 			case CARET_:
27461 				enterOuterAlt(_localctx, 7);
27462 				{
27463 				setState(3869);
27464 				match(CARET_);
27465 				setState(3870);
27466 				match(EQ_);
27467 				}
27468 				break;
27469 			case VERTICAL_BAR_:
27470 				enterOuterAlt(_localctx, 8);
27471 				{
27472 				setState(3871);
27473 				match(VERTICAL_BAR_);
27474 				setState(3872);
27475 				match(EQ_);
27476 				}
27477 				break;
27478 			default:
27479 				throw new NoViableAltException(this);
27480 			}
27481 		}
27482 		catch (RecognitionException re) {
27483 			_localctx.exception = re;
27484 			_errHandler.reportError(this, re);
27485 			_errHandler.recover(this, re);
27486 		}
27487 		finally {
27488 			exitRule();
27489 		}
27490 		return _localctx;
27491 	}
27492 
27493 	public static class FuncParametersContext extends ParserRuleContext {
27494 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
27495 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
27496 		public List<VariableNameContext> variableName() {
27497 			return getRuleContexts(VariableNameContext.class);
27498 		}
27499 		public VariableNameContext variableName(int i) {
27500 			return getRuleContext(VariableNameContext.class,i);
27501 		}
27502 		public List<DataTypeContext> dataType() {
27503 			return getRuleContexts(DataTypeContext.class);
27504 		}
27505 		public DataTypeContext dataType(int i) {
27506 			return getRuleContext(DataTypeContext.class,i);
27507 		}
27508 		public List<TerminalNode> AS() { return getTokens(SQLServerStatementParser.AS); }
27509 		public TerminalNode AS(int i) {
27510 			return getToken(SQLServerStatementParser.AS, i);
27511 		}
27512 		public List<OwnerContext> owner() {
27513 			return getRuleContexts(OwnerContext.class);
27514 		}
27515 		public OwnerContext owner(int i) {
27516 			return getRuleContext(OwnerContext.class,i);
27517 		}
27518 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
27519 		public TerminalNode DOT_(int i) {
27520 			return getToken(SQLServerStatementParser.DOT_, i);
27521 		}
27522 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
27523 		public TerminalNode EQ_(int i) {
27524 			return getToken(SQLServerStatementParser.EQ_, i);
27525 		}
27526 		public List<IgnoredIdentifierContext> ignoredIdentifier() {
27527 			return getRuleContexts(IgnoredIdentifierContext.class);
27528 		}
27529 		public IgnoredIdentifierContext ignoredIdentifier(int i) {
27530 			return getRuleContext(IgnoredIdentifierContext.class,i);
27531 		}
27532 		public List<TerminalNode> READONLY() { return getTokens(SQLServerStatementParser.READONLY); }
27533 		public TerminalNode READONLY(int i) {
27534 			return getToken(SQLServerStatementParser.READONLY, i);
27535 		}
27536 		public FuncParametersContext(ParserRuleContext parent, int invokingState) {
27537 			super(parent, invokingState);
27538 		}
27539 		@Override public int getRuleIndex() { return RULE_funcParameters; }
27540 		@Override
27541 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27542 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncParameters(this);
27543 			else return visitor.visitChildren(this);
27544 		}
27545 	}
27546 
27547 	public final FuncParametersContext funcParameters() throws RecognitionException {
27548 		FuncParametersContext _localctx = new FuncParametersContext(_ctx, getState());
27549 		enterRule(_localctx, 562, RULE_funcParameters);
27550 		int _la;
27551 		try {
27552 			enterOuterAlt(_localctx, 1);
27553 			{
27554 			setState(3875);
27555 			match(LP_);
27556 			setState(3895);
27557 			_errHandler.sync(this);
27558 			_la = _input.LA(1);
27559 			while (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (TRIM - 53)) | (1L << (SUBSTRING - 53)) | (1L << (RIGHT - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (TIMESTAMP - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (YEAR - 118)) | (1L << (QUARTER - 118)) | (1L << (MONTH - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)))) != 0) || ((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (TOP - 248)) | (1L << (ROW - 248)) | (1L << (ROWS - 248)) | (1L << (XOR - 248)) | (1L << (ALWAYS - 248)) | (1L << (USER - 248)) | (1L << (ROLE - 248)) | (1L << (START - 248)) | (1L << (ALGORITHM - 248)) | (1L << (AUTO - 248)) | (1L << (BLOCKERS - 248)) | (1L << (CLUSTERED - 248)) | (1L << (NONCLUSTERED - 248)) | (1L << (COLUMNSTORE - 248)) | (1L << (CONTENT - 248)) | (1L << (YEARS - 248)) | (1L << (MONTHS - 248)) | (1L << (WEEKS - 248)) | (1L << (DAYS - 248)) | (1L << (MINUTES - 248)) | (1L << (DENY - 248)) | (1L << (DETERMINISTIC - 248)) | (1L << (DISTRIBUTION - 248)) | (1L << (DOCUMENT - 248)) | (1L << (DURABILITY - 248)) | (1L << (ENCRYPTED - 248)) | (1L << (FILESTREAM - 248)) | (1L << (FILETABLE - 248)) | (1L << (FILLFACTOR - 248)) | (1L << (FOLLOWING - 248)) | (1L << (HASH - 248)) | (1L << (HEAP - 248)) | (1L << (INBOUND - 248)) | (1L << (OUTBOUND - 248)) | (1L << (UNBOUNDED - 248)) | (1L << (INFINITE - 248)) | (1L << (LOGIN - 248)) | (1L << (MASKED - 248)) | (1L << (MAXDOP - 248)) | (1L << (MOVE - 248)) | (1L << (NOCHECK - 248)) | (1L << (OBJECT - 248)) | (1L << (ONLINE - 248)) | (1L << (OVER - 248)) | (1L << (PAGE - 248)) | (1L << (PAUSED - 248)) | (1L << (PERIOD - 248)) | (1L << (PERSISTED - 248)) | (1L << (PRECEDING - 248)))) != 0) || ((((_la - 312)) & ~0x3f) == 0 && ((1L << (_la - 312)) & ((1L << (RANDOMIZED - 312)) | (1L << (RANGE - 312)) | (1L << (REBUILD - 312)) | (1L << (REPLICATE - 312)) | (1L << (REPLICATION - 312)) | (1L << (RESUMABLE - 312)) | (1L << (ROWGUIDCOL - 312)) | (1L << (SAVE - 312)) | (1L << (SELF - 312)) | (1L << (SPARSE - 312)) | (1L << (SWITCH - 312)) | (1L << (TRAN - 312)) | (1L << (TRANCOUNT - 312)) | (1L << (CONTROL - 312)) | (1L << (CONCAT - 312)) | (1L << (TAKE - 312)) | (1L << (OWNERSHIP - 312)) | (1L << (DEFINITION - 312)) | (1L << (APPLICATION - 312)) | (1L << (ASSEMBLY - 312)) | (1L << (SYMMETRIC - 312)) | (1L << (ASYMMETRIC - 312)) | (1L << (SERVER - 312)) | (1L << (RECEIVE - 312)) | (1L << (CHANGE - 312)) | (1L << (TRACE - 312)) | (1L << (TRACKING - 312)) | (1L << (RESOURCES - 312)) | (1L << (SETTINGS - 312)) | (1L << (STATE - 312)) | (1L << (AVAILABILITY - 312)) | (1L << (CREDENTIAL - 312)) | (1L << (ENDPOINT - 312)) | (1L << (EVENT - 312)) | (1L << (NOTIFICATION - 312)) | (1L << (LINKED - 312)) | (1L << (AUDIT - 312)) | (1L << (DDL - 312)) | (1L << (XML - 312)) | (1L << (IMPERSONATE - 312)) | (1L << (SECURABLES - 312)) | (1L << (AUTHENTICATE - 312)) | (1L << (EXTERNAL - 312)) | (1L << (ACCESS - 312)) | (1L << (ADMINISTER - 312)) | (1L << (BULK - 312)) | (1L << (OPERATIONS - 312)) | (1L << (UNSAFE - 312)) | (1L << (SHUTDOWN - 312)) | (1L << (SCOPED - 312)) | (1L << (CONFIGURATION - 312)) | (1L << (DATASPACE - 312)) | (1L << (SERVICE - 312)) | (1L << (CERTIFICATE - 312)) | (1L << (CONTRACT - 312)) | (1L << (ENCRYPTION - 312)) | (1L << (MASTER - 312)))) != 0) || ((((_la - 376)) & ~0x3f) == 0 && ((1L << (_la - 376)) & ((1L << (DATA - 376)) | (1L << (SOURCE - 376)) | (1L << (FILE - 376)) | (1L << (FORMAT - 376)) | (1L << (LIBRARY - 376)) | (1L << (FULLTEXT - 376)) | (1L << (MASK - 376)) | (1L << (UNMASK - 376)) | (1L << (MESSAGE - 376)) | (1L << (REMOTE - 376)) | (1L << (BINDING - 376)) | (1L << (ROUTE - 376)) | (1L << (SECURITY - 376)) | (1L << (POLICY - 376)) | (1L << (AGGREGATE - 376)) | (1L << (QUEUE - 376)) | (1L << (RULE - 376)) | (1L << (SYNONYM - 376)) | (1L << (COLLECTION - 376)) | (1L << (SCRIPT - 376)) | (1L << (KILL - 376)) | (1L << (BACKUP - 376)) | (1L << (LOG - 376)) | (1L << (SHOWPLAN - 376)) | (1L << (SUBSCRIBE - 376)) | (1L << (QUERY - 376)) | (1L << (NOTIFICATIONS - 376)) | (1L << (CHECKPOINT - 376)) | (1L << (SEQUENCE - 376)) | (1L << (ABORT_AFTER_WAIT - 376)) | (1L << (ALLOW_PAGE_LOCKS - 376)) | (1L << (ALLOW_ROW_LOCKS - 376)) | (1L << (ALL_SPARSE_COLUMNS - 376)) | (1L << (BUCKET_COUNT - 376)) | (1L << (COLUMNSTORE_ARCHIVE - 376)) | (1L << (COLUMN_ENCRYPTION_KEY - 376)) | (1L << (COLUMN_SET - 376)) | (1L << (COMPRESSION_DELAY - 376)) | (1L << (DATABASE_DEAULT - 376)) | (1L << (DATA_COMPRESSION - 376)) | (1L << (DATA_CONSISTENCY_CHECK - 376)) | (1L << (ENCRYPTION_TYPE - 376)) | (1L << (SYSTEM_TIME - 376)) | (1L << (SYSTEM_VERSIONING - 376)) | (1L << (TEXTIMAGE_ON - 376)) | (1L << (WAIT_AT_LOW_PRIORITY - 376)) | (1L << (STATISTICS_INCREMENTAL - 376)) | (1L << (STATISTICS_NORECOMPUTE - 376)) | (1L << (ROUND_ROBIN - 376)) | (1L << (SCHEMA_AND_DATA - 376)) | (1L << (SCHEMA_ONLY - 376)) | (1L << (SORT_IN_TEMPDB - 376)) | (1L << (IGNORE_DUP_KEY - 376)) | (1L << (IMPLICIT_TRANSACTIONS - 376)) | (1L << (MAX_DURATION - 376)) | (1L << (MEMORY_OPTIMIZED - 376)) | (1L << (MIGRATION_STATE - 376)) | (1L << (PAD_INDEX - 376)) | (1L << (REMOTE_DATA_ARCHIVE - 376)) | (1L << (FILESTREAM_ON - 376)) | (1L << (FILETABLE_COLLATE_FILENAME - 376)) | (1L << (FILETABLE_DIRECTORY - 376)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 376)))) != 0) || ((((_la - 440)) & ~0x3f) == 0 && ((1L << (_la - 440)) & ((1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 440)) | (1L << (FILTER_PREDICATE - 440)) | (1L << (HISTORY_RETENTION_PERIOD - 440)) | (1L << (HISTORY_TABLE - 440)) | (1L << (LOCK_ESCALATION - 440)) | (1L << (DROP_EXISTING - 440)) | (1L << (ROW_NUMBER - 440)) | (1L << (FIRST - 440)) | (1L << (DATETIME2 - 440)) | (1L << (OUTPUT - 440)) | (1L << (INSERTED - 440)) | (1L << (DELETED - 440)))) != 0) || ((((_la - 505)) & ~0x3f) == 0 && ((1L << (_la - 505)) & ((1L << (FILENAME - 505)) | (1L << (SIZE - 505)) | (1L << (MAXSIZE - 505)) | (1L << (FILEGROWTH - 505)) | (1L << (UNLIMITED - 505)) | (1L << (KB - 505)) | (1L << (MB - 505)) | (1L << (GB - 505)) | (1L << (TB - 505)) | (1L << (CONTAINS - 505)) | (1L << (MEMORY_OPTIMIZED_DATA - 505)) | (1L << (FILEGROUP - 505)) | (1L << (NON_TRANSACTED_ACCESS - 505)) | (1L << (DB_CHAINING - 505)) | (1L << (TRUSTWORTHY - 505)) | (1L << (FORWARD_ONLY - 505)) | (1L << (KEYSET - 505)) | (1L << (FAST_FORWARD - 505)) | (1L << (SCROLL_LOCKS - 505)) | (1L << (OPTIMISTIC - 505)) | (1L << (TYPE_WARNING - 505)) | (1L << (SCHEMABINDING - 505)) | (1L << (CALLER - 505)) | (1L << (INPUT - 505)) | (1L << (OWNER - 505)) | (1L << (SNAPSHOT - 505)) | (1L << (REPEATABLE - 505)) | (1L << (SERIALIZABLE - 505)) | (1L << (NATIVE_COMPILATION - 505)) | (1L << (VIEW_METADATA - 505)) | (1L << (INSTEAD - 505)) | (1L << (APPEND - 505)) | (1L << (INCREMENT - 505)) | (1L << (CACHE - 505)) | (1L << (MINVALUE - 505)) | (1L << (MAXVALUE - 505)) | (1L << (RESTART - 505)) | (1L << (LOB_COMPACTION - 505)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 505)) | (1L << (REORGANIZE - 505)) | (1L << (RESUME - 505)) | (1L << (PAUSE - 505)) | (1L << (ABORT - 505)))) != 0) || ((((_la - 571)) & ~0x3f) == 0 && ((1L << (_la - 571)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 571)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 571)) | (1L << (IMMEDIATE - 571)) | (1L << (NO_WAIT - 571)) | (1L << (TARGET_RECOVERY_TIME - 571)) | (1L << (SECONDS - 571)) | (1L << (HONOR_BROKER_PRIORITY - 571)) | (1L << (ERROR_BROKER_CONVERSATIONS - 571)) | (1L << (NEW_BROKER - 571)) | (1L << (DISABLE_BROKER - 571)) | (1L << (ENABLE_BROKER - 571)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 571)) | (1L << (READ_COMMITTED_SNAPSHOT - 571)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 571)) | (1L << (RECURSIVE_TRIGGERS - 571)) | (1L << (QUOTED_IDENTIFIER - 571)) | (1L << (NUMERIC_ROUNDABORT - 571)) | (1L << (CONCAT_NULL_YIELDS_NULL - 571)) | (1L << (COMPATIBILITY_LEVEL - 571)) | (1L << (ARITHABORT - 571)) | (1L << (ANSI_WARNINGS - 571)) | (1L << (ANSI_PADDING - 571)) | (1L << (ANSI_NULLS - 571)) | (1L << (ANSI_NULL_DEFAULT - 571)) | (1L << (PAGE_VERIFY - 571)) | (1L << (CHECKSUM - 571)) | (1L << (TORN_PAGE_DETECTION - 571)) | (1L << (BULK_LOGGED - 571)) | (1L << (RECOVERY - 571)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 571)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 571)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 571)) | (1L << (EXECUTION_COUNT - 571)) | (1L << (QUERY_CAPTURE_POLICY - 571)) | (1L << (WAIT_STATS_CAPTURE_MODE - 571)) | (1L << (MAX_PLANS_PER_QUERY - 571)) | (1L << (QUERY_CAPTURE_MODE - 571)) | (1L << (SIZE_BASED_CLEANUP_MODE - 571)) | (1L << (INTERVAL_LENGTH_MINUTES - 571)) | (1L << (MAX_STORAGE_SIZE_MB - 571)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 571)) | (1L << (CLEANUP_POLICY - 571)) | (1L << (CUSTOM - 571)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 571)) | (1L << (OPERATION_MODE - 571)) | (1L << (QUERY_STORE - 571)) | (1L << (CURSOR_DEFAULT - 571)) | (1L << (GLOBAL - 571)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 571)) | (1L << (HOURS - 571)) | (1L << (CHANGE_RETENTION - 571)) | (1L << (AUTO_CLEANUP - 571)) | (1L << (CHANGE_TRACKING - 571)) | (1L << (AUTOMATIC_TUNING - 571)) | (1L << (FORCE_LAST_GOOD_PLAN - 571)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 571)) | (1L << (AUTO_UPDATE_STATISTICS - 571)) | (1L << (AUTO_SHRINK - 571)) | (1L << (AUTO_CREATE_STATISTICS - 571)) | (1L << (INCREMENTAL - 571)) | (1L << (AUTO_CLOSE - 571)) | (1L << (DATA_RETENTION - 571)) | (1L << (TEMPORAL_HISTORY_RETENTION - 571)) | (1L << (EDITION - 571)))) != 0) || ((((_la - 635)) & ~0x3f) == 0 && ((1L << (_la - 635)) & ((1L << (MIXED_PAGE_ALLOCATION - 635)) | (1L << (DISABLED - 635)) | (1L << (ALLOWED - 635)) | (1L << (HADR - 635)) | (1L << (MULTI_USER - 635)) | (1L << (RESTRICTED_USER - 635)) | (1L << (SINGLE_USER - 635)) | (1L << (OFFLINE - 635)) | (1L << (EMERGENCY - 635)) | (1L << (SUSPEND - 635)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 635)) | (1L << (ELASTIC_POOL - 635)) | (1L << (SERVICE_OBJECTIVE - 635)) | (1L << (DATABASE_NAME - 635)) | (1L << (ALLOW_CONNECTIONS - 635)) | (1L << (GEO - 635)) | (1L << (NAMED - 635)) | (1L << (DATEFIRST - 635)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 635)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 635)) | (1L << (SECONDARY - 635)) | (1L << (FAILOVER - 635)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 635)) | (1L << (DEFAULT_LANGUAGE - 635)) | (1L << (INLINE - 635)) | (1L << (NESTED_TRIGGERS - 635)) | (1L << (TRANSFORM_NOISE_WORDS - 635)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 635)) | (1L << (PERSISTENT_LOG_BUFFER - 635)) | (1L << (DIRECTORY_NAME - 635)) | (1L << (DATEFORMAT - 635)) | (1L << (DELAYED_DURABILITY - 635)) | (1L << (AUTHORIZATION - 635)) | (1L << (TRANSFER - 635)) | (1L << (PROVIDER - 635)) | (1L << (SID - 635)) | (1L << (SEARCH - 635)) | (1L << (MEMBER - 635)))) != 0) || ((((_la - 707)) & ~0x3f) == 0 && ((1L << (_la - 707)) & ((1L << (JSON - 707)) | (1L << (IDENTIFIER_ - 707)) | (1L << (DELIMITED_IDENTIFIER_ - 707)))) != 0)) {
27560 				{
27561 				{
27562 				setState(3876);
27563 				variableName();
27564 				setState(3878);
27565 				_errHandler.sync(this);
27566 				_la = _input.LA(1);
27567 				if (_la==AS) {
27568 					{
27569 					setState(3877);
27570 					match(AS);
27571 					}
27572 				}
27573 
27574 				setState(3883);
27575 				_errHandler.sync(this);
27576 				switch ( getInterpreter().adaptivePredict(_input,389,_ctx) ) {
27577 				case 1:
27578 					{
27579 					setState(3880);
27580 					owner();
27581 					setState(3881);
27582 					match(DOT_);
27583 					}
27584 					break;
27585 				}
27586 				setState(3885);
27587 				dataType();
27588 				setState(3888);
27589 				_errHandler.sync(this);
27590 				_la = _input.LA(1);
27591 				if (_la==EQ_) {
27592 					{
27593 					setState(3886);
27594 					match(EQ_);
27595 					setState(3887);
27596 					ignoredIdentifier();
27597 					}
27598 				}
27599 
27600 				setState(3891);
27601 				_errHandler.sync(this);
27602 				_la = _input.LA(1);
27603 				if (_la==READONLY) {
27604 					{
27605 					setState(3890);
27606 					match(READONLY);
27607 					}
27608 				}
27609 
27610 				}
27611 				}
27612 				setState(3897);
27613 				_errHandler.sync(this);
27614 				_la = _input.LA(1);
27615 			}
27616 			setState(3898);
27617 			match(RP_);
27618 			}
27619 		}
27620 		catch (RecognitionException re) {
27621 			_localctx.exception = re;
27622 			_errHandler.reportError(this, re);
27623 			_errHandler.recover(this, re);
27624 		}
27625 		finally {
27626 			exitRule();
27627 		}
27628 		return _localctx;
27629 	}
27630 
27631 	public static class FuncReturnsContext extends ParserRuleContext {
27632 		public FuncScalarReturnContext funcScalarReturn() {
27633 			return getRuleContext(FuncScalarReturnContext.class,0);
27634 		}
27635 		public FuncInlineReturnContext funcInlineReturn() {
27636 			return getRuleContext(FuncInlineReturnContext.class,0);
27637 		}
27638 		public FuncMutiReturnContext funcMutiReturn() {
27639 			return getRuleContext(FuncMutiReturnContext.class,0);
27640 		}
27641 		public FuncReturnsContext(ParserRuleContext parent, int invokingState) {
27642 			super(parent, invokingState);
27643 		}
27644 		@Override public int getRuleIndex() { return RULE_funcReturns; }
27645 		@Override
27646 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27647 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncReturns(this);
27648 			else return visitor.visitChildren(this);
27649 		}
27650 	}
27651 
27652 	public final FuncReturnsContext funcReturns() throws RecognitionException {
27653 		FuncReturnsContext _localctx = new FuncReturnsContext(_ctx, getState());
27654 		enterRule(_localctx, 564, RULE_funcReturns);
27655 		try {
27656 			setState(3903);
27657 			_errHandler.sync(this);
27658 			switch ( getInterpreter().adaptivePredict(_input,393,_ctx) ) {
27659 			case 1:
27660 				enterOuterAlt(_localctx, 1);
27661 				{
27662 				setState(3900);
27663 				funcScalarReturn();
27664 				}
27665 				break;
27666 			case 2:
27667 				enterOuterAlt(_localctx, 2);
27668 				{
27669 				setState(3901);
27670 				funcInlineReturn();
27671 				}
27672 				break;
27673 			case 3:
27674 				enterOuterAlt(_localctx, 3);
27675 				{
27676 				setState(3902);
27677 				funcMutiReturn();
27678 				}
27679 				break;
27680 			}
27681 		}
27682 		catch (RecognitionException re) {
27683 			_localctx.exception = re;
27684 			_errHandler.reportError(this, re);
27685 			_errHandler.recover(this, re);
27686 		}
27687 		finally {
27688 			exitRule();
27689 		}
27690 		return _localctx;
27691 	}
27692 
27693 	public static class FuncMutiReturnContext extends ParserRuleContext {
27694 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
27695 		public VariableNameContext variableName() {
27696 			return getRuleContext(VariableNameContext.class,0);
27697 		}
27698 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
27699 		public CreateTableDefinitionsContext createTableDefinitions() {
27700 			return getRuleContext(CreateTableDefinitionsContext.class,0);
27701 		}
27702 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
27703 		public CompoundStatementContext compoundStatement() {
27704 			return getRuleContext(CompoundStatementContext.class,0);
27705 		}
27706 		public TerminalNode RETURN() { return getToken(SQLServerStatementParser.RETURN, 0); }
27707 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
27708 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
27709 		public List<FunctionOptionContext> functionOption() {
27710 			return getRuleContexts(FunctionOptionContext.class);
27711 		}
27712 		public FunctionOptionContext functionOption(int i) {
27713 			return getRuleContext(FunctionOptionContext.class,i);
27714 		}
27715 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
27716 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27717 		public TerminalNode COMMA_(int i) {
27718 			return getToken(SQLServerStatementParser.COMMA_, i);
27719 		}
27720 		public FuncMutiReturnContext(ParserRuleContext parent, int invokingState) {
27721 			super(parent, invokingState);
27722 		}
27723 		@Override public int getRuleIndex() { return RULE_funcMutiReturn; }
27724 		@Override
27725 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27726 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncMutiReturn(this);
27727 			else return visitor.visitChildren(this);
27728 		}
27729 	}
27730 
27731 	public final FuncMutiReturnContext funcMutiReturn() throws RecognitionException {
27732 		FuncMutiReturnContext _localctx = new FuncMutiReturnContext(_ctx, getState());
27733 		enterRule(_localctx, 566, RULE_funcMutiReturn);
27734 		int _la;
27735 		try {
27736 			enterOuterAlt(_localctx, 1);
27737 			{
27738 			setState(3905);
27739 			match(RETURNS);
27740 			setState(3906);
27741 			variableName();
27742 			setState(3907);
27743 			match(TABLE);
27744 			setState(3908);
27745 			createTableDefinitions();
27746 			setState(3918);
27747 			_errHandler.sync(this);
27748 			_la = _input.LA(1);
27749 			if (_la==WITH) {
27750 				{
27751 				setState(3909);
27752 				match(WITH);
27753 				setState(3910);
27754 				functionOption();
27755 				setState(3915);
27756 				_errHandler.sync(this);
27757 				_la = _input.LA(1);
27758 				while (_la==COMMA_) {
27759 					{
27760 					{
27761 					setState(3911);
27762 					match(COMMA_);
27763 					setState(3912);
27764 					functionOption();
27765 					}
27766 					}
27767 					setState(3917);
27768 					_errHandler.sync(this);
27769 					_la = _input.LA(1);
27770 				}
27771 				}
27772 			}
27773 
27774 			setState(3921);
27775 			_errHandler.sync(this);
27776 			_la = _input.LA(1);
27777 			if (_la==AS) {
27778 				{
27779 				setState(3920);
27780 				match(AS);
27781 				}
27782 			}
27783 
27784 			setState(3923);
27785 			match(BEGIN);
27786 			setState(3924);
27787 			compoundStatement();
27788 			setState(3925);
27789 			match(RETURN);
27790 			setState(3926);
27791 			match(END);
27792 			}
27793 		}
27794 		catch (RecognitionException re) {
27795 			_localctx.exception = re;
27796 			_errHandler.reportError(this, re);
27797 			_errHandler.recover(this, re);
27798 		}
27799 		finally {
27800 			exitRule();
27801 		}
27802 		return _localctx;
27803 	}
27804 
27805 	public static class FuncInlineReturnContext extends ParserRuleContext {
27806 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
27807 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
27808 		public TerminalNode RETURN() { return getToken(SQLServerStatementParser.RETURN, 0); }
27809 		public SelectContext select() {
27810 			return getRuleContext(SelectContext.class,0);
27811 		}
27812 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
27813 		public List<FunctionOptionContext> functionOption() {
27814 			return getRuleContexts(FunctionOptionContext.class);
27815 		}
27816 		public FunctionOptionContext functionOption(int i) {
27817 			return getRuleContext(FunctionOptionContext.class,i);
27818 		}
27819 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
27820 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
27821 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
27822 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27823 		public TerminalNode COMMA_(int i) {
27824 			return getToken(SQLServerStatementParser.COMMA_, i);
27825 		}
27826 		public FuncInlineReturnContext(ParserRuleContext parent, int invokingState) {
27827 			super(parent, invokingState);
27828 		}
27829 		@Override public int getRuleIndex() { return RULE_funcInlineReturn; }
27830 		@Override
27831 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27832 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncInlineReturn(this);
27833 			else return visitor.visitChildren(this);
27834 		}
27835 	}
27836 
27837 	public final FuncInlineReturnContext funcInlineReturn() throws RecognitionException {
27838 		FuncInlineReturnContext _localctx = new FuncInlineReturnContext(_ctx, getState());
27839 		enterRule(_localctx, 568, RULE_funcInlineReturn);
27840 		int _la;
27841 		try {
27842 			enterOuterAlt(_localctx, 1);
27843 			{
27844 			setState(3928);
27845 			match(RETURNS);
27846 			setState(3929);
27847 			match(TABLE);
27848 			setState(3939);
27849 			_errHandler.sync(this);
27850 			_la = _input.LA(1);
27851 			if (_la==WITH) {
27852 				{
27853 				setState(3930);
27854 				match(WITH);
27855 				setState(3931);
27856 				functionOption();
27857 				setState(3936);
27858 				_errHandler.sync(this);
27859 				_la = _input.LA(1);
27860 				while (_la==COMMA_) {
27861 					{
27862 					{
27863 					setState(3932);
27864 					match(COMMA_);
27865 					setState(3933);
27866 					functionOption();
27867 					}
27868 					}
27869 					setState(3938);
27870 					_errHandler.sync(this);
27871 					_la = _input.LA(1);
27872 				}
27873 				}
27874 			}
27875 
27876 			setState(3942);
27877 			_errHandler.sync(this);
27878 			_la = _input.LA(1);
27879 			if (_la==AS) {
27880 				{
27881 				setState(3941);
27882 				match(AS);
27883 				}
27884 			}
27885 
27886 			setState(3944);
27887 			match(RETURN);
27888 			setState(3946);
27889 			_errHandler.sync(this);
27890 			_la = _input.LA(1);
27891 			if (_la==LP_) {
27892 				{
27893 				setState(3945);
27894 				match(LP_);
27895 				}
27896 			}
27897 
27898 			setState(3948);
27899 			select();
27900 			setState(3950);
27901 			_errHandler.sync(this);
27902 			_la = _input.LA(1);
27903 			if (_la==RP_) {
27904 				{
27905 				setState(3949);
27906 				match(RP_);
27907 				}
27908 			}
27909 
27910 			}
27911 		}
27912 		catch (RecognitionException re) {
27913 			_localctx.exception = re;
27914 			_errHandler.reportError(this, re);
27915 			_errHandler.recover(this, re);
27916 		}
27917 		finally {
27918 			exitRule();
27919 		}
27920 		return _localctx;
27921 	}
27922 
27923 	public static class FuncScalarReturnContext extends ParserRuleContext {
27924 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
27925 		public DataTypeContext dataType() {
27926 			return getRuleContext(DataTypeContext.class,0);
27927 		}
27928 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
27929 		public CompoundStatementContext compoundStatement() {
27930 			return getRuleContext(CompoundStatementContext.class,0);
27931 		}
27932 		public TerminalNode RETURN() { return getToken(SQLServerStatementParser.RETURN, 0); }
27933 		public ExprContext expr() {
27934 			return getRuleContext(ExprContext.class,0);
27935 		}
27936 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
27937 		public List<FunctionOptionContext> functionOption() {
27938 			return getRuleContexts(FunctionOptionContext.class);
27939 		}
27940 		public FunctionOptionContext functionOption(int i) {
27941 			return getRuleContext(FunctionOptionContext.class,i);
27942 		}
27943 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
27944 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
27945 		public TerminalNode COMMA_(int i) {
27946 			return getToken(SQLServerStatementParser.COMMA_, i);
27947 		}
27948 		public FuncScalarReturnContext(ParserRuleContext parent, int invokingState) {
27949 			super(parent, invokingState);
27950 		}
27951 		@Override public int getRuleIndex() { return RULE_funcScalarReturn; }
27952 		@Override
27953 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
27954 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFuncScalarReturn(this);
27955 			else return visitor.visitChildren(this);
27956 		}
27957 	}
27958 
27959 	public final FuncScalarReturnContext funcScalarReturn() throws RecognitionException {
27960 		FuncScalarReturnContext _localctx = new FuncScalarReturnContext(_ctx, getState());
27961 		enterRule(_localctx, 570, RULE_funcScalarReturn);
27962 		int _la;
27963 		try {
27964 			enterOuterAlt(_localctx, 1);
27965 			{
27966 			setState(3952);
27967 			match(RETURNS);
27968 			setState(3953);
27969 			dataType();
27970 			setState(3963);
27971 			_errHandler.sync(this);
27972 			_la = _input.LA(1);
27973 			if (_la==WITH) {
27974 				{
27975 				setState(3954);
27976 				match(WITH);
27977 				setState(3955);
27978 				functionOption();
27979 				setState(3960);
27980 				_errHandler.sync(this);
27981 				_la = _input.LA(1);
27982 				while (_la==COMMA_) {
27983 					{
27984 					{
27985 					setState(3956);
27986 					match(COMMA_);
27987 					setState(3957);
27988 					functionOption();
27989 					}
27990 					}
27991 					setState(3962);
27992 					_errHandler.sync(this);
27993 					_la = _input.LA(1);
27994 				}
27995 				}
27996 			}
27997 
27998 			setState(3966);
27999 			_errHandler.sync(this);
28000 			_la = _input.LA(1);
28001 			if (_la==AS) {
28002 				{
28003 				setState(3965);
28004 				match(AS);
28005 				}
28006 			}
28007 
28008 			setState(3968);
28009 			match(BEGIN);
28010 			setState(3969);
28011 			compoundStatement();
28012 			setState(3970);
28013 			match(RETURN);
28014 			setState(3971);
28015 			expr(0);
28016 			}
28017 		}
28018 		catch (RecognitionException re) {
28019 			_localctx.exception = re;
28020 			_errHandler.reportError(this, re);
28021 			_errHandler.recover(this, re);
28022 		}
28023 		finally {
28024 			exitRule();
28025 		}
28026 		return _localctx;
28027 	}
28028 
28029 	public static class TableTypeDefinitionContext extends ParserRuleContext {
28030 		public ColumnDefinitionContext columnDefinition() {
28031 			return getRuleContext(ColumnDefinitionContext.class,0);
28032 		}
28033 		public ColumnConstraintContext columnConstraint() {
28034 			return getRuleContext(ColumnConstraintContext.class,0);
28035 		}
28036 		public ComputedColumnDefinitionContext computedColumnDefinition() {
28037 			return getRuleContext(ComputedColumnDefinitionContext.class,0);
28038 		}
28039 		public List<TableConstraintContext> tableConstraint() {
28040 			return getRuleContexts(TableConstraintContext.class);
28041 		}
28042 		public TableConstraintContext tableConstraint(int i) {
28043 			return getRuleContext(TableConstraintContext.class,i);
28044 		}
28045 		public TableTypeDefinitionContext(ParserRuleContext parent, int invokingState) {
28046 			super(parent, invokingState);
28047 		}
28048 		@Override public int getRuleIndex() { return RULE_tableTypeDefinition; }
28049 		@Override
28050 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28051 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableTypeDefinition(this);
28052 			else return visitor.visitChildren(this);
28053 		}
28054 	}
28055 
28056 	public final TableTypeDefinitionContext tableTypeDefinition() throws RecognitionException {
28057 		TableTypeDefinitionContext _localctx = new TableTypeDefinitionContext(_ctx, getState());
28058 		enterRule(_localctx, 572, RULE_tableTypeDefinition);
28059 		int _la;
28060 		try {
28061 			enterOuterAlt(_localctx, 1);
28062 			{
28063 			setState(3977);
28064 			_errHandler.sync(this);
28065 			switch ( getInterpreter().adaptivePredict(_input,405,_ctx) ) {
28066 			case 1:
28067 				{
28068 				setState(3973);
28069 				columnDefinition();
28070 				setState(3974);
28071 				columnConstraint();
28072 				}
28073 				break;
28074 			case 2:
28075 				{
28076 				setState(3976);
28077 				computedColumnDefinition();
28078 				}
28079 				break;
28080 			}
28081 			setState(3982);
28082 			_errHandler.sync(this);
28083 			_la = _input.LA(1);
28084 			while (((((_la - 31)) & ~0x3f) == 0 && ((1L << (_la - 31)) & ((1L << (LP_ - 31)) | (1L << (CONSTRAINT - 31)) | (1L << (PRIMARY - 31)) | (1L << (UNIQUE - 31)) | (1L << (FOREIGN - 31)) | (1L << (KEY - 31)))) != 0) || _la==CHECK) {
28085 				{
28086 				{
28087 				setState(3979);
28088 				tableConstraint();
28089 				}
28090 				}
28091 				setState(3984);
28092 				_errHandler.sync(this);
28093 				_la = _input.LA(1);
28094 			}
28095 			}
28096 		}
28097 		catch (RecognitionException re) {
28098 			_localctx.exception = re;
28099 			_errHandler.reportError(this, re);
28100 			_errHandler.recover(this, re);
28101 		}
28102 		finally {
28103 			exitRule();
28104 		}
28105 		return _localctx;
28106 	}
28107 
28108 	public static class CompoundStatementContext extends ParserRuleContext {
28109 		public List<ValidStatementContext> validStatement() {
28110 			return getRuleContexts(ValidStatementContext.class);
28111 		}
28112 		public ValidStatementContext validStatement(int i) {
28113 			return getRuleContext(ValidStatementContext.class,i);
28114 		}
28115 		public CompoundStatementContext(ParserRuleContext parent, int invokingState) {
28116 			super(parent, invokingState);
28117 		}
28118 		@Override public int getRuleIndex() { return RULE_compoundStatement; }
28119 		@Override
28120 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28121 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCompoundStatement(this);
28122 			else return visitor.visitChildren(this);
28123 		}
28124 	}
28125 
28126 	public final CompoundStatementContext compoundStatement() throws RecognitionException {
28127 		CompoundStatementContext _localctx = new CompoundStatementContext(_ctx, getState());
28128 		enterRule(_localctx, 574, RULE_compoundStatement);
28129 		int _la;
28130 		try {
28131 			enterOuterAlt(_localctx, 1);
28132 			{
28133 			setState(3988);
28134 			_errHandler.sync(this);
28135 			_la = _input.LA(1);
28136 			while (((((_la - 46)) & ~0x3f) == 0 && ((1L << (_la - 46)) & ((1L << (SELECT - 46)) | (1L << (INSERT - 46)) | (1L << (UPDATE - 46)) | (1L << (DELETE - 46)) | (1L << (CREATE - 46)) | (1L << (ALTER - 46)) | (1L << (DROP - 46)) | (1L << (TRUNCATE - 46)) | (1L << (SET - 46)) | (1L << (WITH - 46)))) != 0) || _la==DECLARE) {
28137 				{
28138 				{
28139 				setState(3985);
28140 				validStatement();
28141 				}
28142 				}
28143 				setState(3990);
28144 				_errHandler.sync(this);
28145 				_la = _input.LA(1);
28146 			}
28147 			}
28148 		}
28149 		catch (RecognitionException re) {
28150 			_localctx.exception = re;
28151 			_errHandler.reportError(this, re);
28152 			_errHandler.recover(this, re);
28153 		}
28154 		finally {
28155 			exitRule();
28156 		}
28157 		return _localctx;
28158 	}
28159 
28160 	public static class FunctionOptionContext extends ParserRuleContext {
28161 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
28162 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
28163 		public TerminalNode RETURNS() { return getToken(SQLServerStatementParser.RETURNS, 0); }
28164 		public List<TerminalNode> NULL() { return getTokens(SQLServerStatementParser.NULL); }
28165 		public TerminalNode NULL(int i) {
28166 			return getToken(SQLServerStatementParser.NULL, i);
28167 		}
28168 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
28169 		public TerminalNode INPUT() { return getToken(SQLServerStatementParser.INPUT, 0); }
28170 		public TerminalNode CALLED() { return getToken(SQLServerStatementParser.CALLED, 0); }
28171 		public ExecuteAsClauseContext executeAsClause() {
28172 			return getRuleContext(ExecuteAsClauseContext.class,0);
28173 		}
28174 		public TerminalNode INLINE() { return getToken(SQLServerStatementParser.INLINE, 0); }
28175 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
28176 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
28177 		public FunctionOptionContext(ParserRuleContext parent, int invokingState) {
28178 			super(parent, invokingState);
28179 		}
28180 		@Override public int getRuleIndex() { return RULE_functionOption; }
28181 		@Override
28182 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28183 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFunctionOption(this);
28184 			else return visitor.visitChildren(this);
28185 		}
28186 	}
28187 
28188 	public final FunctionOptionContext functionOption() throws RecognitionException {
28189 		FunctionOptionContext _localctx = new FunctionOptionContext(_ctx, getState());
28190 		enterRule(_localctx, 576, RULE_functionOption);
28191 		int _la;
28192 		try {
28193 			setState(4016);
28194 			_errHandler.sync(this);
28195 			switch ( getInterpreter().adaptivePredict(_input,413,_ctx) ) {
28196 			case 1:
28197 				enterOuterAlt(_localctx, 1);
28198 				{
28199 				setState(3992);
28200 				_errHandler.sync(this);
28201 				_la = _input.LA(1);
28202 				if (_la==ENCRYPTION) {
28203 					{
28204 					setState(3991);
28205 					match(ENCRYPTION);
28206 					}
28207 				}
28208 
28209 				}
28210 				break;
28211 			case 2:
28212 				enterOuterAlt(_localctx, 2);
28213 				{
28214 				setState(3995);
28215 				_errHandler.sync(this);
28216 				_la = _input.LA(1);
28217 				if (_la==SCHEMABINDING) {
28218 					{
28219 					setState(3994);
28220 					match(SCHEMABINDING);
28221 					}
28222 				}
28223 
28224 				}
28225 				break;
28226 			case 3:
28227 				enterOuterAlt(_localctx, 3);
28228 				{
28229 				setState(4006);
28230 				_errHandler.sync(this);
28231 				switch (_input.LA(1)) {
28232 				case RETURNS:
28233 					{
28234 					setState(3997);
28235 					match(RETURNS);
28236 					setState(3998);
28237 					match(NULL);
28238 					setState(3999);
28239 					match(ON);
28240 					setState(4000);
28241 					match(NULL);
28242 					setState(4001);
28243 					match(INPUT);
28244 					}
28245 					break;
28246 				case CALLED:
28247 					{
28248 					setState(4002);
28249 					match(CALLED);
28250 					setState(4003);
28251 					match(ON);
28252 					setState(4004);
28253 					match(NULL);
28254 					setState(4005);
28255 					match(INPUT);
28256 					}
28257 					break;
28258 				case COMMA_:
28259 				case AS:
28260 				case BEGIN:
28261 				case RETURN:
28262 					break;
28263 				default:
28264 					break;
28265 				}
28266 				}
28267 				break;
28268 			case 4:
28269 				enterOuterAlt(_localctx, 4);
28270 				{
28271 				setState(4009);
28272 				_errHandler.sync(this);
28273 				_la = _input.LA(1);
28274 				if (_la==EXECUTE || _la==EXEC) {
28275 					{
28276 					setState(4008);
28277 					executeAsClause();
28278 					}
28279 				}
28280 
28281 				}
28282 				break;
28283 			case 5:
28284 				enterOuterAlt(_localctx, 5);
28285 				{
28286 				setState(4014);
28287 				_errHandler.sync(this);
28288 				_la = _input.LA(1);
28289 				if (_la==INLINE) {
28290 					{
28291 					setState(4011);
28292 					match(INLINE);
28293 					setState(4012);
28294 					match(EQ_);
28295 					setState(4013);
28296 					_la = _input.LA(1);
28297 					if ( !(_la==ON || _la==OFF) ) {
28298 					_errHandler.recoverInline(this);
28299 					}
28300 					else {
28301 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
28302 						_errHandler.reportMatch(this);
28303 						consume();
28304 					}
28305 					}
28306 				}
28307 
28308 				}
28309 				break;
28310 			}
28311 		}
28312 		catch (RecognitionException re) {
28313 			_localctx.exception = re;
28314 			_errHandler.reportError(this, re);
28315 			_errHandler.recover(this, re);
28316 		}
28317 		finally {
28318 			exitRule();
28319 		}
28320 		return _localctx;
28321 	}
28322 
28323 	public static class ValidStatementContext extends ParserRuleContext {
28324 		public CreateTableContext createTable() {
28325 			return getRuleContext(CreateTableContext.class,0);
28326 		}
28327 		public AlterTableContext alterTable() {
28328 			return getRuleContext(AlterTableContext.class,0);
28329 		}
28330 		public DropTableContext dropTable() {
28331 			return getRuleContext(DropTableContext.class,0);
28332 		}
28333 		public TruncateTableContext truncateTable() {
28334 			return getRuleContext(TruncateTableContext.class,0);
28335 		}
28336 		public InsertContext insert() {
28337 			return getRuleContext(InsertContext.class,0);
28338 		}
28339 		public UpdateContext update() {
28340 			return getRuleContext(UpdateContext.class,0);
28341 		}
28342 		public DeleteContext delete() {
28343 			return getRuleContext(DeleteContext.class,0);
28344 		}
28345 		public SelectContext select() {
28346 			return getRuleContext(SelectContext.class,0);
28347 		}
28348 		public SetVariableContext setVariable() {
28349 			return getRuleContext(SetVariableContext.class,0);
28350 		}
28351 		public DeclareVariableContext declareVariable() {
28352 			return getRuleContext(DeclareVariableContext.class,0);
28353 		}
28354 		public TerminalNode SEMI_() { return getToken(SQLServerStatementParser.SEMI_, 0); }
28355 		public ValidStatementContext(ParserRuleContext parent, int invokingState) {
28356 			super(parent, invokingState);
28357 		}
28358 		@Override public int getRuleIndex() { return RULE_validStatement; }
28359 		@Override
28360 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28361 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitValidStatement(this);
28362 			else return visitor.visitChildren(this);
28363 		}
28364 	}
28365 
28366 	public final ValidStatementContext validStatement() throws RecognitionException {
28367 		ValidStatementContext _localctx = new ValidStatementContext(_ctx, getState());
28368 		enterRule(_localctx, 578, RULE_validStatement);
28369 		try {
28370 			enterOuterAlt(_localctx, 1);
28371 			{
28372 			setState(4028);
28373 			_errHandler.sync(this);
28374 			switch ( getInterpreter().adaptivePredict(_input,414,_ctx) ) {
28375 			case 1:
28376 				{
28377 				setState(4018);
28378 				createTable();
28379 				}
28380 				break;
28381 			case 2:
28382 				{
28383 				setState(4019);
28384 				alterTable();
28385 				}
28386 				break;
28387 			case 3:
28388 				{
28389 				setState(4020);
28390 				dropTable();
28391 				}
28392 				break;
28393 			case 4:
28394 				{
28395 				setState(4021);
28396 				truncateTable();
28397 				}
28398 				break;
28399 			case 5:
28400 				{
28401 				setState(4022);
28402 				insert();
28403 				}
28404 				break;
28405 			case 6:
28406 				{
28407 				setState(4023);
28408 				update();
28409 				}
28410 				break;
28411 			case 7:
28412 				{
28413 				setState(4024);
28414 				delete();
28415 				}
28416 				break;
28417 			case 8:
28418 				{
28419 				setState(4025);
28420 				select();
28421 				}
28422 				break;
28423 			case 9:
28424 				{
28425 				setState(4026);
28426 				setVariable();
28427 				}
28428 				break;
28429 			case 10:
28430 				{
28431 				setState(4027);
28432 				declareVariable();
28433 				}
28434 				break;
28435 			}
28436 			setState(4031);
28437 			_errHandler.sync(this);
28438 			switch ( getInterpreter().adaptivePredict(_input,415,_ctx) ) {
28439 			case 1:
28440 				{
28441 				setState(4030);
28442 				match(SEMI_);
28443 				}
28444 				break;
28445 			}
28446 			}
28447 		}
28448 		catch (RecognitionException re) {
28449 			_localctx.exception = re;
28450 			_errHandler.reportError(this, re);
28451 			_errHandler.recover(this, re);
28452 		}
28453 		finally {
28454 			exitRule();
28455 		}
28456 		return _localctx;
28457 	}
28458 
28459 	public static class ProcParametersContext extends ParserRuleContext {
28460 		public List<ProcParameterContext> procParameter() {
28461 			return getRuleContexts(ProcParameterContext.class);
28462 		}
28463 		public ProcParameterContext procParameter(int i) {
28464 			return getRuleContext(ProcParameterContext.class,i);
28465 		}
28466 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
28467 		public TerminalNode COMMA_(int i) {
28468 			return getToken(SQLServerStatementParser.COMMA_, i);
28469 		}
28470 		public ProcParametersContext(ParserRuleContext parent, int invokingState) {
28471 			super(parent, invokingState);
28472 		}
28473 		@Override public int getRuleIndex() { return RULE_procParameters; }
28474 		@Override
28475 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28476 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcParameters(this);
28477 			else return visitor.visitChildren(this);
28478 		}
28479 	}
28480 
28481 	public final ProcParametersContext procParameters() throws RecognitionException {
28482 		ProcParametersContext _localctx = new ProcParametersContext(_ctx, getState());
28483 		enterRule(_localctx, 580, RULE_procParameters);
28484 		int _la;
28485 		try {
28486 			enterOuterAlt(_localctx, 1);
28487 			{
28488 			setState(4041);
28489 			_errHandler.sync(this);
28490 			_la = _input.LA(1);
28491 			if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (TRIM - 53)) | (1L << (SUBSTRING - 53)) | (1L << (RIGHT - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (TIMESTAMP - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (YEAR - 118)) | (1L << (QUARTER - 118)) | (1L << (MONTH - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)))) != 0) || ((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (TOP - 248)) | (1L << (ROW - 248)) | (1L << (ROWS - 248)) | (1L << (XOR - 248)) | (1L << (ALWAYS - 248)) | (1L << (USER - 248)) | (1L << (ROLE - 248)) | (1L << (START - 248)) | (1L << (ALGORITHM - 248)) | (1L << (AUTO - 248)) | (1L << (BLOCKERS - 248)) | (1L << (CLUSTERED - 248)) | (1L << (NONCLUSTERED - 248)) | (1L << (COLUMNSTORE - 248)) | (1L << (CONTENT - 248)) | (1L << (YEARS - 248)) | (1L << (MONTHS - 248)) | (1L << (WEEKS - 248)) | (1L << (DAYS - 248)) | (1L << (MINUTES - 248)) | (1L << (DENY - 248)) | (1L << (DETERMINISTIC - 248)) | (1L << (DISTRIBUTION - 248)) | (1L << (DOCUMENT - 248)) | (1L << (DURABILITY - 248)) | (1L << (ENCRYPTED - 248)) | (1L << (FILESTREAM - 248)) | (1L << (FILETABLE - 248)) | (1L << (FILLFACTOR - 248)) | (1L << (FOLLOWING - 248)) | (1L << (HASH - 248)) | (1L << (HEAP - 248)) | (1L << (INBOUND - 248)) | (1L << (OUTBOUND - 248)) | (1L << (UNBOUNDED - 248)) | (1L << (INFINITE - 248)) | (1L << (LOGIN - 248)) | (1L << (MASKED - 248)) | (1L << (MAXDOP - 248)) | (1L << (MOVE - 248)) | (1L << (NOCHECK - 248)) | (1L << (OBJECT - 248)) | (1L << (ONLINE - 248)) | (1L << (OVER - 248)) | (1L << (PAGE - 248)) | (1L << (PAUSED - 248)) | (1L << (PERIOD - 248)) | (1L << (PERSISTED - 248)) | (1L << (PRECEDING - 248)))) != 0) || ((((_la - 312)) & ~0x3f) == 0 && ((1L << (_la - 312)) & ((1L << (RANDOMIZED - 312)) | (1L << (RANGE - 312)) | (1L << (REBUILD - 312)) | (1L << (REPLICATE - 312)) | (1L << (REPLICATION - 312)) | (1L << (RESUMABLE - 312)) | (1L << (ROWGUIDCOL - 312)) | (1L << (SAVE - 312)) | (1L << (SELF - 312)) | (1L << (SPARSE - 312)) | (1L << (SWITCH - 312)) | (1L << (TRAN - 312)) | (1L << (TRANCOUNT - 312)) | (1L << (CONTROL - 312)) | (1L << (CONCAT - 312)) | (1L << (TAKE - 312)) | (1L << (OWNERSHIP - 312)) | (1L << (DEFINITION - 312)) | (1L << (APPLICATION - 312)) | (1L << (ASSEMBLY - 312)) | (1L << (SYMMETRIC - 312)) | (1L << (ASYMMETRIC - 312)) | (1L << (SERVER - 312)) | (1L << (RECEIVE - 312)) | (1L << (CHANGE - 312)) | (1L << (TRACE - 312)) | (1L << (TRACKING - 312)) | (1L << (RESOURCES - 312)) | (1L << (SETTINGS - 312)) | (1L << (STATE - 312)) | (1L << (AVAILABILITY - 312)) | (1L << (CREDENTIAL - 312)) | (1L << (ENDPOINT - 312)) | (1L << (EVENT - 312)) | (1L << (NOTIFICATION - 312)) | (1L << (LINKED - 312)) | (1L << (AUDIT - 312)) | (1L << (DDL - 312)) | (1L << (XML - 312)) | (1L << (IMPERSONATE - 312)) | (1L << (SECURABLES - 312)) | (1L << (AUTHENTICATE - 312)) | (1L << (EXTERNAL - 312)) | (1L << (ACCESS - 312)) | (1L << (ADMINISTER - 312)) | (1L << (BULK - 312)) | (1L << (OPERATIONS - 312)) | (1L << (UNSAFE - 312)) | (1L << (SHUTDOWN - 312)) | (1L << (SCOPED - 312)) | (1L << (CONFIGURATION - 312)) | (1L << (DATASPACE - 312)) | (1L << (SERVICE - 312)) | (1L << (CERTIFICATE - 312)) | (1L << (CONTRACT - 312)) | (1L << (ENCRYPTION - 312)) | (1L << (MASTER - 312)))) != 0) || ((((_la - 376)) & ~0x3f) == 0 && ((1L << (_la - 376)) & ((1L << (DATA - 376)) | (1L << (SOURCE - 376)) | (1L << (FILE - 376)) | (1L << (FORMAT - 376)) | (1L << (LIBRARY - 376)) | (1L << (FULLTEXT - 376)) | (1L << (MASK - 376)) | (1L << (UNMASK - 376)) | (1L << (MESSAGE - 376)) | (1L << (REMOTE - 376)) | (1L << (BINDING - 376)) | (1L << (ROUTE - 376)) | (1L << (SECURITY - 376)) | (1L << (POLICY - 376)) | (1L << (AGGREGATE - 376)) | (1L << (QUEUE - 376)) | (1L << (RULE - 376)) | (1L << (SYNONYM - 376)) | (1L << (COLLECTION - 376)) | (1L << (SCRIPT - 376)) | (1L << (KILL - 376)) | (1L << (BACKUP - 376)) | (1L << (LOG - 376)) | (1L << (SHOWPLAN - 376)) | (1L << (SUBSCRIBE - 376)) | (1L << (QUERY - 376)) | (1L << (NOTIFICATIONS - 376)) | (1L << (CHECKPOINT - 376)) | (1L << (SEQUENCE - 376)) | (1L << (ABORT_AFTER_WAIT - 376)) | (1L << (ALLOW_PAGE_LOCKS - 376)) | (1L << (ALLOW_ROW_LOCKS - 376)) | (1L << (ALL_SPARSE_COLUMNS - 376)) | (1L << (BUCKET_COUNT - 376)) | (1L << (COLUMNSTORE_ARCHIVE - 376)) | (1L << (COLUMN_ENCRYPTION_KEY - 376)) | (1L << (COLUMN_SET - 376)) | (1L << (COMPRESSION_DELAY - 376)) | (1L << (DATABASE_DEAULT - 376)) | (1L << (DATA_COMPRESSION - 376)) | (1L << (DATA_CONSISTENCY_CHECK - 376)) | (1L << (ENCRYPTION_TYPE - 376)) | (1L << (SYSTEM_TIME - 376)) | (1L << (SYSTEM_VERSIONING - 376)) | (1L << (TEXTIMAGE_ON - 376)) | (1L << (WAIT_AT_LOW_PRIORITY - 376)) | (1L << (STATISTICS_INCREMENTAL - 376)) | (1L << (STATISTICS_NORECOMPUTE - 376)) | (1L << (ROUND_ROBIN - 376)) | (1L << (SCHEMA_AND_DATA - 376)) | (1L << (SCHEMA_ONLY - 376)) | (1L << (SORT_IN_TEMPDB - 376)) | (1L << (IGNORE_DUP_KEY - 376)) | (1L << (IMPLICIT_TRANSACTIONS - 376)) | (1L << (MAX_DURATION - 376)) | (1L << (MEMORY_OPTIMIZED - 376)) | (1L << (MIGRATION_STATE - 376)) | (1L << (PAD_INDEX - 376)) | (1L << (REMOTE_DATA_ARCHIVE - 376)) | (1L << (FILESTREAM_ON - 376)) | (1L << (FILETABLE_COLLATE_FILENAME - 376)) | (1L << (FILETABLE_DIRECTORY - 376)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 376)))) != 0) || ((((_la - 440)) & ~0x3f) == 0 && ((1L << (_la - 440)) & ((1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 440)) | (1L << (FILTER_PREDICATE - 440)) | (1L << (HISTORY_RETENTION_PERIOD - 440)) | (1L << (HISTORY_TABLE - 440)) | (1L << (LOCK_ESCALATION - 440)) | (1L << (DROP_EXISTING - 440)) | (1L << (ROW_NUMBER - 440)) | (1L << (FIRST - 440)) | (1L << (DATETIME2 - 440)) | (1L << (OUTPUT - 440)) | (1L << (INSERTED - 440)) | (1L << (DELETED - 440)))) != 0) || ((((_la - 505)) & ~0x3f) == 0 && ((1L << (_la - 505)) & ((1L << (FILENAME - 505)) | (1L << (SIZE - 505)) | (1L << (MAXSIZE - 505)) | (1L << (FILEGROWTH - 505)) | (1L << (UNLIMITED - 505)) | (1L << (KB - 505)) | (1L << (MB - 505)) | (1L << (GB - 505)) | (1L << (TB - 505)) | (1L << (CONTAINS - 505)) | (1L << (MEMORY_OPTIMIZED_DATA - 505)) | (1L << (FILEGROUP - 505)) | (1L << (NON_TRANSACTED_ACCESS - 505)) | (1L << (DB_CHAINING - 505)) | (1L << (TRUSTWORTHY - 505)) | (1L << (FORWARD_ONLY - 505)) | (1L << (KEYSET - 505)) | (1L << (FAST_FORWARD - 505)) | (1L << (SCROLL_LOCKS - 505)) | (1L << (OPTIMISTIC - 505)) | (1L << (TYPE_WARNING - 505)) | (1L << (SCHEMABINDING - 505)) | (1L << (CALLER - 505)) | (1L << (INPUT - 505)) | (1L << (OWNER - 505)) | (1L << (SNAPSHOT - 505)) | (1L << (REPEATABLE - 505)) | (1L << (SERIALIZABLE - 505)) | (1L << (NATIVE_COMPILATION - 505)) | (1L << (VIEW_METADATA - 505)) | (1L << (INSTEAD - 505)) | (1L << (APPEND - 505)) | (1L << (INCREMENT - 505)) | (1L << (CACHE - 505)) | (1L << (MINVALUE - 505)) | (1L << (MAXVALUE - 505)) | (1L << (RESTART - 505)) | (1L << (LOB_COMPACTION - 505)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 505)) | (1L << (REORGANIZE - 505)) | (1L << (RESUME - 505)) | (1L << (PAUSE - 505)) | (1L << (ABORT - 505)))) != 0) || ((((_la - 571)) & ~0x3f) == 0 && ((1L << (_la - 571)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 571)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 571)) | (1L << (IMMEDIATE - 571)) | (1L << (NO_WAIT - 571)) | (1L << (TARGET_RECOVERY_TIME - 571)) | (1L << (SECONDS - 571)) | (1L << (HONOR_BROKER_PRIORITY - 571)) | (1L << (ERROR_BROKER_CONVERSATIONS - 571)) | (1L << (NEW_BROKER - 571)) | (1L << (DISABLE_BROKER - 571)) | (1L << (ENABLE_BROKER - 571)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 571)) | (1L << (READ_COMMITTED_SNAPSHOT - 571)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 571)) | (1L << (RECURSIVE_TRIGGERS - 571)) | (1L << (QUOTED_IDENTIFIER - 571)) | (1L << (NUMERIC_ROUNDABORT - 571)) | (1L << (CONCAT_NULL_YIELDS_NULL - 571)) | (1L << (COMPATIBILITY_LEVEL - 571)) | (1L << (ARITHABORT - 571)) | (1L << (ANSI_WARNINGS - 571)) | (1L << (ANSI_PADDING - 571)) | (1L << (ANSI_NULLS - 571)) | (1L << (ANSI_NULL_DEFAULT - 571)) | (1L << (PAGE_VERIFY - 571)) | (1L << (CHECKSUM - 571)) | (1L << (TORN_PAGE_DETECTION - 571)) | (1L << (BULK_LOGGED - 571)) | (1L << (RECOVERY - 571)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 571)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 571)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 571)) | (1L << (EXECUTION_COUNT - 571)) | (1L << (QUERY_CAPTURE_POLICY - 571)) | (1L << (WAIT_STATS_CAPTURE_MODE - 571)) | (1L << (MAX_PLANS_PER_QUERY - 571)) | (1L << (QUERY_CAPTURE_MODE - 571)) | (1L << (SIZE_BASED_CLEANUP_MODE - 571)) | (1L << (INTERVAL_LENGTH_MINUTES - 571)) | (1L << (MAX_STORAGE_SIZE_MB - 571)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 571)) | (1L << (CLEANUP_POLICY - 571)) | (1L << (CUSTOM - 571)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 571)) | (1L << (OPERATION_MODE - 571)) | (1L << (QUERY_STORE - 571)) | (1L << (CURSOR_DEFAULT - 571)) | (1L << (GLOBAL - 571)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 571)) | (1L << (HOURS - 571)) | (1L << (CHANGE_RETENTION - 571)) | (1L << (AUTO_CLEANUP - 571)) | (1L << (CHANGE_TRACKING - 571)) | (1L << (AUTOMATIC_TUNING - 571)) | (1L << (FORCE_LAST_GOOD_PLAN - 571)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 571)) | (1L << (AUTO_UPDATE_STATISTICS - 571)) | (1L << (AUTO_SHRINK - 571)) | (1L << (AUTO_CREATE_STATISTICS - 571)) | (1L << (INCREMENTAL - 571)) | (1L << (AUTO_CLOSE - 571)) | (1L << (DATA_RETENTION - 571)) | (1L << (TEMPORAL_HISTORY_RETENTION - 571)) | (1L << (EDITION - 571)))) != 0) || ((((_la - 635)) & ~0x3f) == 0 && ((1L << (_la - 635)) & ((1L << (MIXED_PAGE_ALLOCATION - 635)) | (1L << (DISABLED - 635)) | (1L << (ALLOWED - 635)) | (1L << (HADR - 635)) | (1L << (MULTI_USER - 635)) | (1L << (RESTRICTED_USER - 635)) | (1L << (SINGLE_USER - 635)) | (1L << (OFFLINE - 635)) | (1L << (EMERGENCY - 635)) | (1L << (SUSPEND - 635)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 635)) | (1L << (ELASTIC_POOL - 635)) | (1L << (SERVICE_OBJECTIVE - 635)) | (1L << (DATABASE_NAME - 635)) | (1L << (ALLOW_CONNECTIONS - 635)) | (1L << (GEO - 635)) | (1L << (NAMED - 635)) | (1L << (DATEFIRST - 635)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 635)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 635)) | (1L << (SECONDARY - 635)) | (1L << (FAILOVER - 635)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 635)) | (1L << (DEFAULT_LANGUAGE - 635)) | (1L << (INLINE - 635)) | (1L << (NESTED_TRIGGERS - 635)) | (1L << (TRANSFORM_NOISE_WORDS - 635)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 635)) | (1L << (PERSISTENT_LOG_BUFFER - 635)) | (1L << (DIRECTORY_NAME - 635)) | (1L << (DATEFORMAT - 635)) | (1L << (DELAYED_DURABILITY - 635)) | (1L << (AUTHORIZATION - 635)) | (1L << (TRANSFER - 635)) | (1L << (PROVIDER - 635)) | (1L << (SID - 635)) | (1L << (SEARCH - 635)) | (1L << (MEMBER - 635)))) != 0) || ((((_la - 707)) & ~0x3f) == 0 && ((1L << (_la - 707)) & ((1L << (JSON - 707)) | (1L << (IDENTIFIER_ - 707)) | (1L << (DELIMITED_IDENTIFIER_ - 707)))) != 0)) {
28492 				{
28493 				setState(4033);
28494 				procParameter();
28495 				setState(4038);
28496 				_errHandler.sync(this);
28497 				_la = _input.LA(1);
28498 				while (_la==COMMA_) {
28499 					{
28500 					{
28501 					setState(4034);
28502 					match(COMMA_);
28503 					setState(4035);
28504 					procParameter();
28505 					}
28506 					}
28507 					setState(4040);
28508 					_errHandler.sync(this);
28509 					_la = _input.LA(1);
28510 				}
28511 				}
28512 			}
28513 
28514 			}
28515 		}
28516 		catch (RecognitionException re) {
28517 			_localctx.exception = re;
28518 			_errHandler.reportError(this, re);
28519 			_errHandler.recover(this, re);
28520 		}
28521 		finally {
28522 			exitRule();
28523 		}
28524 		return _localctx;
28525 	}
28526 
28527 	public static class ProcParameterContext extends ParserRuleContext {
28528 		public VariableContext variable() {
28529 			return getRuleContext(VariableContext.class,0);
28530 		}
28531 		public TerminalNode VARYING() { return getToken(SQLServerStatementParser.VARYING, 0); }
28532 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
28533 		public LiteralsContext literals() {
28534 			return getRuleContext(LiteralsContext.class,0);
28535 		}
28536 		public TerminalNode OUT() { return getToken(SQLServerStatementParser.OUT, 0); }
28537 		public TerminalNode OUTPUT() { return getToken(SQLServerStatementParser.OUTPUT, 0); }
28538 		public TerminalNode READONLY() { return getToken(SQLServerStatementParser.READONLY, 0); }
28539 		public ProcParameterContext(ParserRuleContext parent, int invokingState) {
28540 			super(parent, invokingState);
28541 		}
28542 		@Override public int getRuleIndex() { return RULE_procParameter; }
28543 		@Override
28544 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28545 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcParameter(this);
28546 			else return visitor.visitChildren(this);
28547 		}
28548 	}
28549 
28550 	public final ProcParameterContext procParameter() throws RecognitionException {
28551 		ProcParameterContext _localctx = new ProcParameterContext(_ctx, getState());
28552 		enterRule(_localctx, 582, RULE_procParameter);
28553 		int _la;
28554 		try {
28555 			enterOuterAlt(_localctx, 1);
28556 			{
28557 			setState(4043);
28558 			variable();
28559 			setState(4045);
28560 			_errHandler.sync(this);
28561 			_la = _input.LA(1);
28562 			if (_la==VARYING) {
28563 				{
28564 				setState(4044);
28565 				match(VARYING);
28566 				}
28567 			}
28568 
28569 			setState(4049);
28570 			_errHandler.sync(this);
28571 			_la = _input.LA(1);
28572 			if (_la==EQ_) {
28573 				{
28574 				setState(4047);
28575 				match(EQ_);
28576 				setState(4048);
28577 				literals();
28578 				}
28579 			}
28580 
28581 			setState(4052);
28582 			_errHandler.sync(this);
28583 			_la = _input.LA(1);
28584 			if (_la==READONLY || _la==OUTPUT || _la==OUT) {
28585 				{
28586 				setState(4051);
28587 				_la = _input.LA(1);
28588 				if ( !(_la==READONLY || _la==OUTPUT || _la==OUT) ) {
28589 				_errHandler.recoverInline(this);
28590 				}
28591 				else {
28592 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
28593 					_errHandler.reportMatch(this);
28594 					consume();
28595 				}
28596 				}
28597 			}
28598 
28599 			}
28600 		}
28601 		catch (RecognitionException re) {
28602 			_localctx.exception = re;
28603 			_errHandler.reportError(this, re);
28604 			_errHandler.recover(this, re);
28605 		}
28606 		finally {
28607 			exitRule();
28608 		}
28609 		return _localctx;
28610 	}
28611 
28612 	public static class CreateOrAlterProcClauseContext extends ParserRuleContext {
28613 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
28614 		public ProcAsClauseContext procAsClause() {
28615 			return getRuleContext(ProcAsClauseContext.class,0);
28616 		}
28617 		public WithCreateProcOptionContext withCreateProcOption() {
28618 			return getRuleContext(WithCreateProcOptionContext.class,0);
28619 		}
28620 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
28621 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
28622 		public CreateOrAlterProcClauseContext(ParserRuleContext parent, int invokingState) {
28623 			super(parent, invokingState);
28624 		}
28625 		@Override public int getRuleIndex() { return RULE_createOrAlterProcClause; }
28626 		@Override
28627 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28628 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateOrAlterProcClause(this);
28629 			else return visitor.visitChildren(this);
28630 		}
28631 	}
28632 
28633 	public final CreateOrAlterProcClauseContext createOrAlterProcClause() throws RecognitionException {
28634 		CreateOrAlterProcClauseContext _localctx = new CreateOrAlterProcClauseContext(_ctx, getState());
28635 		enterRule(_localctx, 584, RULE_createOrAlterProcClause);
28636 		int _la;
28637 		try {
28638 			enterOuterAlt(_localctx, 1);
28639 			{
28640 			setState(4055);
28641 			_errHandler.sync(this);
28642 			_la = _input.LA(1);
28643 			if (_la==WITH) {
28644 				{
28645 				setState(4054);
28646 				withCreateProcOption();
28647 				}
28648 			}
28649 
28650 			setState(4059);
28651 			_errHandler.sync(this);
28652 			_la = _input.LA(1);
28653 			if (_la==FOR) {
28654 				{
28655 				setState(4057);
28656 				match(FOR);
28657 				setState(4058);
28658 				match(REPLICATION);
28659 				}
28660 			}
28661 
28662 			setState(4061);
28663 			match(AS);
28664 			setState(4062);
28665 			procAsClause();
28666 			}
28667 		}
28668 		catch (RecognitionException re) {
28669 			_localctx.exception = re;
28670 			_errHandler.reportError(this, re);
28671 			_errHandler.recover(this, re);
28672 		}
28673 		finally {
28674 			exitRule();
28675 		}
28676 		return _localctx;
28677 	}
28678 
28679 	public static class WithCreateProcOptionContext extends ParserRuleContext {
28680 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
28681 		public List<ProcOptionContext> procOption() {
28682 			return getRuleContexts(ProcOptionContext.class);
28683 		}
28684 		public ProcOptionContext procOption(int i) {
28685 			return getRuleContext(ProcOptionContext.class,i);
28686 		}
28687 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
28688 		public TerminalNode COMMA_(int i) {
28689 			return getToken(SQLServerStatementParser.COMMA_, i);
28690 		}
28691 		public WithCreateProcOptionContext(ParserRuleContext parent, int invokingState) {
28692 			super(parent, invokingState);
28693 		}
28694 		@Override public int getRuleIndex() { return RULE_withCreateProcOption; }
28695 		@Override
28696 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28697 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithCreateProcOption(this);
28698 			else return visitor.visitChildren(this);
28699 		}
28700 	}
28701 
28702 	public final WithCreateProcOptionContext withCreateProcOption() throws RecognitionException {
28703 		WithCreateProcOptionContext _localctx = new WithCreateProcOptionContext(_ctx, getState());
28704 		enterRule(_localctx, 586, RULE_withCreateProcOption);
28705 		int _la;
28706 		try {
28707 			enterOuterAlt(_localctx, 1);
28708 			{
28709 			setState(4064);
28710 			match(WITH);
28711 			setState(4073);
28712 			_errHandler.sync(this);
28713 			_la = _input.LA(1);
28714 			if (((((_la - 326)) & ~0x3f) == 0 && ((1L << (_la - 326)) & ((1L << (EXECUTE - 326)) | (1L << (EXEC - 326)) | (1L << (ENCRYPTION - 326)))) != 0) || ((((_la - 497)) & ~0x3f) == 0 && ((1L << (_la - 497)) & ((1L << (RECOMPILE - 497)) | (1L << (SCHEMABINDING - 497)) | (1L << (NATIVE_COMPILATION - 497)))) != 0)) {
28715 				{
28716 				setState(4065);
28717 				procOption();
28718 				setState(4070);
28719 				_errHandler.sync(this);
28720 				_la = _input.LA(1);
28721 				while (_la==COMMA_) {
28722 					{
28723 					{
28724 					setState(4066);
28725 					match(COMMA_);
28726 					setState(4067);
28727 					procOption();
28728 					}
28729 					}
28730 					setState(4072);
28731 					_errHandler.sync(this);
28732 					_la = _input.LA(1);
28733 				}
28734 				}
28735 			}
28736 
28737 			}
28738 		}
28739 		catch (RecognitionException re) {
28740 			_localctx.exception = re;
28741 			_errHandler.reportError(this, re);
28742 			_errHandler.recover(this, re);
28743 		}
28744 		finally {
28745 			exitRule();
28746 		}
28747 		return _localctx;
28748 	}
28749 
28750 	public static class ProcOptionContext extends ParserRuleContext {
28751 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
28752 		public TerminalNode RECOMPILE() { return getToken(SQLServerStatementParser.RECOMPILE, 0); }
28753 		public ExecuteAsClauseContext executeAsClause() {
28754 			return getRuleContext(ExecuteAsClauseContext.class,0);
28755 		}
28756 		public TerminalNode NATIVE_COMPILATION() { return getToken(SQLServerStatementParser.NATIVE_COMPILATION, 0); }
28757 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
28758 		public ProcOptionContext(ParserRuleContext parent, int invokingState) {
28759 			super(parent, invokingState);
28760 		}
28761 		@Override public int getRuleIndex() { return RULE_procOption; }
28762 		@Override
28763 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28764 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcOption(this);
28765 			else return visitor.visitChildren(this);
28766 		}
28767 	}
28768 
28769 	public final ProcOptionContext procOption() throws RecognitionException {
28770 		ProcOptionContext _localctx = new ProcOptionContext(_ctx, getState());
28771 		enterRule(_localctx, 588, RULE_procOption);
28772 		try {
28773 			setState(4080);
28774 			_errHandler.sync(this);
28775 			switch (_input.LA(1)) {
28776 			case ENCRYPTION:
28777 				enterOuterAlt(_localctx, 1);
28778 				{
28779 				setState(4075);
28780 				match(ENCRYPTION);
28781 				}
28782 				break;
28783 			case RECOMPILE:
28784 				enterOuterAlt(_localctx, 2);
28785 				{
28786 				setState(4076);
28787 				match(RECOMPILE);
28788 				}
28789 				break;
28790 			case EXECUTE:
28791 			case EXEC:
28792 				enterOuterAlt(_localctx, 3);
28793 				{
28794 				setState(4077);
28795 				executeAsClause();
28796 				}
28797 				break;
28798 			case NATIVE_COMPILATION:
28799 				enterOuterAlt(_localctx, 4);
28800 				{
28801 				setState(4078);
28802 				match(NATIVE_COMPILATION);
28803 				}
28804 				break;
28805 			case SCHEMABINDING:
28806 				enterOuterAlt(_localctx, 5);
28807 				{
28808 				setState(4079);
28809 				match(SCHEMABINDING);
28810 				}
28811 				break;
28812 			default:
28813 				throw new NoViableAltException(this);
28814 			}
28815 		}
28816 		catch (RecognitionException re) {
28817 			_localctx.exception = re;
28818 			_errHandler.reportError(this, re);
28819 			_errHandler.recover(this, re);
28820 		}
28821 		finally {
28822 			exitRule();
28823 		}
28824 		return _localctx;
28825 	}
28826 
28827 	public static class ProcAsClauseContext extends ParserRuleContext {
28828 		public CompoundStatementContext compoundStatement() {
28829 			return getRuleContext(CompoundStatementContext.class,0);
28830 		}
28831 		public TerminalNode BEGIN() { return getToken(SQLServerStatementParser.BEGIN, 0); }
28832 		public TerminalNode END() { return getToken(SQLServerStatementParser.END, 0); }
28833 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
28834 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
28835 		public NameContext name() {
28836 			return getRuleContext(NameContext.class,0);
28837 		}
28838 		public List<OwnerContext> owner() {
28839 			return getRuleContexts(OwnerContext.class);
28840 		}
28841 		public OwnerContext owner(int i) {
28842 			return getRuleContext(OwnerContext.class,i);
28843 		}
28844 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
28845 		public TerminalNode DOT_(int i) {
28846 			return getToken(SQLServerStatementParser.DOT_, i);
28847 		}
28848 		public TerminalNode ATOMIC() { return getToken(SQLServerStatementParser.ATOMIC, 0); }
28849 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
28850 		public List<ProcSetOptionContext> procSetOption() {
28851 			return getRuleContexts(ProcSetOptionContext.class);
28852 		}
28853 		public ProcSetOptionContext procSetOption(int i) {
28854 			return getRuleContext(ProcSetOptionContext.class,i);
28855 		}
28856 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
28857 		public TerminalNode COMMA_(int i) {
28858 			return getToken(SQLServerStatementParser.COMMA_, i);
28859 		}
28860 		public ProcAsClauseContext(ParserRuleContext parent, int invokingState) {
28861 			super(parent, invokingState);
28862 		}
28863 		@Override public int getRuleIndex() { return RULE_procAsClause; }
28864 		@Override
28865 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
28866 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcAsClause(this);
28867 			else return visitor.visitChildren(this);
28868 		}
28869 	}
28870 
28871 	public final ProcAsClauseContext procAsClause() throws RecognitionException {
28872 		ProcAsClauseContext _localctx = new ProcAsClauseContext(_ctx, getState());
28873 		enterRule(_localctx, 590, RULE_procAsClause);
28874 		int _la;
28875 		try {
28876 			setState(4117);
28877 			_errHandler.sync(this);
28878 			switch ( getInterpreter().adaptivePredict(_input,432,_ctx) ) {
28879 			case 1:
28880 				enterOuterAlt(_localctx, 1);
28881 				{
28882 				setState(4083);
28883 				_errHandler.sync(this);
28884 				_la = _input.LA(1);
28885 				if (_la==BEGIN) {
28886 					{
28887 					setState(4082);
28888 					match(BEGIN);
28889 					}
28890 				}
28891 
28892 				setState(4085);
28893 				compoundStatement();
28894 				setState(4087);
28895 				_errHandler.sync(this);
28896 				_la = _input.LA(1);
28897 				if (_la==END) {
28898 					{
28899 					setState(4086);
28900 					match(END);
28901 					}
28902 				}
28903 
28904 				}
28905 				break;
28906 			case 2:
28907 				enterOuterAlt(_localctx, 2);
28908 				{
28909 				setState(4089);
28910 				match(EXTERNAL);
28911 				setState(4090);
28912 				match(NAME);
28913 				setState(4094);
28914 				_errHandler.sync(this);
28915 				switch ( getInterpreter().adaptivePredict(_input,428,_ctx) ) {
28916 				case 1:
28917 					{
28918 					setState(4091);
28919 					owner();
28920 					setState(4092);
28921 					match(DOT_);
28922 					}
28923 					break;
28924 				}
28925 				setState(4099);
28926 				_errHandler.sync(this);
28927 				switch ( getInterpreter().adaptivePredict(_input,429,_ctx) ) {
28928 				case 1:
28929 					{
28930 					setState(4096);
28931 					owner();
28932 					setState(4097);
28933 					match(DOT_);
28934 					}
28935 					break;
28936 				}
28937 				setState(4101);
28938 				name();
28939 				}
28940 				break;
28941 			case 3:
28942 				enterOuterAlt(_localctx, 3);
28943 				{
28944 				setState(4102);
28945 				match(BEGIN);
28946 				setState(4103);
28947 				match(ATOMIC);
28948 				setState(4104);
28949 				match(WITH);
28950 				setState(4105);
28951 				procSetOption();
28952 				setState(4110);
28953 				_errHandler.sync(this);
28954 				_la = _input.LA(1);
28955 				while (_la==COMMA_) {
28956 					{
28957 					{
28958 					setState(4106);
28959 					match(COMMA_);
28960 					setState(4107);
28961 					procSetOption();
28962 					}
28963 					}
28964 					setState(4112);
28965 					_errHandler.sync(this);
28966 					_la = _input.LA(1);
28967 				}
28968 				setState(4113);
28969 				compoundStatement();
28970 				setState(4115);
28971 				_errHandler.sync(this);
28972 				_la = _input.LA(1);
28973 				if (_la==END) {
28974 					{
28975 					setState(4114);
28976 					match(END);
28977 					}
28978 				}
28979 
28980 				}
28981 				break;
28982 			}
28983 		}
28984 		catch (RecognitionException re) {
28985 			_localctx.exception = re;
28986 			_errHandler.reportError(this, re);
28987 			_errHandler.recover(this, re);
28988 		}
28989 		finally {
28990 			exitRule();
28991 		}
28992 		return _localctx;
28993 	}
28994 
28995 	public static class ProcSetOptionContext extends ParserRuleContext {
28996 		public TerminalNode LANGUAGE() { return getToken(SQLServerStatementParser.LANGUAGE, 0); }
28997 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
28998 		public StringLiteralsContext stringLiterals() {
28999 			return getRuleContext(StringLiteralsContext.class,0);
29000 		}
29001 		public TerminalNode TRANSACTION() { return getToken(SQLServerStatementParser.TRANSACTION, 0); }
29002 		public TerminalNode ISOLATION() { return getToken(SQLServerStatementParser.ISOLATION, 0); }
29003 		public TerminalNode LEVEL() { return getToken(SQLServerStatementParser.LEVEL, 0); }
29004 		public TerminalNode SNAPSHOT() { return getToken(SQLServerStatementParser.SNAPSHOT, 0); }
29005 		public TerminalNode REPEATABLE() { return getToken(SQLServerStatementParser.REPEATABLE, 0); }
29006 		public TerminalNode READ() { return getToken(SQLServerStatementParser.READ, 0); }
29007 		public TerminalNode SERIALIZABLE() { return getToken(SQLServerStatementParser.SERIALIZABLE, 0); }
29008 		public TerminalNode DATEFIRST() { return getToken(SQLServerStatementParser.DATEFIRST, 0); }
29009 		public NumberLiteralsContext numberLiterals() {
29010 			return getRuleContext(NumberLiteralsContext.class,0);
29011 		}
29012 		public TerminalNode DATEFORMAT() { return getToken(SQLServerStatementParser.DATEFORMAT, 0); }
29013 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
29014 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
29015 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
29016 		public ProcSetOptionContext(ParserRuleContext parent, int invokingState) {
29017 			super(parent, invokingState);
29018 		}
29019 		@Override public int getRuleIndex() { return RULE_procSetOption; }
29020 		@Override
29021 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29022 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProcSetOption(this);
29023 			else return visitor.visitChildren(this);
29024 		}
29025 	}
29026 
29027 	public final ProcSetOptionContext procSetOption() throws RecognitionException {
29028 		ProcSetOptionContext _localctx = new ProcSetOptionContext(_ctx, getState());
29029 		enterRule(_localctx, 592, RULE_procSetOption);
29030 		int _la;
29031 		try {
29032 			setState(4141);
29033 			_errHandler.sync(this);
29034 			switch (_input.LA(1)) {
29035 			case LANGUAGE:
29036 				enterOuterAlt(_localctx, 1);
29037 				{
29038 				setState(4119);
29039 				match(LANGUAGE);
29040 				setState(4120);
29041 				match(EQ_);
29042 				setState(4121);
29043 				stringLiterals();
29044 				}
29045 				break;
29046 			case TRANSACTION:
29047 				enterOuterAlt(_localctx, 2);
29048 				{
29049 				setState(4122);
29050 				match(TRANSACTION);
29051 				setState(4123);
29052 				match(ISOLATION);
29053 				setState(4124);
29054 				match(LEVEL);
29055 				setState(4125);
29056 				match(EQ_);
29057 				setState(4130);
29058 				_errHandler.sync(this);
29059 				switch (_input.LA(1)) {
29060 				case SNAPSHOT:
29061 					{
29062 					setState(4126);
29063 					match(SNAPSHOT);
29064 					}
29065 					break;
29066 				case REPEATABLE:
29067 					{
29068 					setState(4127);
29069 					match(REPEATABLE);
29070 					setState(4128);
29071 					match(READ);
29072 					}
29073 					break;
29074 				case SERIALIZABLE:
29075 					{
29076 					setState(4129);
29077 					match(SERIALIZABLE);
29078 					}
29079 					break;
29080 				default:
29081 					throw new NoViableAltException(this);
29082 				}
29083 				}
29084 				break;
29085 			case DATEFIRST:
29086 				enterOuterAlt(_localctx, 3);
29087 				{
29088 				setState(4132);
29089 				match(DATEFIRST);
29090 				setState(4133);
29091 				match(EQ_);
29092 				setState(4134);
29093 				numberLiterals();
29094 				}
29095 				break;
29096 			case DATEFORMAT:
29097 				enterOuterAlt(_localctx, 4);
29098 				{
29099 				setState(4135);
29100 				match(DATEFORMAT);
29101 				setState(4136);
29102 				match(EQ_);
29103 				setState(4137);
29104 				stringLiterals();
29105 				}
29106 				break;
29107 			case DELAYED_DURABILITY:
29108 				enterOuterAlt(_localctx, 5);
29109 				{
29110 				setState(4138);
29111 				match(DELAYED_DURABILITY);
29112 				setState(4139);
29113 				match(EQ_);
29114 				setState(4140);
29115 				_la = _input.LA(1);
29116 				if ( !(_la==ON || _la==OFF) ) {
29117 				_errHandler.recoverInline(this);
29118 				}
29119 				else {
29120 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29121 					_errHandler.reportMatch(this);
29122 					consume();
29123 				}
29124 				}
29125 				break;
29126 			default:
29127 				throw new NoViableAltException(this);
29128 			}
29129 		}
29130 		catch (RecognitionException re) {
29131 			_localctx.exception = re;
29132 			_errHandler.reportError(this, re);
29133 			_errHandler.recover(this, re);
29134 		}
29135 		finally {
29136 			exitRule();
29137 		}
29138 		return _localctx;
29139 	}
29140 
29141 	public static class CreateOrAlterViewClauseContext extends ParserRuleContext {
29142 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
29143 		public SelectContext select() {
29144 			return getRuleContext(SelectContext.class,0);
29145 		}
29146 		public List<TerminalNode> WITH() { return getTokens(SQLServerStatementParser.WITH); }
29147 		public TerminalNode WITH(int i) {
29148 			return getToken(SQLServerStatementParser.WITH, i);
29149 		}
29150 		public List<ViewAttributeContext> viewAttribute() {
29151 			return getRuleContexts(ViewAttributeContext.class);
29152 		}
29153 		public ViewAttributeContext viewAttribute(int i) {
29154 			return getRuleContext(ViewAttributeContext.class,i);
29155 		}
29156 		public WithCommonTableExprContext withCommonTableExpr() {
29157 			return getRuleContext(WithCommonTableExprContext.class,0);
29158 		}
29159 		public TerminalNode CHECK() { return getToken(SQLServerStatementParser.CHECK, 0); }
29160 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
29161 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
29162 		public TerminalNode COMMA_(int i) {
29163 			return getToken(SQLServerStatementParser.COMMA_, i);
29164 		}
29165 		public CreateOrAlterViewClauseContext(ParserRuleContext parent, int invokingState) {
29166 			super(parent, invokingState);
29167 		}
29168 		@Override public int getRuleIndex() { return RULE_createOrAlterViewClause; }
29169 		@Override
29170 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29171 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateOrAlterViewClause(this);
29172 			else return visitor.visitChildren(this);
29173 		}
29174 	}
29175 
29176 	public final CreateOrAlterViewClauseContext createOrAlterViewClause() throws RecognitionException {
29177 		CreateOrAlterViewClauseContext _localctx = new CreateOrAlterViewClauseContext(_ctx, getState());
29178 		enterRule(_localctx, 594, RULE_createOrAlterViewClause);
29179 		int _la;
29180 		try {
29181 			enterOuterAlt(_localctx, 1);
29182 			{
29183 			setState(4152);
29184 			_errHandler.sync(this);
29185 			_la = _input.LA(1);
29186 			if (_la==WITH) {
29187 				{
29188 				setState(4143);
29189 				match(WITH);
29190 				setState(4144);
29191 				viewAttribute();
29192 				setState(4149);
29193 				_errHandler.sync(this);
29194 				_la = _input.LA(1);
29195 				while (_la==COMMA_) {
29196 					{
29197 					{
29198 					setState(4145);
29199 					match(COMMA_);
29200 					setState(4146);
29201 					viewAttribute();
29202 					}
29203 					}
29204 					setState(4151);
29205 					_errHandler.sync(this);
29206 					_la = _input.LA(1);
29207 				}
29208 				}
29209 			}
29210 
29211 			setState(4154);
29212 			match(AS);
29213 			setState(4156);
29214 			_errHandler.sync(this);
29215 			switch ( getInterpreter().adaptivePredict(_input,437,_ctx) ) {
29216 			case 1:
29217 				{
29218 				setState(4155);
29219 				withCommonTableExpr();
29220 				}
29221 				break;
29222 			}
29223 			setState(4158);
29224 			select();
29225 			setState(4162);
29226 			_errHandler.sync(this);
29227 			_la = _input.LA(1);
29228 			if (_la==WITH) {
29229 				{
29230 				setState(4159);
29231 				match(WITH);
29232 				setState(4160);
29233 				match(CHECK);
29234 				setState(4161);
29235 				match(OPTION);
29236 				}
29237 			}
29238 
29239 			}
29240 		}
29241 		catch (RecognitionException re) {
29242 			_localctx.exception = re;
29243 			_errHandler.reportError(this, re);
29244 			_errHandler.recover(this, re);
29245 		}
29246 		finally {
29247 			exitRule();
29248 		}
29249 		return _localctx;
29250 	}
29251 
29252 	public static class ViewAttributeContext extends ParserRuleContext {
29253 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
29254 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
29255 		public TerminalNode VIEW_METADATA() { return getToken(SQLServerStatementParser.VIEW_METADATA, 0); }
29256 		public ViewAttributeContext(ParserRuleContext parent, int invokingState) {
29257 			super(parent, invokingState);
29258 		}
29259 		@Override public int getRuleIndex() { return RULE_viewAttribute; }
29260 		@Override
29261 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29262 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitViewAttribute(this);
29263 			else return visitor.visitChildren(this);
29264 		}
29265 	}
29266 
29267 	public final ViewAttributeContext viewAttribute() throws RecognitionException {
29268 		ViewAttributeContext _localctx = new ViewAttributeContext(_ctx, getState());
29269 		enterRule(_localctx, 596, RULE_viewAttribute);
29270 		int _la;
29271 		try {
29272 			enterOuterAlt(_localctx, 1);
29273 			{
29274 			setState(4164);
29275 			_la = _input.LA(1);
29276 			if ( !(_la==ENCRYPTION || _la==SCHEMABINDING || _la==VIEW_METADATA) ) {
29277 			_errHandler.recoverInline(this);
29278 			}
29279 			else {
29280 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29281 				_errHandler.reportMatch(this);
29282 				consume();
29283 			}
29284 			}
29285 		}
29286 		catch (RecognitionException re) {
29287 			_localctx.exception = re;
29288 			_errHandler.reportError(this, re);
29289 			_errHandler.recover(this, re);
29290 		}
29291 		finally {
29292 			exitRule();
29293 		}
29294 		return _localctx;
29295 	}
29296 
29297 	public static class WithCommonTableExprContext extends ParserRuleContext {
29298 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
29299 		public List<CommonTableExprContext> commonTableExpr() {
29300 			return getRuleContexts(CommonTableExprContext.class);
29301 		}
29302 		public CommonTableExprContext commonTableExpr(int i) {
29303 			return getRuleContext(CommonTableExprContext.class,i);
29304 		}
29305 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
29306 		public TerminalNode COMMA_(int i) {
29307 			return getToken(SQLServerStatementParser.COMMA_, i);
29308 		}
29309 		public WithCommonTableExprContext(ParserRuleContext parent, int invokingState) {
29310 			super(parent, invokingState);
29311 		}
29312 		@Override public int getRuleIndex() { return RULE_withCommonTableExpr; }
29313 		@Override
29314 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29315 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithCommonTableExpr(this);
29316 			else return visitor.visitChildren(this);
29317 		}
29318 	}
29319 
29320 	public final WithCommonTableExprContext withCommonTableExpr() throws RecognitionException {
29321 		WithCommonTableExprContext _localctx = new WithCommonTableExprContext(_ctx, getState());
29322 		enterRule(_localctx, 598, RULE_withCommonTableExpr);
29323 		int _la;
29324 		try {
29325 			enterOuterAlt(_localctx, 1);
29326 			{
29327 			setState(4166);
29328 			match(WITH);
29329 			setState(4167);
29330 			commonTableExpr();
29331 			setState(4172);
29332 			_errHandler.sync(this);
29333 			_la = _input.LA(1);
29334 			while (_la==COMMA_) {
29335 				{
29336 				{
29337 				setState(4168);
29338 				match(COMMA_);
29339 				setState(4169);
29340 				commonTableExpr();
29341 				}
29342 				}
29343 				setState(4174);
29344 				_errHandler.sync(this);
29345 				_la = _input.LA(1);
29346 			}
29347 			}
29348 		}
29349 		catch (RecognitionException re) {
29350 			_localctx.exception = re;
29351 			_errHandler.reportError(this, re);
29352 			_errHandler.recover(this, re);
29353 		}
29354 		finally {
29355 			exitRule();
29356 		}
29357 		return _localctx;
29358 	}
29359 
29360 	public static class CommonTableExprContext extends ParserRuleContext {
29361 		public NameContext name() {
29362 			return getRuleContext(NameContext.class,0);
29363 		}
29364 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
29365 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
29366 		public TerminalNode LP_(int i) {
29367 			return getToken(SQLServerStatementParser.LP_, i);
29368 		}
29369 		public SelectContext select() {
29370 			return getRuleContext(SelectContext.class,0);
29371 		}
29372 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
29373 		public TerminalNode RP_(int i) {
29374 			return getToken(SQLServerStatementParser.RP_, i);
29375 		}
29376 		public List<ColumnNameContext> columnName() {
29377 			return getRuleContexts(ColumnNameContext.class);
29378 		}
29379 		public ColumnNameContext columnName(int i) {
29380 			return getRuleContext(ColumnNameContext.class,i);
29381 		}
29382 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
29383 		public TerminalNode COMMA_(int i) {
29384 			return getToken(SQLServerStatementParser.COMMA_, i);
29385 		}
29386 		public CommonTableExprContext(ParserRuleContext parent, int invokingState) {
29387 			super(parent, invokingState);
29388 		}
29389 		@Override public int getRuleIndex() { return RULE_commonTableExpr; }
29390 		@Override
29391 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29392 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommonTableExpr(this);
29393 			else return visitor.visitChildren(this);
29394 		}
29395 	}
29396 
29397 	public final CommonTableExprContext commonTableExpr() throws RecognitionException {
29398 		CommonTableExprContext _localctx = new CommonTableExprContext(_ctx, getState());
29399 		enterRule(_localctx, 600, RULE_commonTableExpr);
29400 		int _la;
29401 		try {
29402 			enterOuterAlt(_localctx, 1);
29403 			{
29404 			setState(4175);
29405 			name();
29406 			setState(4187);
29407 			_errHandler.sync(this);
29408 			_la = _input.LA(1);
29409 			if (_la==LP_) {
29410 				{
29411 				setState(4176);
29412 				match(LP_);
29413 				setState(4177);
29414 				columnName();
29415 				setState(4182);
29416 				_errHandler.sync(this);
29417 				_la = _input.LA(1);
29418 				while (_la==COMMA_) {
29419 					{
29420 					{
29421 					setState(4178);
29422 					match(COMMA_);
29423 					setState(4179);
29424 					columnName();
29425 					}
29426 					}
29427 					setState(4184);
29428 					_errHandler.sync(this);
29429 					_la = _input.LA(1);
29430 				}
29431 				setState(4185);
29432 				match(RP_);
29433 				}
29434 			}
29435 
29436 			setState(4189);
29437 			match(AS);
29438 			setState(4190);
29439 			match(LP_);
29440 			setState(4191);
29441 			select();
29442 			setState(4192);
29443 			match(RP_);
29444 			}
29445 		}
29446 		catch (RecognitionException re) {
29447 			_localctx.exception = re;
29448 			_errHandler.reportError(this, re);
29449 			_errHandler.recover(this, re);
29450 		}
29451 		finally {
29452 			exitRule();
29453 		}
29454 		return _localctx;
29455 	}
29456 
29457 	public static class CreateTriggerClauseContext extends ParserRuleContext {
29458 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
29459 		public List<TerminalNode> FOR() { return getTokens(SQLServerStatementParser.FOR); }
29460 		public TerminalNode FOR(int i) {
29461 			return getToken(SQLServerStatementParser.FOR, i);
29462 		}
29463 		public TerminalNode AFTER() { return getToken(SQLServerStatementParser.AFTER, 0); }
29464 		public TerminalNode INSTEAD() { return getToken(SQLServerStatementParser.INSTEAD, 0); }
29465 		public TerminalNode OF() { return getToken(SQLServerStatementParser.OF, 0); }
29466 		public CompoundStatementContext compoundStatement() {
29467 			return getRuleContext(CompoundStatementContext.class,0);
29468 		}
29469 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
29470 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
29471 		public MethodSpecifierContext methodSpecifier() {
29472 			return getRuleContext(MethodSpecifierContext.class,0);
29473 		}
29474 		public List<TerminalNode> WITH() { return getTokens(SQLServerStatementParser.WITH); }
29475 		public TerminalNode WITH(int i) {
29476 			return getToken(SQLServerStatementParser.WITH, i);
29477 		}
29478 		public List<DmlTriggerOptionContext> dmlTriggerOption() {
29479 			return getRuleContexts(DmlTriggerOptionContext.class);
29480 		}
29481 		public DmlTriggerOptionContext dmlTriggerOption(int i) {
29482 			return getRuleContext(DmlTriggerOptionContext.class,i);
29483 		}
29484 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
29485 		public TerminalNode COMMA_(int i) {
29486 			return getToken(SQLServerStatementParser.COMMA_, i);
29487 		}
29488 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
29489 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
29490 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
29491 		public TerminalNode APPEND() { return getToken(SQLServerStatementParser.APPEND, 0); }
29492 		public TerminalNode NOT() { return getToken(SQLServerStatementParser.NOT, 0); }
29493 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
29494 		public CreateTriggerClauseContext(ParserRuleContext parent, int invokingState) {
29495 			super(parent, invokingState);
29496 		}
29497 		@Override public int getRuleIndex() { return RULE_createTriggerClause; }
29498 		@Override
29499 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29500 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTriggerClause(this);
29501 			else return visitor.visitChildren(this);
29502 		}
29503 	}
29504 
29505 	public final CreateTriggerClauseContext createTriggerClause() throws RecognitionException {
29506 		CreateTriggerClauseContext _localctx = new CreateTriggerClauseContext(_ctx, getState());
29507 		enterRule(_localctx, 602, RULE_createTriggerClause);
29508 		int _la;
29509 		try {
29510 			enterOuterAlt(_localctx, 1);
29511 			{
29512 			setState(4199);
29513 			_errHandler.sync(this);
29514 			_la = _input.LA(1);
29515 			if (_la==WITH) {
29516 				{
29517 				setState(4194);
29518 				match(WITH);
29519 				setState(4195);
29520 				dmlTriggerOption();
29521 				setState(4196);
29522 				match(COMMA_);
29523 				setState(4197);
29524 				dmlTriggerOption();
29525 				}
29526 			}
29527 
29528 			setState(4205);
29529 			_errHandler.sync(this);
29530 			switch (_input.LA(1)) {
29531 			case FOR:
29532 				{
29533 				setState(4201);
29534 				match(FOR);
29535 				}
29536 				break;
29537 			case AFTER:
29538 				{
29539 				setState(4202);
29540 				match(AFTER);
29541 				}
29542 				break;
29543 			case INSTEAD:
29544 				{
29545 				setState(4203);
29546 				match(INSTEAD);
29547 				setState(4204);
29548 				match(OF);
29549 				}
29550 				break;
29551 			default:
29552 				throw new NoViableAltException(this);
29553 			}
29554 			setState(4208);
29555 			_errHandler.sync(this);
29556 			_la = _input.LA(1);
29557 			if (_la==INSERT) {
29558 				{
29559 				setState(4207);
29560 				match(INSERT);
29561 				}
29562 			}
29563 
29564 			setState(4211);
29565 			_errHandler.sync(this);
29566 			switch ( getInterpreter().adaptivePredict(_input,445,_ctx) ) {
29567 			case 1:
29568 				{
29569 				setState(4210);
29570 				match(COMMA_);
29571 				}
29572 				break;
29573 			}
29574 			setState(4214);
29575 			_errHandler.sync(this);
29576 			_la = _input.LA(1);
29577 			if (_la==UPDATE) {
29578 				{
29579 				setState(4213);
29580 				match(UPDATE);
29581 				}
29582 			}
29583 
29584 			setState(4217);
29585 			_errHandler.sync(this);
29586 			switch ( getInterpreter().adaptivePredict(_input,447,_ctx) ) {
29587 			case 1:
29588 				{
29589 				setState(4216);
29590 				match(COMMA_);
29591 				}
29592 				break;
29593 			}
29594 			setState(4220);
29595 			_errHandler.sync(this);
29596 			_la = _input.LA(1);
29597 			if (_la==DELETE) {
29598 				{
29599 				setState(4219);
29600 				match(DELETE);
29601 				}
29602 			}
29603 
29604 			setState(4223);
29605 			_errHandler.sync(this);
29606 			_la = _input.LA(1);
29607 			if (_la==COMMA_) {
29608 				{
29609 				setState(4222);
29610 				match(COMMA_);
29611 				}
29612 			}
29613 
29614 			setState(4227);
29615 			_errHandler.sync(this);
29616 			_la = _input.LA(1);
29617 			if (_la==WITH) {
29618 				{
29619 				setState(4225);
29620 				match(WITH);
29621 				setState(4226);
29622 				match(APPEND);
29623 				}
29624 			}
29625 
29626 			setState(4232);
29627 			_errHandler.sync(this);
29628 			_la = _input.LA(1);
29629 			if (_la==NOT) {
29630 				{
29631 				setState(4229);
29632 				match(NOT);
29633 				setState(4230);
29634 				match(FOR);
29635 				setState(4231);
29636 				match(REPLICATION);
29637 				}
29638 			}
29639 
29640 			setState(4234);
29641 			match(AS);
29642 			setState(4239);
29643 			_errHandler.sync(this);
29644 			switch (_input.LA(1)) {
29645 			case EOF:
29646 			case SEMI_:
29647 			case SELECT:
29648 			case INSERT:
29649 			case UPDATE:
29650 			case DELETE:
29651 			case CREATE:
29652 			case ALTER:
29653 			case DROP:
29654 			case TRUNCATE:
29655 			case SET:
29656 			case WITH:
29657 			case DECLARE:
29658 				{
29659 				setState(4235);
29660 				compoundStatement();
29661 				}
29662 				break;
29663 			case EXTERNAL:
29664 				{
29665 				setState(4236);
29666 				match(EXTERNAL);
29667 				setState(4237);
29668 				match(NAME);
29669 				setState(4238);
29670 				methodSpecifier();
29671 				}
29672 				break;
29673 			default:
29674 				throw new NoViableAltException(this);
29675 			}
29676 			}
29677 		}
29678 		catch (RecognitionException re) {
29679 			_localctx.exception = re;
29680 			_errHandler.reportError(this, re);
29681 			_errHandler.recover(this, re);
29682 		}
29683 		finally {
29684 			exitRule();
29685 		}
29686 		return _localctx;
29687 	}
29688 
29689 	public static class DmlTriggerOptionContext extends ParserRuleContext {
29690 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
29691 		public ExecuteAsClauseContext executeAsClause() {
29692 			return getRuleContext(ExecuteAsClauseContext.class,0);
29693 		}
29694 		public TerminalNode NATIVE_COMPILATION() { return getToken(SQLServerStatementParser.NATIVE_COMPILATION, 0); }
29695 		public TerminalNode SCHEMABINDING() { return getToken(SQLServerStatementParser.SCHEMABINDING, 0); }
29696 		public DmlTriggerOptionContext(ParserRuleContext parent, int invokingState) {
29697 			super(parent, invokingState);
29698 		}
29699 		@Override public int getRuleIndex() { return RULE_dmlTriggerOption; }
29700 		@Override
29701 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29702 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDmlTriggerOption(this);
29703 			else return visitor.visitChildren(this);
29704 		}
29705 	}
29706 
29707 	public final DmlTriggerOptionContext dmlTriggerOption() throws RecognitionException {
29708 		DmlTriggerOptionContext _localctx = new DmlTriggerOptionContext(_ctx, getState());
29709 		enterRule(_localctx, 604, RULE_dmlTriggerOption);
29710 		try {
29711 			setState(4246);
29712 			_errHandler.sync(this);
29713 			switch (_input.LA(1)) {
29714 			case ENCRYPTION:
29715 				enterOuterAlt(_localctx, 1);
29716 				{
29717 				setState(4241);
29718 				match(ENCRYPTION);
29719 				}
29720 				break;
29721 			case EXECUTE:
29722 			case EXEC:
29723 				enterOuterAlt(_localctx, 2);
29724 				{
29725 				setState(4242);
29726 				executeAsClause();
29727 				}
29728 				break;
29729 			case NATIVE_COMPILATION:
29730 				enterOuterAlt(_localctx, 3);
29731 				{
29732 				setState(4243);
29733 				match(NATIVE_COMPILATION);
29734 				}
29735 				break;
29736 			case SCHEMABINDING:
29737 				enterOuterAlt(_localctx, 4);
29738 				{
29739 				setState(4244);
29740 				match(SCHEMABINDING);
29741 				}
29742 				break;
29743 			case COMMA_:
29744 			case FOR:
29745 			case AFTER:
29746 			case INSTEAD:
29747 				enterOuterAlt(_localctx, 5);
29748 				{
29749 				}
29750 				break;
29751 			default:
29752 				throw new NoViableAltException(this);
29753 			}
29754 		}
29755 		catch (RecognitionException re) {
29756 			_localctx.exception = re;
29757 			_errHandler.reportError(this, re);
29758 			_errHandler.recover(this, re);
29759 		}
29760 		finally {
29761 			exitRule();
29762 		}
29763 		return _localctx;
29764 	}
29765 
29766 	public static class MethodSpecifierContext extends ParserRuleContext {
29767 		public List<NameContext> name() {
29768 			return getRuleContexts(NameContext.class);
29769 		}
29770 		public NameContext name(int i) {
29771 			return getRuleContext(NameContext.class,i);
29772 		}
29773 		public List<TerminalNode> DOT_() { return getTokens(SQLServerStatementParser.DOT_); }
29774 		public TerminalNode DOT_(int i) {
29775 			return getToken(SQLServerStatementParser.DOT_, i);
29776 		}
29777 		public MethodSpecifierContext(ParserRuleContext parent, int invokingState) {
29778 			super(parent, invokingState);
29779 		}
29780 		@Override public int getRuleIndex() { return RULE_methodSpecifier; }
29781 		@Override
29782 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29783 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMethodSpecifier(this);
29784 			else return visitor.visitChildren(this);
29785 		}
29786 	}
29787 
29788 	public final MethodSpecifierContext methodSpecifier() throws RecognitionException {
29789 		MethodSpecifierContext _localctx = new MethodSpecifierContext(_ctx, getState());
29790 		enterRule(_localctx, 606, RULE_methodSpecifier);
29791 		try {
29792 			enterOuterAlt(_localctx, 1);
29793 			{
29794 			setState(4248);
29795 			name();
29796 			setState(4249);
29797 			match(DOT_);
29798 			setState(4250);
29799 			name();
29800 			setState(4251);
29801 			match(DOT_);
29802 			setState(4252);
29803 			name();
29804 			}
29805 		}
29806 		catch (RecognitionException re) {
29807 			_localctx.exception = re;
29808 			_errHandler.reportError(this, re);
29809 			_errHandler.recover(this, re);
29810 		}
29811 		finally {
29812 			exitRule();
29813 		}
29814 		return _localctx;
29815 	}
29816 
29817 	public static class TriggerTargetContext extends ParserRuleContext {
29818 		public TableNameContext tableName() {
29819 			return getRuleContext(TableNameContext.class,0);
29820 		}
29821 		public ViewNameContext viewName() {
29822 			return getRuleContext(ViewNameContext.class,0);
29823 		}
29824 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
29825 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
29826 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
29827 		public TriggerTargetContext(ParserRuleContext parent, int invokingState) {
29828 			super(parent, invokingState);
29829 		}
29830 		@Override public int getRuleIndex() { return RULE_triggerTarget; }
29831 		@Override
29832 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29833 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTriggerTarget(this);
29834 			else return visitor.visitChildren(this);
29835 		}
29836 	}
29837 
29838 	public final TriggerTargetContext triggerTarget() throws RecognitionException {
29839 		TriggerTargetContext _localctx = new TriggerTargetContext(_ctx, getState());
29840 		enterRule(_localctx, 608, RULE_triggerTarget);
29841 		try {
29842 			setState(4259);
29843 			_errHandler.sync(this);
29844 			switch ( getInterpreter().adaptivePredict(_input,454,_ctx) ) {
29845 			case 1:
29846 				enterOuterAlt(_localctx, 1);
29847 				{
29848 				setState(4254);
29849 				tableName();
29850 				}
29851 				break;
29852 			case 2:
29853 				enterOuterAlt(_localctx, 2);
29854 				{
29855 				setState(4255);
29856 				viewName();
29857 				}
29858 				break;
29859 			case 3:
29860 				enterOuterAlt(_localctx, 3);
29861 				{
29862 				setState(4256);
29863 				match(ALL);
29864 				setState(4257);
29865 				match(SERVER);
29866 				}
29867 				break;
29868 			case 4:
29869 				enterOuterAlt(_localctx, 4);
29870 				{
29871 				setState(4258);
29872 				match(DATABASE);
29873 				}
29874 				break;
29875 			}
29876 		}
29877 		catch (RecognitionException re) {
29878 			_localctx.exception = re;
29879 			_errHandler.reportError(this, re);
29880 			_errHandler.recover(this, re);
29881 		}
29882 		finally {
29883 			exitRule();
29884 		}
29885 		return _localctx;
29886 	}
29887 
29888 	public static class CreateOrAlterSequenceClauseContext extends ParserRuleContext {
29889 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
29890 		public DataTypeContext dataType() {
29891 			return getRuleContext(DataTypeContext.class,0);
29892 		}
29893 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
29894 		public ExprContext expr() {
29895 			return getRuleContext(ExprContext.class,0);
29896 		}
29897 		public TerminalNode START() { return getToken(SQLServerStatementParser.START, 0); }
29898 		public TerminalNode RESTART() { return getToken(SQLServerStatementParser.RESTART, 0); }
29899 		public TerminalNode INCREMENT() { return getToken(SQLServerStatementParser.INCREMENT, 0); }
29900 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
29901 		public TerminalNode MINVALUE() { return getToken(SQLServerStatementParser.MINVALUE, 0); }
29902 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
29903 		public TerminalNode MAXVALUE() { return getToken(SQLServerStatementParser.MAXVALUE, 0); }
29904 		public TerminalNode CACHE() { return getToken(SQLServerStatementParser.CACHE, 0); }
29905 		public TerminalNode CYCLE() { return getToken(SQLServerStatementParser.CYCLE, 0); }
29906 		public CreateOrAlterSequenceClauseContext(ParserRuleContext parent, int invokingState) {
29907 			super(parent, invokingState);
29908 		}
29909 		@Override public int getRuleIndex() { return RULE_createOrAlterSequenceClause; }
29910 		@Override
29911 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
29912 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateOrAlterSequenceClause(this);
29913 			else return visitor.visitChildren(this);
29914 		}
29915 	}
29916 
29917 	public final CreateOrAlterSequenceClauseContext createOrAlterSequenceClause() throws RecognitionException {
29918 		CreateOrAlterSequenceClauseContext _localctx = new CreateOrAlterSequenceClauseContext(_ctx, getState());
29919 		enterRule(_localctx, 610, RULE_createOrAlterSequenceClause);
29920 		int _la;
29921 		try {
29922 			setState(4289);
29923 			_errHandler.sync(this);
29924 			switch ( getInterpreter().adaptivePredict(_input,458,_ctx) ) {
29925 			case 1:
29926 				enterOuterAlt(_localctx, 1);
29927 				{
29928 				setState(4261);
29929 				match(AS);
29930 				setState(4262);
29931 				dataType();
29932 				}
29933 				break;
29934 			case 2:
29935 				enterOuterAlt(_localctx, 2);
29936 				{
29937 				setState(4263);
29938 				_la = _input.LA(1);
29939 				if ( !(_la==START || _la==RESTART) ) {
29940 				_errHandler.recoverInline(this);
29941 				}
29942 				else {
29943 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
29944 					_errHandler.reportMatch(this);
29945 					consume();
29946 				}
29947 				setState(4264);
29948 				match(WITH);
29949 				setState(4265);
29950 				expr(0);
29951 				}
29952 				break;
29953 			case 3:
29954 				enterOuterAlt(_localctx, 3);
29955 				{
29956 				setState(4266);
29957 				match(INCREMENT);
29958 				setState(4267);
29959 				match(BY);
29960 				setState(4268);
29961 				expr(0);
29962 				}
29963 				break;
29964 			case 4:
29965 				enterOuterAlt(_localctx, 4);
29966 				{
29967 				setState(4269);
29968 				match(MINVALUE);
29969 				setState(4271);
29970 				_errHandler.sync(this);
29971 				switch ( getInterpreter().adaptivePredict(_input,455,_ctx) ) {
29972 				case 1:
29973 					{
29974 					setState(4270);
29975 					expr(0);
29976 					}
29977 					break;
29978 				}
29979 				}
29980 				break;
29981 			case 5:
29982 				enterOuterAlt(_localctx, 5);
29983 				{
29984 				setState(4273);
29985 				match(NO);
29986 				setState(4274);
29987 				match(MINVALUE);
29988 				}
29989 				break;
29990 			case 6:
29991 				enterOuterAlt(_localctx, 6);
29992 				{
29993 				setState(4275);
29994 				match(MAXVALUE);
29995 				setState(4277);
29996 				_errHandler.sync(this);
29997 				switch ( getInterpreter().adaptivePredict(_input,456,_ctx) ) {
29998 				case 1:
29999 					{
30000 					setState(4276);
30001 					expr(0);
30002 					}
30003 					break;
30004 				}
30005 				}
30006 				break;
30007 			case 7:
30008 				enterOuterAlt(_localctx, 7);
30009 				{
30010 				setState(4279);
30011 				match(NO);
30012 				setState(4280);
30013 				match(MAXVALUE);
30014 				}
30015 				break;
30016 			case 8:
30017 				enterOuterAlt(_localctx, 8);
30018 				{
30019 				setState(4281);
30020 				match(CACHE);
30021 				setState(4282);
30022 				expr(0);
30023 				}
30024 				break;
30025 			case 9:
30026 				enterOuterAlt(_localctx, 9);
30027 				{
30028 				setState(4283);
30029 				match(NO);
30030 				setState(4284);
30031 				match(CACHE);
30032 				}
30033 				break;
30034 			case 10:
30035 				enterOuterAlt(_localctx, 10);
30036 				{
30037 				setState(4286);
30038 				_errHandler.sync(this);
30039 				_la = _input.LA(1);
30040 				if (_la==NO) {
30041 					{
30042 					setState(4285);
30043 					match(NO);
30044 					}
30045 				}
30046 
30047 				setState(4288);
30048 				match(CYCLE);
30049 				}
30050 				break;
30051 			}
30052 		}
30053 		catch (RecognitionException re) {
30054 			_localctx.exception = re;
30055 			_errHandler.reportError(this, re);
30056 			_errHandler.recover(this, re);
30057 		}
30058 		finally {
30059 			exitRule();
30060 		}
30061 		return _localctx;
30062 	}
30063 
30064 	public static class CreateIndexClauseContext extends ParserRuleContext {
30065 		public TerminalNode INCLUDE() { return getToken(SQLServerStatementParser.INCLUDE, 0); }
30066 		public ColumnNamesWithSortContext columnNamesWithSort() {
30067 			return getRuleContext(ColumnNamesWithSortContext.class,0);
30068 		}
30069 		public TerminalNode WHERE() { return getToken(SQLServerStatementParser.WHERE, 0); }
30070 		public FilterPredicateContext filterPredicate() {
30071 			return getRuleContext(FilterPredicateContext.class,0);
30072 		}
30073 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
30074 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
30075 		public TerminalNode LP_(int i) {
30076 			return getToken(SQLServerStatementParser.LP_, i);
30077 		}
30078 		public List<RelationalIndexOptionContext> relationalIndexOption() {
30079 			return getRuleContexts(RelationalIndexOptionContext.class);
30080 		}
30081 		public RelationalIndexOptionContext relationalIndexOption(int i) {
30082 			return getRuleContext(RelationalIndexOptionContext.class,i);
30083 		}
30084 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
30085 		public TerminalNode RP_(int i) {
30086 			return getToken(SQLServerStatementParser.RP_, i);
30087 		}
30088 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
30089 		public TerminalNode FILESTREAM_ON() { return getToken(SQLServerStatementParser.FILESTREAM_ON, 0); }
30090 		public SchemaNameContext schemaName() {
30091 			return getRuleContext(SchemaNameContext.class,0);
30092 		}
30093 		public ColumnNameContext columnName() {
30094 			return getRuleContext(ColumnNameContext.class,0);
30095 		}
30096 		public List<NameContext> name() {
30097 			return getRuleContexts(NameContext.class);
30098 		}
30099 		public NameContext name(int i) {
30100 			return getRuleContext(NameContext.class,i);
30101 		}
30102 		public StringLiteralsContext stringLiterals() {
30103 			return getRuleContext(StringLiteralsContext.class,0);
30104 		}
30105 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
30106 		public TerminalNode COMMA_(int i) {
30107 			return getToken(SQLServerStatementParser.COMMA_, i);
30108 		}
30109 		public CreateIndexClauseContext(ParserRuleContext parent, int invokingState) {
30110 			super(parent, invokingState);
30111 		}
30112 		@Override public int getRuleIndex() { return RULE_createIndexClause; }
30113 		@Override
30114 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30115 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateIndexClause(this);
30116 			else return visitor.visitChildren(this);
30117 		}
30118 	}
30119 
30120 	public final CreateIndexClauseContext createIndexClause() throws RecognitionException {
30121 		CreateIndexClauseContext _localctx = new CreateIndexClauseContext(_ctx, getState());
30122 		enterRule(_localctx, 612, RULE_createIndexClause);
30123 		int _la;
30124 		try {
30125 			enterOuterAlt(_localctx, 1);
30126 			{
30127 			setState(4293);
30128 			_errHandler.sync(this);
30129 			_la = _input.LA(1);
30130 			if (_la==INCLUDE) {
30131 				{
30132 				setState(4291);
30133 				match(INCLUDE);
30134 				setState(4292);
30135 				columnNamesWithSort();
30136 				}
30137 			}
30138 
30139 			setState(4297);
30140 			_errHandler.sync(this);
30141 			_la = _input.LA(1);
30142 			if (_la==WHERE) {
30143 				{
30144 				setState(4295);
30145 				match(WHERE);
30146 				setState(4296);
30147 				filterPredicate();
30148 				}
30149 			}
30150 
30151 			setState(4311);
30152 			_errHandler.sync(this);
30153 			_la = _input.LA(1);
30154 			if (_la==WITH) {
30155 				{
30156 				setState(4299);
30157 				match(WITH);
30158 				setState(4300);
30159 				match(LP_);
30160 				setState(4301);
30161 				relationalIndexOption();
30162 				setState(4306);
30163 				_errHandler.sync(this);
30164 				_la = _input.LA(1);
30165 				while (_la==COMMA_) {
30166 					{
30167 					{
30168 					setState(4302);
30169 					match(COMMA_);
30170 					setState(4303);
30171 					relationalIndexOption();
30172 					}
30173 					}
30174 					setState(4308);
30175 					_errHandler.sync(this);
30176 					_la = _input.LA(1);
30177 				}
30178 				setState(4309);
30179 				match(RP_);
30180 				}
30181 			}
30182 
30183 			setState(4322);
30184 			_errHandler.sync(this);
30185 			_la = _input.LA(1);
30186 			if (_la==ON) {
30187 				{
30188 				setState(4313);
30189 				match(ON);
30190 				setState(4320);
30191 				_errHandler.sync(this);
30192 				switch ( getInterpreter().adaptivePredict(_input,463,_ctx) ) {
30193 				case 1:
30194 					{
30195 					setState(4314);
30196 					schemaName();
30197 					setState(4315);
30198 					match(LP_);
30199 					setState(4316);
30200 					columnName();
30201 					setState(4317);
30202 					match(RP_);
30203 					}
30204 					break;
30205 				case 2:
30206 					{
30207 					setState(4319);
30208 					name();
30209 					}
30210 					break;
30211 				}
30212 				}
30213 			}
30214 
30215 			setState(4329);
30216 			_errHandler.sync(this);
30217 			_la = _input.LA(1);
30218 			if (_la==FILESTREAM_ON) {
30219 				{
30220 				setState(4324);
30221 				match(FILESTREAM_ON);
30222 				setState(4327);
30223 				_errHandler.sync(this);
30224 				switch (_input.LA(1)) {
30225 				case TRUNCATE:
30226 				case SCHEMA:
30227 				case COLUMNS:
30228 				case PRECISION:
30229 				case FUNCTION:
30230 				case TRIGGER:
30231 				case CAST:
30232 				case TRIM:
30233 				case SUBSTRING:
30234 				case RIGHT:
30235 				case OFF:
30236 				case GROUP:
30237 				case LIMIT:
30238 				case OFFSET:
30239 				case SAVEPOINT:
30240 				case BOOLEAN:
30241 				case ARRAY:
30242 				case DATE:
30243 				case TIMESTAMP:
30244 				case LOCALTIME:
30245 				case LOCALTIMESTAMP:
30246 				case YEAR:
30247 				case QUARTER:
30248 				case MONTH:
30249 				case WEEK:
30250 				case DAY:
30251 				case SECOND:
30252 				case MICROSECOND:
30253 				case MAX:
30254 				case MIN:
30255 				case SUM:
30256 				case COUNT:
30257 				case AVG:
30258 				case ENABLE:
30259 				case DISABLE:
30260 				case INSTANCE:
30261 				case DO:
30262 				case DEFINER:
30263 				case SQL:
30264 				case CASCADED:
30265 				case LOCAL:
30266 				case NEXT:
30267 				case NAME:
30268 				case INTEGER:
30269 				case TYPE:
30270 				case TEXT:
30271 				case VIEWS:
30272 				case READ_ONLY:
30273 				case DATABASE:
30274 				case RETURNS:
30275 				case DATEPART:
30276 				case PASSWORD:
30277 				case BINARY:
30278 				case HIDDEN_:
30279 				case MOD:
30280 				case PARTITION:
30281 				case PARTITIONS:
30282 				case TOP:
30283 				case ROW:
30284 				case ROWS:
30285 				case XOR:
30286 				case ALWAYS:
30287 				case USER:
30288 				case ROLE:
30289 				case START:
30290 				case ALGORITHM:
30291 				case AUTO:
30292 				case BLOCKERS:
30293 				case CLUSTERED:
30294 				case NONCLUSTERED:
30295 				case COLUMNSTORE:
30296 				case CONTENT:
30297 				case YEARS:
30298 				case MONTHS:
30299 				case WEEKS:
30300 				case DAYS:
30301 				case MINUTES:
30302 				case DENY:
30303 				case DETERMINISTIC:
30304 				case DISTRIBUTION:
30305 				case DOCUMENT:
30306 				case DURABILITY:
30307 				case ENCRYPTED:
30308 				case FILESTREAM:
30309 				case FILETABLE:
30310 				case FILLFACTOR:
30311 				case FOLLOWING:
30312 				case HASH:
30313 				case HEAP:
30314 				case INBOUND:
30315 				case OUTBOUND:
30316 				case UNBOUNDED:
30317 				case INFINITE:
30318 				case LOGIN:
30319 				case MASKED:
30320 				case MAXDOP:
30321 				case MOVE:
30322 				case NOCHECK:
30323 				case OBJECT:
30324 				case ONLINE:
30325 				case OVER:
30326 				case PAGE:
30327 				case PAUSED:
30328 				case PERIOD:
30329 				case PERSISTED:
30330 				case PRECEDING:
30331 				case RANDOMIZED:
30332 				case RANGE:
30333 				case REBUILD:
30334 				case REPLICATE:
30335 				case REPLICATION:
30336 				case RESUMABLE:
30337 				case ROWGUIDCOL:
30338 				case SAVE:
30339 				case SELF:
30340 				case SPARSE:
30341 				case SWITCH:
30342 				case TRAN:
30343 				case TRANCOUNT:
30344 				case CONTROL:
30345 				case CONCAT:
30346 				case TAKE:
30347 				case OWNERSHIP:
30348 				case DEFINITION:
30349 				case APPLICATION:
30350 				case ASSEMBLY:
30351 				case SYMMETRIC:
30352 				case ASYMMETRIC:
30353 				case SERVER:
30354 				case RECEIVE:
30355 				case CHANGE:
30356 				case TRACE:
30357 				case TRACKING:
30358 				case RESOURCES:
30359 				case SETTINGS:
30360 				case STATE:
30361 				case AVAILABILITY:
30362 				case CREDENTIAL:
30363 				case ENDPOINT:
30364 				case EVENT:
30365 				case NOTIFICATION:
30366 				case LINKED:
30367 				case AUDIT:
30368 				case DDL:
30369 				case XML:
30370 				case IMPERSONATE:
30371 				case SECURABLES:
30372 				case AUTHENTICATE:
30373 				case EXTERNAL:
30374 				case ACCESS:
30375 				case ADMINISTER:
30376 				case BULK:
30377 				case OPERATIONS:
30378 				case UNSAFE:
30379 				case SHUTDOWN:
30380 				case SCOPED:
30381 				case CONFIGURATION:
30382 				case DATASPACE:
30383 				case SERVICE:
30384 				case CERTIFICATE:
30385 				case CONTRACT:
30386 				case ENCRYPTION:
30387 				case MASTER:
30388 				case DATA:
30389 				case SOURCE:
30390 				case FILE:
30391 				case FORMAT:
30392 				case LIBRARY:
30393 				case FULLTEXT:
30394 				case MASK:
30395 				case UNMASK:
30396 				case MESSAGE:
30397 				case REMOTE:
30398 				case BINDING:
30399 				case ROUTE:
30400 				case SECURITY:
30401 				case POLICY:
30402 				case AGGREGATE:
30403 				case QUEUE:
30404 				case RULE:
30405 				case SYNONYM:
30406 				case COLLECTION:
30407 				case SCRIPT:
30408 				case KILL:
30409 				case BACKUP:
30410 				case LOG:
30411 				case SHOWPLAN:
30412 				case SUBSCRIBE:
30413 				case QUERY:
30414 				case NOTIFICATIONS:
30415 				case CHECKPOINT:
30416 				case SEQUENCE:
30417 				case ABORT_AFTER_WAIT:
30418 				case ALLOW_PAGE_LOCKS:
30419 				case ALLOW_ROW_LOCKS:
30420 				case ALL_SPARSE_COLUMNS:
30421 				case BUCKET_COUNT:
30422 				case COLUMNSTORE_ARCHIVE:
30423 				case COLUMN_ENCRYPTION_KEY:
30424 				case COLUMN_SET:
30425 				case COMPRESSION_DELAY:
30426 				case DATABASE_DEAULT:
30427 				case DATA_COMPRESSION:
30428 				case DATA_CONSISTENCY_CHECK:
30429 				case ENCRYPTION_TYPE:
30430 				case SYSTEM_TIME:
30431 				case SYSTEM_VERSIONING:
30432 				case TEXTIMAGE_ON:
30433 				case WAIT_AT_LOW_PRIORITY:
30434 				case STATISTICS_INCREMENTAL:
30435 				case STATISTICS_NORECOMPUTE:
30436 				case ROUND_ROBIN:
30437 				case SCHEMA_AND_DATA:
30438 				case SCHEMA_ONLY:
30439 				case SORT_IN_TEMPDB:
30440 				case IGNORE_DUP_KEY:
30441 				case IMPLICIT_TRANSACTIONS:
30442 				case MAX_DURATION:
30443 				case MEMORY_OPTIMIZED:
30444 				case MIGRATION_STATE:
30445 				case PAD_INDEX:
30446 				case REMOTE_DATA_ARCHIVE:
30447 				case FILESTREAM_ON:
30448 				case FILETABLE_COLLATE_FILENAME:
30449 				case FILETABLE_DIRECTORY:
30450 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
30451 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
30452 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
30453 				case FILTER_PREDICATE:
30454 				case HISTORY_RETENTION_PERIOD:
30455 				case HISTORY_TABLE:
30456 				case LOCK_ESCALATION:
30457 				case DROP_EXISTING:
30458 				case ROW_NUMBER:
30459 				case FIRST:
30460 				case DATETIME2:
30461 				case OUTPUT:
30462 				case INSERTED:
30463 				case DELETED:
30464 				case FILENAME:
30465 				case SIZE:
30466 				case MAXSIZE:
30467 				case FILEGROWTH:
30468 				case UNLIMITED:
30469 				case KB:
30470 				case MB:
30471 				case GB:
30472 				case TB:
30473 				case CONTAINS:
30474 				case MEMORY_OPTIMIZED_DATA:
30475 				case FILEGROUP:
30476 				case NON_TRANSACTED_ACCESS:
30477 				case DB_CHAINING:
30478 				case TRUSTWORTHY:
30479 				case FORWARD_ONLY:
30480 				case KEYSET:
30481 				case FAST_FORWARD:
30482 				case SCROLL_LOCKS:
30483 				case OPTIMISTIC:
30484 				case TYPE_WARNING:
30485 				case SCHEMABINDING:
30486 				case CALLER:
30487 				case INPUT:
30488 				case OWNER:
30489 				case SNAPSHOT:
30490 				case REPEATABLE:
30491 				case SERIALIZABLE:
30492 				case NATIVE_COMPILATION:
30493 				case VIEW_METADATA:
30494 				case INSTEAD:
30495 				case APPEND:
30496 				case INCREMENT:
30497 				case CACHE:
30498 				case MINVALUE:
30499 				case MAXVALUE:
30500 				case RESTART:
30501 				case LOB_COMPACTION:
30502 				case COMPRESS_ALL_ROW_GROUPS:
30503 				case REORGANIZE:
30504 				case RESUME:
30505 				case PAUSE:
30506 				case ABORT:
30507 				case ACCELERATED_DATABASE_RECOVERY:
30508 				case PERSISTENT_VERSION_STORE_FILEGROUP:
30509 				case IMMEDIATE:
30510 				case NO_WAIT:
30511 				case TARGET_RECOVERY_TIME:
30512 				case SECONDS:
30513 				case HONOR_BROKER_PRIORITY:
30514 				case ERROR_BROKER_CONVERSATIONS:
30515 				case NEW_BROKER:
30516 				case DISABLE_BROKER:
30517 				case ENABLE_BROKER:
30518 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
30519 				case READ_COMMITTED_SNAPSHOT:
30520 				case ALLOW_SNAPSHOT_ISOLATION:
30521 				case RECURSIVE_TRIGGERS:
30522 				case QUOTED_IDENTIFIER:
30523 				case NUMERIC_ROUNDABORT:
30524 				case CONCAT_NULL_YIELDS_NULL:
30525 				case COMPATIBILITY_LEVEL:
30526 				case ARITHABORT:
30527 				case ANSI_WARNINGS:
30528 				case ANSI_PADDING:
30529 				case ANSI_NULLS:
30530 				case ANSI_NULL_DEFAULT:
30531 				case PAGE_VERIFY:
30532 				case CHECKSUM:
30533 				case TORN_PAGE_DETECTION:
30534 				case BULK_LOGGED:
30535 				case RECOVERY:
30536 				case TOTAL_EXECUTION_CPU_TIME_MS:
30537 				case TOTAL_COMPILE_CPU_TIME_MS:
30538 				case STALE_CAPTURE_POLICY_THRESHOLD:
30539 				case EXECUTION_COUNT:
30540 				case QUERY_CAPTURE_POLICY:
30541 				case WAIT_STATS_CAPTURE_MODE:
30542 				case MAX_PLANS_PER_QUERY:
30543 				case QUERY_CAPTURE_MODE:
30544 				case SIZE_BASED_CLEANUP_MODE:
30545 				case INTERVAL_LENGTH_MINUTES:
30546 				case MAX_STORAGE_SIZE_MB:
30547 				case DATA_FLUSH_INTERVAL_SECONDS:
30548 				case CLEANUP_POLICY:
30549 				case CUSTOM:
30550 				case STALE_QUERY_THRESHOLD_DAYS:
30551 				case OPERATION_MODE:
30552 				case QUERY_STORE:
30553 				case CURSOR_DEFAULT:
30554 				case GLOBAL:
30555 				case CURSOR_CLOSE_ON_COMMIT:
30556 				case HOURS:
30557 				case CHANGE_RETENTION:
30558 				case AUTO_CLEANUP:
30559 				case CHANGE_TRACKING:
30560 				case AUTOMATIC_TUNING:
30561 				case FORCE_LAST_GOOD_PLAN:
30562 				case AUTO_UPDATE_STATISTICS_ASYNC:
30563 				case AUTO_UPDATE_STATISTICS:
30564 				case AUTO_SHRINK:
30565 				case AUTO_CREATE_STATISTICS:
30566 				case INCREMENTAL:
30567 				case AUTO_CLOSE:
30568 				case DATA_RETENTION:
30569 				case TEMPORAL_HISTORY_RETENTION:
30570 				case EDITION:
30571 				case MIXED_PAGE_ALLOCATION:
30572 				case DISABLED:
30573 				case ALLOWED:
30574 				case HADR:
30575 				case MULTI_USER:
30576 				case RESTRICTED_USER:
30577 				case SINGLE_USER:
30578 				case OFFLINE:
30579 				case EMERGENCY:
30580 				case SUSPEND:
30581 				case DATE_CORRELATION_OPTIMIZATION:
30582 				case ELASTIC_POOL:
30583 				case SERVICE_OBJECTIVE:
30584 				case DATABASE_NAME:
30585 				case ALLOW_CONNECTIONS:
30586 				case GEO:
30587 				case NAMED:
30588 				case DATEFIRST:
30589 				case BACKUP_STORAGE_REDUNDANCY:
30590 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
30591 				case SECONDARY:
30592 				case FAILOVER:
30593 				case DEFAULT_FULLTEXT_LANGUAGE:
30594 				case DEFAULT_LANGUAGE:
30595 				case INLINE:
30596 				case NESTED_TRIGGERS:
30597 				case TRANSFORM_NOISE_WORDS:
30598 				case TWO_DIGIT_YEAR_CUTOFF:
30599 				case PERSISTENT_LOG_BUFFER:
30600 				case DIRECTORY_NAME:
30601 				case DATEFORMAT:
30602 				case DELAYED_DURABILITY:
30603 				case AUTHORIZATION:
30604 				case TRANSFER:
30605 				case PROVIDER:
30606 				case SID:
30607 				case SEARCH:
30608 				case MEMBER:
30609 				case JSON:
30610 				case IDENTIFIER_:
30611 				case DELIMITED_IDENTIFIER_:
30612 					{
30613 					setState(4325);
30614 					name();
30615 					}
30616 					break;
30617 				case STRING_:
30618 				case NCHAR_TEXT:
30619 					{
30620 					setState(4326);
30621 					stringLiterals();
30622 					}
30623 					break;
30624 				default:
30625 					throw new NoViableAltException(this);
30626 				}
30627 				}
30628 			}
30629 
30630 			}
30631 		}
30632 		catch (RecognitionException re) {
30633 			_localctx.exception = re;
30634 			_errHandler.reportError(this, re);
30635 			_errHandler.recover(this, re);
30636 		}
30637 		finally {
30638 			exitRule();
30639 		}
30640 		return _localctx;
30641 	}
30642 
30643 	public static class FilterPredicateContext extends ParserRuleContext {
30644 		public List<ConjunctContext> conjunct() {
30645 			return getRuleContexts(ConjunctContext.class);
30646 		}
30647 		public ConjunctContext conjunct(int i) {
30648 			return getRuleContext(ConjunctContext.class,i);
30649 		}
30650 		public List<TerminalNode> AND() { return getTokens(SQLServerStatementParser.AND); }
30651 		public TerminalNode AND(int i) {
30652 			return getToken(SQLServerStatementParser.AND, i);
30653 		}
30654 		public FilterPredicateContext(ParserRuleContext parent, int invokingState) {
30655 			super(parent, invokingState);
30656 		}
30657 		@Override public int getRuleIndex() { return RULE_filterPredicate; }
30658 		@Override
30659 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30660 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFilterPredicate(this);
30661 			else return visitor.visitChildren(this);
30662 		}
30663 	}
30664 
30665 	public final FilterPredicateContext filterPredicate() throws RecognitionException {
30666 		FilterPredicateContext _localctx = new FilterPredicateContext(_ctx, getState());
30667 		enterRule(_localctx, 614, RULE_filterPredicate);
30668 		int _la;
30669 		try {
30670 			enterOuterAlt(_localctx, 1);
30671 			{
30672 			setState(4331);
30673 			conjunct();
30674 			setState(4336);
30675 			_errHandler.sync(this);
30676 			_la = _input.LA(1);
30677 			while (_la==AND) {
30678 				{
30679 				{
30680 				setState(4332);
30681 				match(AND);
30682 				setState(4333);
30683 				conjunct();
30684 				}
30685 				}
30686 				setState(4338);
30687 				_errHandler.sync(this);
30688 				_la = _input.LA(1);
30689 			}
30690 			}
30691 		}
30692 		catch (RecognitionException re) {
30693 			_localctx.exception = re;
30694 			_errHandler.reportError(this, re);
30695 			_errHandler.recover(this, re);
30696 		}
30697 		finally {
30698 			exitRule();
30699 		}
30700 		return _localctx;
30701 	}
30702 
30703 	public static class ConjunctContext extends ParserRuleContext {
30704 		public ColumnNameContext columnName() {
30705 			return getRuleContext(ColumnNameContext.class,0);
30706 		}
30707 		public TerminalNode IN() { return getToken(SQLServerStatementParser.IN, 0); }
30708 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
30709 		public List<ExprContext> expr() {
30710 			return getRuleContexts(ExprContext.class);
30711 		}
30712 		public ExprContext expr(int i) {
30713 			return getRuleContext(ExprContext.class,i);
30714 		}
30715 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
30716 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
30717 		public TerminalNode COMMA_(int i) {
30718 			return getToken(SQLServerStatementParser.COMMA_, i);
30719 		}
30720 		public ComparisonOperatorContext comparisonOperator() {
30721 			return getRuleContext(ComparisonOperatorContext.class,0);
30722 		}
30723 		public ConjunctContext(ParserRuleContext parent, int invokingState) {
30724 			super(parent, invokingState);
30725 		}
30726 		@Override public int getRuleIndex() { return RULE_conjunct; }
30727 		@Override
30728 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30729 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitConjunct(this);
30730 			else return visitor.visitChildren(this);
30731 		}
30732 	}
30733 
30734 	public final ConjunctContext conjunct() throws RecognitionException {
30735 		ConjunctContext _localctx = new ConjunctContext(_ctx, getState());
30736 		enterRule(_localctx, 616, RULE_conjunct);
30737 		int _la;
30738 		try {
30739 			setState(4356);
30740 			_errHandler.sync(this);
30741 			switch ( getInterpreter().adaptivePredict(_input,469,_ctx) ) {
30742 			case 1:
30743 				enterOuterAlt(_localctx, 1);
30744 				{
30745 				setState(4339);
30746 				columnName();
30747 				setState(4340);
30748 				match(IN);
30749 				setState(4341);
30750 				match(LP_);
30751 				setState(4342);
30752 				expr(0);
30753 				setState(4347);
30754 				_errHandler.sync(this);
30755 				_la = _input.LA(1);
30756 				while (_la==COMMA_) {
30757 					{
30758 					{
30759 					setState(4343);
30760 					match(COMMA_);
30761 					setState(4344);
30762 					expr(0);
30763 					}
30764 					}
30765 					setState(4349);
30766 					_errHandler.sync(this);
30767 					_la = _input.LA(1);
30768 				}
30769 				setState(4350);
30770 				match(RP_);
30771 				}
30772 				break;
30773 			case 2:
30774 				enterOuterAlt(_localctx, 2);
30775 				{
30776 				setState(4352);
30777 				columnName();
30778 				setState(4353);
30779 				comparisonOperator();
30780 				setState(4354);
30781 				expr(0);
30782 				}
30783 				break;
30784 			}
30785 		}
30786 		catch (RecognitionException re) {
30787 			_localctx.exception = re;
30788 			_errHandler.reportError(this, re);
30789 			_errHandler.recover(this, re);
30790 		}
30791 		finally {
30792 			exitRule();
30793 		}
30794 		return _localctx;
30795 	}
30796 
30797 	public static class AlterIndexClauseContext extends ParserRuleContext {
30798 		public TerminalNode REBUILD() { return getToken(SQLServerStatementParser.REBUILD, 0); }
30799 		public TerminalNode PARTITION() { return getToken(SQLServerStatementParser.PARTITION, 0); }
30800 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
30801 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
30802 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
30803 		public List<RelationalIndexOptionContext> relationalIndexOption() {
30804 			return getRuleContexts(RelationalIndexOptionContext.class);
30805 		}
30806 		public RelationalIndexOptionContext relationalIndexOption(int i) {
30807 			return getRuleContext(RelationalIndexOptionContext.class,i);
30808 		}
30809 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
30810 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
30811 		public ExprContext expr() {
30812 			return getRuleContext(ExprContext.class,0);
30813 		}
30814 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
30815 		public TerminalNode COMMA_(int i) {
30816 			return getToken(SQLServerStatementParser.COMMA_, i);
30817 		}
30818 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
30819 		public TerminalNode REORGANIZE() { return getToken(SQLServerStatementParser.REORGANIZE, 0); }
30820 		public ReorganizeOptionContext reorganizeOption() {
30821 			return getRuleContext(ReorganizeOptionContext.class,0);
30822 		}
30823 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
30824 		public List<SetIndexOptionContext> setIndexOption() {
30825 			return getRuleContexts(SetIndexOptionContext.class);
30826 		}
30827 		public SetIndexOptionContext setIndexOption(int i) {
30828 			return getRuleContext(SetIndexOptionContext.class,i);
30829 		}
30830 		public TerminalNode RESUME() { return getToken(SQLServerStatementParser.RESUME, 0); }
30831 		public List<ResumableIndexOptionsContext> resumableIndexOptions() {
30832 			return getRuleContexts(ResumableIndexOptionsContext.class);
30833 		}
30834 		public ResumableIndexOptionsContext resumableIndexOptions(int i) {
30835 			return getRuleContext(ResumableIndexOptionsContext.class,i);
30836 		}
30837 		public TerminalNode PAUSE() { return getToken(SQLServerStatementParser.PAUSE, 0); }
30838 		public TerminalNode ABORT() { return getToken(SQLServerStatementParser.ABORT, 0); }
30839 		public AlterIndexClauseContext(ParserRuleContext parent, int invokingState) {
30840 			super(parent, invokingState);
30841 		}
30842 		@Override public int getRuleIndex() { return RULE_alterIndexClause; }
30843 		@Override
30844 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
30845 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterIndexClause(this);
30846 			else return visitor.visitChildren(this);
30847 		}
30848 	}
30849 
30850 	public final AlterIndexClauseContext alterIndexClause() throws RecognitionException {
30851 		AlterIndexClauseContext _localctx = new AlterIndexClauseContext(_ctx, getState());
30852 		enterRule(_localctx, 618, RULE_alterIndexClause);
30853 		int _la;
30854 		try {
30855 			setState(4420);
30856 			_errHandler.sync(this);
30857 			switch (_input.LA(1)) {
30858 			case REBUILD:
30859 				enterOuterAlt(_localctx, 1);
30860 				{
30861 				setState(4358);
30862 				match(REBUILD);
30863 				setState(4365);
30864 				_errHandler.sync(this);
30865 				_la = _input.LA(1);
30866 				if (_la==PARTITION) {
30867 					{
30868 					setState(4359);
30869 					match(PARTITION);
30870 					setState(4360);
30871 					match(EQ_);
30872 					setState(4363);
30873 					_errHandler.sync(this);
30874 					switch (_input.LA(1)) {
30875 					case ALL:
30876 						{
30877 						setState(4361);
30878 						match(ALL);
30879 						}
30880 						break;
30881 					case NOT_:
30882 					case TILDE_:
30883 					case PLUS_:
30884 					case MINUS_:
30885 					case LP_:
30886 					case LBE_:
30887 					case LBT_:
30888 					case QUESTION_:
30889 					case DOLLAR_:
30890 					case TRUNCATE:
30891 					case SCHEMA:
30892 					case COLUMNS:
30893 					case PRECISION:
30894 					case FUNCTION:
30895 					case TRIGGER:
30896 					case CASE:
30897 					case CAST:
30898 					case TRIM:
30899 					case SUBSTRING:
30900 					case RIGHT:
30901 					case OFF:
30902 					case IF:
30903 					case NOT:
30904 					case NULL:
30905 					case TRUE:
30906 					case FALSE:
30907 					case EXISTS:
30908 					case GROUP:
30909 					case LIMIT:
30910 					case OFFSET:
30911 					case SAVEPOINT:
30912 					case BOOLEAN:
30913 					case CHAR:
30914 					case ARRAY:
30915 					case INTERVAL:
30916 					case DATE:
30917 					case TIME:
30918 					case TIMESTAMP:
30919 					case LOCALTIME:
30920 					case LOCALTIMESTAMP:
30921 					case YEAR:
30922 					case QUARTER:
30923 					case MONTH:
30924 					case WEEK:
30925 					case DAY:
30926 					case SECOND:
30927 					case MICROSECOND:
30928 					case MAX:
30929 					case MIN:
30930 					case SUM:
30931 					case COUNT:
30932 					case AVG:
30933 					case CURRENT:
30934 					case ENABLE:
30935 					case DISABLE:
30936 					case INSTANCE:
30937 					case DO:
30938 					case DEFINER:
30939 					case SQL:
30940 					case CASCADED:
30941 					case LOCAL:
30942 					case NEXT:
30943 					case NAME:
30944 					case INTEGER:
30945 					case TYPE:
30946 					case TEXT:
30947 					case VIEWS:
30948 					case READ_ONLY:
30949 					case DATABASE:
30950 					case RETURNS:
30951 					case DATEPART:
30952 					case PASSWORD:
30953 					case JSON_OBJECT:
30954 					case JSON_ARRAY:
30955 					case FIRST_VALUE:
30956 					case LAST_VALUE:
30957 					case APPROX_PERCENTILE_CONT:
30958 					case APPROX_PERCENTILE_DISC:
30959 					case OPENDATASOURCE:
30960 					case BINARY:
30961 					case HIDDEN_:
30962 					case MOD:
30963 					case PARTITION:
30964 					case PARTITIONS:
30965 					case TOP:
30966 					case ROW:
30967 					case ROWS:
30968 					case XOR:
30969 					case ALWAYS:
30970 					case USER:
30971 					case ROLE:
30972 					case START:
30973 					case ALGORITHM:
30974 					case AUTO:
30975 					case BLOCKERS:
30976 					case CLUSTERED:
30977 					case NONCLUSTERED:
30978 					case COLUMNSTORE:
30979 					case CONTENT:
30980 					case CONVERT:
30981 					case YEARS:
30982 					case MONTHS:
30983 					case WEEKS:
30984 					case DAYS:
30985 					case MINUTES:
30986 					case DENY:
30987 					case DETERMINISTIC:
30988 					case DISTRIBUTION:
30989 					case DOCUMENT:
30990 					case DURABILITY:
30991 					case ENCRYPTED:
30992 					case FILESTREAM:
30993 					case FILETABLE:
30994 					case FILLFACTOR:
30995 					case FOLLOWING:
30996 					case HASH:
30997 					case HEAP:
30998 					case INBOUND:
30999 					case OUTBOUND:
31000 					case UNBOUNDED:
31001 					case INFINITE:
31002 					case LOGIN:
31003 					case MASKED:
31004 					case MAXDOP:
31005 					case MOVE:
31006 					case NOCHECK:
31007 					case OBJECT:
31008 					case ONLINE:
31009 					case OVER:
31010 					case PAGE:
31011 					case PAUSED:
31012 					case PERIOD:
31013 					case PERSISTED:
31014 					case PRECEDING:
31015 					case RANDOMIZED:
31016 					case RANGE:
31017 					case REBUILD:
31018 					case REPLICATE:
31019 					case REPLICATION:
31020 					case RESUMABLE:
31021 					case ROWGUIDCOL:
31022 					case SAVE:
31023 					case SELF:
31024 					case SPARSE:
31025 					case SWITCH:
31026 					case TRAN:
31027 					case TRANCOUNT:
31028 					case CONTROL:
31029 					case CONCAT:
31030 					case TAKE:
31031 					case OWNERSHIP:
31032 					case DEFINITION:
31033 					case APPLICATION:
31034 					case ASSEMBLY:
31035 					case SYMMETRIC:
31036 					case ASYMMETRIC:
31037 					case SERVER:
31038 					case RECEIVE:
31039 					case CHANGE:
31040 					case TRACE:
31041 					case TRACKING:
31042 					case RESOURCES:
31043 					case SETTINGS:
31044 					case STATE:
31045 					case AVAILABILITY:
31046 					case CREDENTIAL:
31047 					case ENDPOINT:
31048 					case EVENT:
31049 					case NOTIFICATION:
31050 					case LINKED:
31051 					case AUDIT:
31052 					case DDL:
31053 					case XML:
31054 					case IMPERSONATE:
31055 					case SECURABLES:
31056 					case AUTHENTICATE:
31057 					case EXTERNAL:
31058 					case ACCESS:
31059 					case ADMINISTER:
31060 					case BULK:
31061 					case OPERATIONS:
31062 					case UNSAFE:
31063 					case SHUTDOWN:
31064 					case SCOPED:
31065 					case CONFIGURATION:
31066 					case DATASPACE:
31067 					case SERVICE:
31068 					case CERTIFICATE:
31069 					case CONTRACT:
31070 					case ENCRYPTION:
31071 					case MASTER:
31072 					case DATA:
31073 					case SOURCE:
31074 					case FILE:
31075 					case FORMAT:
31076 					case LIBRARY:
31077 					case FULLTEXT:
31078 					case MASK:
31079 					case UNMASK:
31080 					case MESSAGE:
31081 					case REMOTE:
31082 					case BINDING:
31083 					case ROUTE:
31084 					case SECURITY:
31085 					case POLICY:
31086 					case AGGREGATE:
31087 					case QUEUE:
31088 					case RULE:
31089 					case SYNONYM:
31090 					case COLLECTION:
31091 					case SCRIPT:
31092 					case KILL:
31093 					case BACKUP:
31094 					case LOG:
31095 					case SHOWPLAN:
31096 					case SUBSCRIBE:
31097 					case QUERY:
31098 					case NOTIFICATIONS:
31099 					case CHECKPOINT:
31100 					case SEQUENCE:
31101 					case ABORT_AFTER_WAIT:
31102 					case ALLOW_PAGE_LOCKS:
31103 					case ALLOW_ROW_LOCKS:
31104 					case ALL_SPARSE_COLUMNS:
31105 					case BUCKET_COUNT:
31106 					case COLUMNSTORE_ARCHIVE:
31107 					case COLUMN_ENCRYPTION_KEY:
31108 					case COLUMN_SET:
31109 					case COMPRESSION_DELAY:
31110 					case DATABASE_DEAULT:
31111 					case DATA_COMPRESSION:
31112 					case DATA_CONSISTENCY_CHECK:
31113 					case ENCRYPTION_TYPE:
31114 					case SYSTEM_TIME:
31115 					case SYSTEM_VERSIONING:
31116 					case TEXTIMAGE_ON:
31117 					case WAIT_AT_LOW_PRIORITY:
31118 					case STATISTICS_INCREMENTAL:
31119 					case STATISTICS_NORECOMPUTE:
31120 					case ROUND_ROBIN:
31121 					case SCHEMA_AND_DATA:
31122 					case SCHEMA_ONLY:
31123 					case SORT_IN_TEMPDB:
31124 					case IGNORE_DUP_KEY:
31125 					case IMPLICIT_TRANSACTIONS:
31126 					case MAX_DURATION:
31127 					case MEMORY_OPTIMIZED:
31128 					case MIGRATION_STATE:
31129 					case PAD_INDEX:
31130 					case REMOTE_DATA_ARCHIVE:
31131 					case FILESTREAM_ON:
31132 					case FILETABLE_COLLATE_FILENAME:
31133 					case FILETABLE_DIRECTORY:
31134 					case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
31135 					case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
31136 					case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
31137 					case FILTER_PREDICATE:
31138 					case HISTORY_RETENTION_PERIOD:
31139 					case HISTORY_TABLE:
31140 					case LOCK_ESCALATION:
31141 					case DROP_EXISTING:
31142 					case ROW_NUMBER:
31143 					case FIRST:
31144 					case DATETIME2:
31145 					case OUTPUT:
31146 					case INSERTED:
31147 					case DELETED:
31148 					case FILENAME:
31149 					case SIZE:
31150 					case MAXSIZE:
31151 					case FILEGROWTH:
31152 					case UNLIMITED:
31153 					case KB:
31154 					case MB:
31155 					case GB:
31156 					case TB:
31157 					case CONTAINS:
31158 					case MEMORY_OPTIMIZED_DATA:
31159 					case FILEGROUP:
31160 					case NON_TRANSACTED_ACCESS:
31161 					case DB_CHAINING:
31162 					case TRUSTWORTHY:
31163 					case FORWARD_ONLY:
31164 					case KEYSET:
31165 					case FAST_FORWARD:
31166 					case SCROLL_LOCKS:
31167 					case OPTIMISTIC:
31168 					case TYPE_WARNING:
31169 					case SCHEMABINDING:
31170 					case CALLER:
31171 					case INPUT:
31172 					case OWNER:
31173 					case SNAPSHOT:
31174 					case REPEATABLE:
31175 					case SERIALIZABLE:
31176 					case NATIVE_COMPILATION:
31177 					case VIEW_METADATA:
31178 					case INSTEAD:
31179 					case APPEND:
31180 					case INCREMENT:
31181 					case CACHE:
31182 					case MINVALUE:
31183 					case MAXVALUE:
31184 					case RESTART:
31185 					case LOB_COMPACTION:
31186 					case COMPRESS_ALL_ROW_GROUPS:
31187 					case REORGANIZE:
31188 					case RESUME:
31189 					case PAUSE:
31190 					case ABORT:
31191 					case ACCELERATED_DATABASE_RECOVERY:
31192 					case PERSISTENT_VERSION_STORE_FILEGROUP:
31193 					case IMMEDIATE:
31194 					case NO_WAIT:
31195 					case TARGET_RECOVERY_TIME:
31196 					case SECONDS:
31197 					case HONOR_BROKER_PRIORITY:
31198 					case ERROR_BROKER_CONVERSATIONS:
31199 					case NEW_BROKER:
31200 					case DISABLE_BROKER:
31201 					case ENABLE_BROKER:
31202 					case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
31203 					case READ_COMMITTED_SNAPSHOT:
31204 					case ALLOW_SNAPSHOT_ISOLATION:
31205 					case RECURSIVE_TRIGGERS:
31206 					case QUOTED_IDENTIFIER:
31207 					case NUMERIC_ROUNDABORT:
31208 					case CONCAT_NULL_YIELDS_NULL:
31209 					case COMPATIBILITY_LEVEL:
31210 					case ARITHABORT:
31211 					case ANSI_WARNINGS:
31212 					case ANSI_PADDING:
31213 					case ANSI_NULLS:
31214 					case ANSI_NULL_DEFAULT:
31215 					case PAGE_VERIFY:
31216 					case CHECKSUM:
31217 					case TORN_PAGE_DETECTION:
31218 					case BULK_LOGGED:
31219 					case RECOVERY:
31220 					case TOTAL_EXECUTION_CPU_TIME_MS:
31221 					case TOTAL_COMPILE_CPU_TIME_MS:
31222 					case STALE_CAPTURE_POLICY_THRESHOLD:
31223 					case EXECUTION_COUNT:
31224 					case QUERY_CAPTURE_POLICY:
31225 					case WAIT_STATS_CAPTURE_MODE:
31226 					case MAX_PLANS_PER_QUERY:
31227 					case QUERY_CAPTURE_MODE:
31228 					case SIZE_BASED_CLEANUP_MODE:
31229 					case INTERVAL_LENGTH_MINUTES:
31230 					case MAX_STORAGE_SIZE_MB:
31231 					case DATA_FLUSH_INTERVAL_SECONDS:
31232 					case CLEANUP_POLICY:
31233 					case CUSTOM:
31234 					case STALE_QUERY_THRESHOLD_DAYS:
31235 					case OPERATION_MODE:
31236 					case QUERY_STORE:
31237 					case CURSOR_DEFAULT:
31238 					case GLOBAL:
31239 					case CURSOR_CLOSE_ON_COMMIT:
31240 					case HOURS:
31241 					case CHANGE_RETENTION:
31242 					case AUTO_CLEANUP:
31243 					case CHANGE_TRACKING:
31244 					case AUTOMATIC_TUNING:
31245 					case FORCE_LAST_GOOD_PLAN:
31246 					case AUTO_UPDATE_STATISTICS_ASYNC:
31247 					case AUTO_UPDATE_STATISTICS:
31248 					case AUTO_SHRINK:
31249 					case AUTO_CREATE_STATISTICS:
31250 					case INCREMENTAL:
31251 					case AUTO_CLOSE:
31252 					case DATA_RETENTION:
31253 					case TEMPORAL_HISTORY_RETENTION:
31254 					case EDITION:
31255 					case MIXED_PAGE_ALLOCATION:
31256 					case DISABLED:
31257 					case ALLOWED:
31258 					case HADR:
31259 					case MULTI_USER:
31260 					case RESTRICTED_USER:
31261 					case SINGLE_USER:
31262 					case OFFLINE:
31263 					case EMERGENCY:
31264 					case SUSPEND:
31265 					case DATE_CORRELATION_OPTIMIZATION:
31266 					case ELASTIC_POOL:
31267 					case SERVICE_OBJECTIVE:
31268 					case DATABASE_NAME:
31269 					case ALLOW_CONNECTIONS:
31270 					case GEO:
31271 					case NAMED:
31272 					case DATEFIRST:
31273 					case BACKUP_STORAGE_REDUNDANCY:
31274 					case FORCE_FAILOVER_ALLOW_DATA_LOSS:
31275 					case SECONDARY:
31276 					case FAILOVER:
31277 					case DEFAULT_FULLTEXT_LANGUAGE:
31278 					case DEFAULT_LANGUAGE:
31279 					case INLINE:
31280 					case NESTED_TRIGGERS:
31281 					case TRANSFORM_NOISE_WORDS:
31282 					case TWO_DIGIT_YEAR_CUTOFF:
31283 					case PERSISTENT_LOG_BUFFER:
31284 					case DIRECTORY_NAME:
31285 					case DATEFORMAT:
31286 					case DELAYED_DURABILITY:
31287 					case AUTHORIZATION:
31288 					case TRANSFER:
31289 					case PROVIDER:
31290 					case SID:
31291 					case SEARCH:
31292 					case MEMBER:
31293 					case JSON:
31294 					case OPENJSON:
31295 					case OPENROWSET:
31296 					case TRY_CAST:
31297 					case TRY_CONVERT:
31298 					case IDENTIFIER_:
31299 					case DELIMITED_IDENTIFIER_:
31300 					case STRING_:
31301 					case NUMBER_:
31302 					case HEX_DIGIT_:
31303 					case BIT_NUM_:
31304 					case NCHAR_TEXT:
31305 						{
31306 						setState(4362);
31307 						expr(0);
31308 						}
31309 						break;
31310 					default:
31311 						throw new NoViableAltException(this);
31312 					}
31313 					}
31314 				}
31315 
31316 				setState(4379);
31317 				_errHandler.sync(this);
31318 				_la = _input.LA(1);
31319 				if (_la==WITH) {
31320 					{
31321 					setState(4367);
31322 					match(WITH);
31323 					setState(4368);
31324 					match(LP_);
31325 					setState(4369);
31326 					relationalIndexOption();
31327 					setState(4374);
31328 					_errHandler.sync(this);
31329 					_la = _input.LA(1);
31330 					while (_la==COMMA_) {
31331 						{
31332 						{
31333 						setState(4370);
31334 						match(COMMA_);
31335 						setState(4371);
31336 						relationalIndexOption();
31337 						}
31338 						}
31339 						setState(4376);
31340 						_errHandler.sync(this);
31341 						_la = _input.LA(1);
31342 					}
31343 					setState(4377);
31344 					match(RP_);
31345 					}
31346 				}
31347 
31348 				}
31349 				break;
31350 			case DISABLE:
31351 				enterOuterAlt(_localctx, 2);
31352 				{
31353 				setState(4381);
31354 				match(DISABLE);
31355 				}
31356 				break;
31357 			case REORGANIZE:
31358 				enterOuterAlt(_localctx, 3);
31359 				{
31360 				setState(4382);
31361 				match(REORGANIZE);
31362 				setState(4386);
31363 				_errHandler.sync(this);
31364 				_la = _input.LA(1);
31365 				if (_la==PARTITION) {
31366 					{
31367 					setState(4383);
31368 					match(PARTITION);
31369 					setState(4384);
31370 					match(EQ_);
31371 					setState(4385);
31372 					expr(0);
31373 					}
31374 				}
31375 
31376 				setState(4393);
31377 				_errHandler.sync(this);
31378 				_la = _input.LA(1);
31379 				if (_la==WITH) {
31380 					{
31381 					setState(4388);
31382 					match(WITH);
31383 					setState(4389);
31384 					match(LP_);
31385 					setState(4390);
31386 					reorganizeOption();
31387 					setState(4391);
31388 					match(RP_);
31389 					}
31390 				}
31391 
31392 				}
31393 				break;
31394 			case SET:
31395 				enterOuterAlt(_localctx, 4);
31396 				{
31397 				setState(4395);
31398 				match(SET);
31399 				setState(4396);
31400 				match(LP_);
31401 				setState(4397);
31402 				setIndexOption();
31403 				{
31404 				setState(4398);
31405 				match(COMMA_);
31406 				setState(4399);
31407 				setIndexOption();
31408 				}
31409 				setState(4401);
31410 				match(RP_);
31411 				}
31412 				break;
31413 			case RESUME:
31414 				enterOuterAlt(_localctx, 5);
31415 				{
31416 				setState(4403);
31417 				match(RESUME);
31418 				setState(4416);
31419 				_errHandler.sync(this);
31420 				_la = _input.LA(1);
31421 				if (_la==WITH) {
31422 					{
31423 					setState(4404);
31424 					match(WITH);
31425 					setState(4405);
31426 					match(LP_);
31427 					setState(4406);
31428 					resumableIndexOptions();
31429 					setState(4411);
31430 					_errHandler.sync(this);
31431 					_la = _input.LA(1);
31432 					while (_la==COMMA_) {
31433 						{
31434 						{
31435 						setState(4407);
31436 						match(COMMA_);
31437 						setState(4408);
31438 						resumableIndexOptions();
31439 						}
31440 						}
31441 						setState(4413);
31442 						_errHandler.sync(this);
31443 						_la = _input.LA(1);
31444 					}
31445 					setState(4414);
31446 					match(RP_);
31447 					}
31448 				}
31449 
31450 				}
31451 				break;
31452 			case PAUSE:
31453 				enterOuterAlt(_localctx, 6);
31454 				{
31455 				setState(4418);
31456 				match(PAUSE);
31457 				}
31458 				break;
31459 			case ABORT:
31460 				enterOuterAlt(_localctx, 7);
31461 				{
31462 				setState(4419);
31463 				match(ABORT);
31464 				}
31465 				break;
31466 			default:
31467 				throw new NoViableAltException(this);
31468 			}
31469 		}
31470 		catch (RecognitionException re) {
31471 			_localctx.exception = re;
31472 			_errHandler.reportError(this, re);
31473 			_errHandler.recover(this, re);
31474 		}
31475 		finally {
31476 			exitRule();
31477 		}
31478 		return _localctx;
31479 	}
31480 
31481 	public static class RelationalIndexOptionContext extends ParserRuleContext {
31482 		public TerminalNode PAD_INDEX() { return getToken(SQLServerStatementParser.PAD_INDEX, 0); }
31483 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31484 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
31485 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
31486 		public TerminalNode FILLFACTOR() { return getToken(SQLServerStatementParser.FILLFACTOR, 0); }
31487 		public ExprContext expr() {
31488 			return getRuleContext(ExprContext.class,0);
31489 		}
31490 		public TerminalNode SORT_IN_TEMPDB() { return getToken(SQLServerStatementParser.SORT_IN_TEMPDB, 0); }
31491 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
31492 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
31493 		public TerminalNode STATISTICS_INCREMENTAL() { return getToken(SQLServerStatementParser.STATISTICS_INCREMENTAL, 0); }
31494 		public TerminalNode DROP_EXISTING() { return getToken(SQLServerStatementParser.DROP_EXISTING, 0); }
31495 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
31496 		public LowPriorityLockWaitContext lowPriorityLockWait() {
31497 			return getRuleContext(LowPriorityLockWaitContext.class,0);
31498 		}
31499 		public TerminalNode RESUMABLE() { return getToken(SQLServerStatementParser.RESUMABLE, 0); }
31500 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
31501 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
31502 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
31503 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
31504 		public TerminalNode OPTIMIZE_FOR_SEQUENTIAL_KEY() { return getToken(SQLServerStatementParser.OPTIMIZE_FOR_SEQUENTIAL_KEY, 0); }
31505 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
31506 		public TerminalNode DATA_COMPRESSION() { return getToken(SQLServerStatementParser.DATA_COMPRESSION, 0); }
31507 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
31508 		public TerminalNode ROW() { return getToken(SQLServerStatementParser.ROW, 0); }
31509 		public TerminalNode PAGE() { return getToken(SQLServerStatementParser.PAGE, 0); }
31510 		public TerminalNode COLUMNSTORE() { return getToken(SQLServerStatementParser.COLUMNSTORE, 0); }
31511 		public TerminalNode COLUMNSTORE_ARCHIVE() { return getToken(SQLServerStatementParser.COLUMNSTORE_ARCHIVE, 0); }
31512 		public TerminalNode PARTITIONS() { return getToken(SQLServerStatementParser.PARTITIONS, 0); }
31513 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
31514 		public List<PartitionNumberRangeContext> partitionNumberRange() {
31515 			return getRuleContexts(PartitionNumberRangeContext.class);
31516 		}
31517 		public PartitionNumberRangeContext partitionNumberRange(int i) {
31518 			return getRuleContext(PartitionNumberRangeContext.class,i);
31519 		}
31520 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
31521 		public TerminalNode COMMA_(int i) {
31522 			return getToken(SQLServerStatementParser.COMMA_, i);
31523 		}
31524 		public RelationalIndexOptionContext(ParserRuleContext parent, int invokingState) {
31525 			super(parent, invokingState);
31526 		}
31527 		@Override public int getRuleIndex() { return RULE_relationalIndexOption; }
31528 		@Override
31529 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31530 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRelationalIndexOption(this);
31531 			else return visitor.visitChildren(this);
31532 		}
31533 	}
31534 
31535 	public final RelationalIndexOptionContext relationalIndexOption() throws RecognitionException {
31536 		RelationalIndexOptionContext _localctx = new RelationalIndexOptionContext(_ctx, getState());
31537 		enterRule(_localctx, 620, RULE_relationalIndexOption);
31538 		int _la;
31539 		try {
31540 			int _alt;
31541 			setState(4489);
31542 			_errHandler.sync(this);
31543 			switch (_input.LA(1)) {
31544 			case PAD_INDEX:
31545 				enterOuterAlt(_localctx, 1);
31546 				{
31547 				setState(4422);
31548 				match(PAD_INDEX);
31549 				setState(4423);
31550 				match(EQ_);
31551 				setState(4424);
31552 				_la = _input.LA(1);
31553 				if ( !(_la==ON || _la==OFF) ) {
31554 				_errHandler.recoverInline(this);
31555 				}
31556 				else {
31557 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31558 					_errHandler.reportMatch(this);
31559 					consume();
31560 				}
31561 				}
31562 				break;
31563 			case FILLFACTOR:
31564 				enterOuterAlt(_localctx, 2);
31565 				{
31566 				setState(4425);
31567 				match(FILLFACTOR);
31568 				setState(4426);
31569 				match(EQ_);
31570 				setState(4427);
31571 				expr(0);
31572 				}
31573 				break;
31574 			case SORT_IN_TEMPDB:
31575 				enterOuterAlt(_localctx, 3);
31576 				{
31577 				setState(4428);
31578 				match(SORT_IN_TEMPDB);
31579 				setState(4429);
31580 				match(EQ_);
31581 				setState(4430);
31582 				_la = _input.LA(1);
31583 				if ( !(_la==ON || _la==OFF) ) {
31584 				_errHandler.recoverInline(this);
31585 				}
31586 				else {
31587 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31588 					_errHandler.reportMatch(this);
31589 					consume();
31590 				}
31591 				}
31592 				break;
31593 			case IGNORE_DUP_KEY:
31594 				enterOuterAlt(_localctx, 4);
31595 				{
31596 				setState(4431);
31597 				match(IGNORE_DUP_KEY);
31598 				setState(4432);
31599 				match(EQ_);
31600 				setState(4433);
31601 				_la = _input.LA(1);
31602 				if ( !(_la==ON || _la==OFF) ) {
31603 				_errHandler.recoverInline(this);
31604 				}
31605 				else {
31606 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31607 					_errHandler.reportMatch(this);
31608 					consume();
31609 				}
31610 				}
31611 				break;
31612 			case STATISTICS_NORECOMPUTE:
31613 				enterOuterAlt(_localctx, 5);
31614 				{
31615 				setState(4434);
31616 				match(STATISTICS_NORECOMPUTE);
31617 				setState(4435);
31618 				match(EQ_);
31619 				setState(4436);
31620 				_la = _input.LA(1);
31621 				if ( !(_la==ON || _la==OFF) ) {
31622 				_errHandler.recoverInline(this);
31623 				}
31624 				else {
31625 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31626 					_errHandler.reportMatch(this);
31627 					consume();
31628 				}
31629 				}
31630 				break;
31631 			case STATISTICS_INCREMENTAL:
31632 				enterOuterAlt(_localctx, 6);
31633 				{
31634 				setState(4437);
31635 				match(STATISTICS_INCREMENTAL);
31636 				setState(4438);
31637 				match(EQ_);
31638 				setState(4439);
31639 				_la = _input.LA(1);
31640 				if ( !(_la==ON || _la==OFF) ) {
31641 				_errHandler.recoverInline(this);
31642 				}
31643 				else {
31644 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31645 					_errHandler.reportMatch(this);
31646 					consume();
31647 				}
31648 				}
31649 				break;
31650 			case DROP_EXISTING:
31651 				enterOuterAlt(_localctx, 7);
31652 				{
31653 				setState(4440);
31654 				match(DROP_EXISTING);
31655 				setState(4441);
31656 				match(EQ_);
31657 				setState(4442);
31658 				_la = _input.LA(1);
31659 				if ( !(_la==ON || _la==OFF) ) {
31660 				_errHandler.recoverInline(this);
31661 				}
31662 				else {
31663 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31664 					_errHandler.reportMatch(this);
31665 					consume();
31666 				}
31667 				}
31668 				break;
31669 			case ONLINE:
31670 				enterOuterAlt(_localctx, 8);
31671 				{
31672 				setState(4443);
31673 				match(ONLINE);
31674 				setState(4444);
31675 				match(EQ_);
31676 				setState(4450);
31677 				_errHandler.sync(this);
31678 				switch (_input.LA(1)) {
31679 				case ON:
31680 					{
31681 					setState(4445);
31682 					match(ON);
31683 					setState(4447);
31684 					_errHandler.sync(this);
31685 					_la = _input.LA(1);
31686 					if (_la==WAIT_AT_LOW_PRIORITY) {
31687 						{
31688 						setState(4446);
31689 						lowPriorityLockWait();
31690 						}
31691 					}
31692 
31693 					}
31694 					break;
31695 				case OFF:
31696 					{
31697 					setState(4449);
31698 					match(OFF);
31699 					}
31700 					break;
31701 				default:
31702 					throw new NoViableAltException(this);
31703 				}
31704 				}
31705 				break;
31706 			case RESUMABLE:
31707 				enterOuterAlt(_localctx, 9);
31708 				{
31709 				setState(4452);
31710 				match(RESUMABLE);
31711 				setState(4453);
31712 				match(EQ_);
31713 				setState(4454);
31714 				_la = _input.LA(1);
31715 				if ( !(_la==ON || _la==OFF) ) {
31716 				_errHandler.recoverInline(this);
31717 				}
31718 				else {
31719 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31720 					_errHandler.reportMatch(this);
31721 					consume();
31722 				}
31723 				}
31724 				break;
31725 			case MAX_DURATION:
31726 				enterOuterAlt(_localctx, 10);
31727 				{
31728 				setState(4455);
31729 				match(MAX_DURATION);
31730 				setState(4456);
31731 				match(EQ_);
31732 				setState(4457);
31733 				expr(0);
31734 				setState(4459);
31735 				_errHandler.sync(this);
31736 				_la = _input.LA(1);
31737 				if (_la==MINUTES) {
31738 					{
31739 					setState(4458);
31740 					match(MINUTES);
31741 					}
31742 				}
31743 
31744 				}
31745 				break;
31746 			case ALLOW_ROW_LOCKS:
31747 				enterOuterAlt(_localctx, 11);
31748 				{
31749 				setState(4461);
31750 				match(ALLOW_ROW_LOCKS);
31751 				setState(4462);
31752 				match(EQ_);
31753 				setState(4463);
31754 				_la = _input.LA(1);
31755 				if ( !(_la==ON || _la==OFF) ) {
31756 				_errHandler.recoverInline(this);
31757 				}
31758 				else {
31759 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31760 					_errHandler.reportMatch(this);
31761 					consume();
31762 				}
31763 				}
31764 				break;
31765 			case ALLOW_PAGE_LOCKS:
31766 				enterOuterAlt(_localctx, 12);
31767 				{
31768 				setState(4464);
31769 				match(ALLOW_PAGE_LOCKS);
31770 				setState(4465);
31771 				match(EQ_);
31772 				setState(4466);
31773 				_la = _input.LA(1);
31774 				if ( !(_la==ON || _la==OFF) ) {
31775 				_errHandler.recoverInline(this);
31776 				}
31777 				else {
31778 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31779 					_errHandler.reportMatch(this);
31780 					consume();
31781 				}
31782 				}
31783 				break;
31784 			case OPTIMIZE_FOR_SEQUENTIAL_KEY:
31785 				enterOuterAlt(_localctx, 13);
31786 				{
31787 				setState(4467);
31788 				match(OPTIMIZE_FOR_SEQUENTIAL_KEY);
31789 				setState(4468);
31790 				match(EQ_);
31791 				setState(4469);
31792 				_la = _input.LA(1);
31793 				if ( !(_la==ON || _la==OFF) ) {
31794 				_errHandler.recoverInline(this);
31795 				}
31796 				else {
31797 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31798 					_errHandler.reportMatch(this);
31799 					consume();
31800 				}
31801 				}
31802 				break;
31803 			case MAXDOP:
31804 				enterOuterAlt(_localctx, 14);
31805 				{
31806 				setState(4470);
31807 				match(MAXDOP);
31808 				setState(4471);
31809 				match(EQ_);
31810 				setState(4472);
31811 				expr(0);
31812 				}
31813 				break;
31814 			case DATA_COMPRESSION:
31815 				enterOuterAlt(_localctx, 15);
31816 				{
31817 				setState(4473);
31818 				match(DATA_COMPRESSION);
31819 				setState(4474);
31820 				match(EQ_);
31821 				setState(4475);
31822 				_la = _input.LA(1);
31823 				if ( !(((((_la - 249)) & ~0x3f) == 0 && ((1L << (_la - 249)) & ((1L << (ROW - 249)) | (1L << (COLUMNSTORE - 249)) | (1L << (NONE - 249)) | (1L << (PAGE - 249)))) != 0) || _la==COLUMNSTORE_ARCHIVE) ) {
31824 				_errHandler.recoverInline(this);
31825 				}
31826 				else {
31827 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31828 					_errHandler.reportMatch(this);
31829 					consume();
31830 				}
31831 				setState(4487);
31832 				_errHandler.sync(this);
31833 				_la = _input.LA(1);
31834 				if (_la==ON) {
31835 					{
31836 					setState(4476);
31837 					match(ON);
31838 					setState(4477);
31839 					match(PARTITIONS);
31840 					setState(4478);
31841 					match(LP_);
31842 					setState(4479);
31843 					partitionNumberRange();
31844 					setState(4484);
31845 					_errHandler.sync(this);
31846 					_alt = getInterpreter().adaptivePredict(_input,482,_ctx);
31847 					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
31848 						if ( _alt==1 ) {
31849 							{
31850 							{
31851 							setState(4480);
31852 							match(COMMA_);
31853 							setState(4481);
31854 							partitionNumberRange();
31855 							}
31856 							} 
31857 						}
31858 						setState(4486);
31859 						_errHandler.sync(this);
31860 						_alt = getInterpreter().adaptivePredict(_input,482,_ctx);
31861 					}
31862 					}
31863 				}
31864 
31865 				}
31866 				break;
31867 			default:
31868 				throw new NoViableAltException(this);
31869 			}
31870 		}
31871 		catch (RecognitionException re) {
31872 			_localctx.exception = re;
31873 			_errHandler.reportError(this, re);
31874 			_errHandler.recover(this, re);
31875 		}
31876 		finally {
31877 			exitRule();
31878 		}
31879 		return _localctx;
31880 	}
31881 
31882 	public static class PartitionNumberRangeContext extends ParserRuleContext {
31883 		public List<ExprContext> expr() {
31884 			return getRuleContexts(ExprContext.class);
31885 		}
31886 		public ExprContext expr(int i) {
31887 			return getRuleContext(ExprContext.class,i);
31888 		}
31889 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
31890 		public PartitionNumberRangeContext(ParserRuleContext parent, int invokingState) {
31891 			super(parent, invokingState);
31892 		}
31893 		@Override public int getRuleIndex() { return RULE_partitionNumberRange; }
31894 		@Override
31895 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31896 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPartitionNumberRange(this);
31897 			else return visitor.visitChildren(this);
31898 		}
31899 	}
31900 
31901 	public final PartitionNumberRangeContext partitionNumberRange() throws RecognitionException {
31902 		PartitionNumberRangeContext _localctx = new PartitionNumberRangeContext(_ctx, getState());
31903 		enterRule(_localctx, 622, RULE_partitionNumberRange);
31904 		int _la;
31905 		try {
31906 			enterOuterAlt(_localctx, 1);
31907 			{
31908 			setState(4491);
31909 			expr(0);
31910 			setState(4494);
31911 			_errHandler.sync(this);
31912 			_la = _input.LA(1);
31913 			if (_la==TO) {
31914 				{
31915 				setState(4492);
31916 				match(TO);
31917 				setState(4493);
31918 				expr(0);
31919 				}
31920 			}
31921 
31922 			}
31923 		}
31924 		catch (RecognitionException re) {
31925 			_localctx.exception = re;
31926 			_errHandler.reportError(this, re);
31927 			_errHandler.recover(this, re);
31928 		}
31929 		finally {
31930 			exitRule();
31931 		}
31932 		return _localctx;
31933 	}
31934 
31935 	public static class ReorganizeOptionContext extends ParserRuleContext {
31936 		public TerminalNode LOB_COMPACTION() { return getToken(SQLServerStatementParser.LOB_COMPACTION, 0); }
31937 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
31938 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
31939 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
31940 		public TerminalNode COMPRESS_ALL_ROW_GROUPS() { return getToken(SQLServerStatementParser.COMPRESS_ALL_ROW_GROUPS, 0); }
31941 		public ReorganizeOptionContext(ParserRuleContext parent, int invokingState) {
31942 			super(parent, invokingState);
31943 		}
31944 		@Override public int getRuleIndex() { return RULE_reorganizeOption; }
31945 		@Override
31946 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
31947 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitReorganizeOption(this);
31948 			else return visitor.visitChildren(this);
31949 		}
31950 	}
31951 
31952 	public final ReorganizeOptionContext reorganizeOption() throws RecognitionException {
31953 		ReorganizeOptionContext _localctx = new ReorganizeOptionContext(_ctx, getState());
31954 		enterRule(_localctx, 624, RULE_reorganizeOption);
31955 		int _la;
31956 		try {
31957 			setState(4502);
31958 			_errHandler.sync(this);
31959 			switch (_input.LA(1)) {
31960 			case LOB_COMPACTION:
31961 				enterOuterAlt(_localctx, 1);
31962 				{
31963 				setState(4496);
31964 				match(LOB_COMPACTION);
31965 				setState(4497);
31966 				match(EQ_);
31967 				setState(4498);
31968 				_la = _input.LA(1);
31969 				if ( !(_la==ON || _la==OFF) ) {
31970 				_errHandler.recoverInline(this);
31971 				}
31972 				else {
31973 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31974 					_errHandler.reportMatch(this);
31975 					consume();
31976 				}
31977 				}
31978 				break;
31979 			case COMPRESS_ALL_ROW_GROUPS:
31980 				enterOuterAlt(_localctx, 2);
31981 				{
31982 				setState(4499);
31983 				match(COMPRESS_ALL_ROW_GROUPS);
31984 				setState(4500);
31985 				match(EQ_);
31986 				setState(4501);
31987 				_la = _input.LA(1);
31988 				if ( !(_la==ON || _la==OFF) ) {
31989 				_errHandler.recoverInline(this);
31990 				}
31991 				else {
31992 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
31993 					_errHandler.reportMatch(this);
31994 					consume();
31995 				}
31996 				}
31997 				break;
31998 			default:
31999 				throw new NoViableAltException(this);
32000 			}
32001 		}
32002 		catch (RecognitionException re) {
32003 			_localctx.exception = re;
32004 			_errHandler.reportError(this, re);
32005 			_errHandler.recover(this, re);
32006 		}
32007 		finally {
32008 			exitRule();
32009 		}
32010 		return _localctx;
32011 	}
32012 
32013 	public static class SetIndexOptionContext extends ParserRuleContext {
32014 		public TerminalNode ALLOW_ROW_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_ROW_LOCKS, 0); }
32015 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32016 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32017 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32018 		public TerminalNode ALLOW_PAGE_LOCKS() { return getToken(SQLServerStatementParser.ALLOW_PAGE_LOCKS, 0); }
32019 		public TerminalNode OPTIMIZE_FOR_SEQUENTIAL_KEY() { return getToken(SQLServerStatementParser.OPTIMIZE_FOR_SEQUENTIAL_KEY, 0); }
32020 		public TerminalNode IGNORE_DUP_KEY() { return getToken(SQLServerStatementParser.IGNORE_DUP_KEY, 0); }
32021 		public TerminalNode STATISTICS_NORECOMPUTE() { return getToken(SQLServerStatementParser.STATISTICS_NORECOMPUTE, 0); }
32022 		public TerminalNode COMPRESSION_DELAY() { return getToken(SQLServerStatementParser.COMPRESSION_DELAY, 0); }
32023 		public ExprContext expr() {
32024 			return getRuleContext(ExprContext.class,0);
32025 		}
32026 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
32027 		public SetIndexOptionContext(ParserRuleContext parent, int invokingState) {
32028 			super(parent, invokingState);
32029 		}
32030 		@Override public int getRuleIndex() { return RULE_setIndexOption; }
32031 		@Override
32032 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32033 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetIndexOption(this);
32034 			else return visitor.visitChildren(this);
32035 		}
32036 	}
32037 
32038 	public final SetIndexOptionContext setIndexOption() throws RecognitionException {
32039 		SetIndexOptionContext _localctx = new SetIndexOptionContext(_ctx, getState());
32040 		enterRule(_localctx, 626, RULE_setIndexOption);
32041 		int _la;
32042 		try {
32043 			setState(4525);
32044 			_errHandler.sync(this);
32045 			switch (_input.LA(1)) {
32046 			case ALLOW_ROW_LOCKS:
32047 				enterOuterAlt(_localctx, 1);
32048 				{
32049 				setState(4504);
32050 				match(ALLOW_ROW_LOCKS);
32051 				setState(4505);
32052 				match(EQ_);
32053 				setState(4506);
32054 				_la = _input.LA(1);
32055 				if ( !(_la==ON || _la==OFF) ) {
32056 				_errHandler.recoverInline(this);
32057 				}
32058 				else {
32059 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32060 					_errHandler.reportMatch(this);
32061 					consume();
32062 				}
32063 				}
32064 				break;
32065 			case ALLOW_PAGE_LOCKS:
32066 				enterOuterAlt(_localctx, 2);
32067 				{
32068 				setState(4507);
32069 				match(ALLOW_PAGE_LOCKS);
32070 				setState(4508);
32071 				match(EQ_);
32072 				setState(4509);
32073 				_la = _input.LA(1);
32074 				if ( !(_la==ON || _la==OFF) ) {
32075 				_errHandler.recoverInline(this);
32076 				}
32077 				else {
32078 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32079 					_errHandler.reportMatch(this);
32080 					consume();
32081 				}
32082 				}
32083 				break;
32084 			case OPTIMIZE_FOR_SEQUENTIAL_KEY:
32085 				enterOuterAlt(_localctx, 3);
32086 				{
32087 				setState(4510);
32088 				match(OPTIMIZE_FOR_SEQUENTIAL_KEY);
32089 				setState(4511);
32090 				match(EQ_);
32091 				setState(4512);
32092 				_la = _input.LA(1);
32093 				if ( !(_la==ON || _la==OFF) ) {
32094 				_errHandler.recoverInline(this);
32095 				}
32096 				else {
32097 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32098 					_errHandler.reportMatch(this);
32099 					consume();
32100 				}
32101 				}
32102 				break;
32103 			case IGNORE_DUP_KEY:
32104 				enterOuterAlt(_localctx, 4);
32105 				{
32106 				setState(4513);
32107 				match(IGNORE_DUP_KEY);
32108 				setState(4514);
32109 				match(EQ_);
32110 				setState(4515);
32111 				_la = _input.LA(1);
32112 				if ( !(_la==ON || _la==OFF) ) {
32113 				_errHandler.recoverInline(this);
32114 				}
32115 				else {
32116 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32117 					_errHandler.reportMatch(this);
32118 					consume();
32119 				}
32120 				}
32121 				break;
32122 			case STATISTICS_NORECOMPUTE:
32123 				enterOuterAlt(_localctx, 5);
32124 				{
32125 				setState(4516);
32126 				match(STATISTICS_NORECOMPUTE);
32127 				setState(4517);
32128 				match(EQ_);
32129 				setState(4518);
32130 				_la = _input.LA(1);
32131 				if ( !(_la==ON || _la==OFF) ) {
32132 				_errHandler.recoverInline(this);
32133 				}
32134 				else {
32135 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32136 					_errHandler.reportMatch(this);
32137 					consume();
32138 				}
32139 				}
32140 				break;
32141 			case COMPRESSION_DELAY:
32142 				enterOuterAlt(_localctx, 6);
32143 				{
32144 				setState(4519);
32145 				match(COMPRESSION_DELAY);
32146 				setState(4520);
32147 				match(EQ_);
32148 				{
32149 				setState(4521);
32150 				expr(0);
32151 				setState(4523);
32152 				_errHandler.sync(this);
32153 				_la = _input.LA(1);
32154 				if (_la==MINUTES) {
32155 					{
32156 					setState(4522);
32157 					match(MINUTES);
32158 					}
32159 				}
32160 
32161 				}
32162 				}
32163 				break;
32164 			default:
32165 				throw new NoViableAltException(this);
32166 			}
32167 		}
32168 		catch (RecognitionException re) {
32169 			_localctx.exception = re;
32170 			_errHandler.reportError(this, re);
32171 			_errHandler.recover(this, re);
32172 		}
32173 		finally {
32174 			exitRule();
32175 		}
32176 		return _localctx;
32177 	}
32178 
32179 	public static class ResumableIndexOptionsContext extends ParserRuleContext {
32180 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
32181 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32182 		public ExprContext expr() {
32183 			return getRuleContext(ExprContext.class,0);
32184 		}
32185 		public TerminalNode MAX_DURATION() { return getToken(SQLServerStatementParser.MAX_DURATION, 0); }
32186 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
32187 		public LowPriorityLockWaitContext lowPriorityLockWait() {
32188 			return getRuleContext(LowPriorityLockWaitContext.class,0);
32189 		}
32190 		public ResumableIndexOptionsContext(ParserRuleContext parent, int invokingState) {
32191 			super(parent, invokingState);
32192 		}
32193 		@Override public int getRuleIndex() { return RULE_resumableIndexOptions; }
32194 		@Override
32195 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32196 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitResumableIndexOptions(this);
32197 			else return visitor.visitChildren(this);
32198 		}
32199 	}
32200 
32201 	public final ResumableIndexOptionsContext resumableIndexOptions() throws RecognitionException {
32202 		ResumableIndexOptionsContext _localctx = new ResumableIndexOptionsContext(_ctx, getState());
32203 		enterRule(_localctx, 628, RULE_resumableIndexOptions);
32204 		int _la;
32205 		try {
32206 			setState(4537);
32207 			_errHandler.sync(this);
32208 			switch (_input.LA(1)) {
32209 			case MAXDOP:
32210 				enterOuterAlt(_localctx, 1);
32211 				{
32212 				setState(4527);
32213 				match(MAXDOP);
32214 				setState(4528);
32215 				match(EQ_);
32216 				setState(4529);
32217 				expr(0);
32218 				}
32219 				break;
32220 			case MAX_DURATION:
32221 				enterOuterAlt(_localctx, 2);
32222 				{
32223 				setState(4530);
32224 				match(MAX_DURATION);
32225 				setState(4531);
32226 				match(EQ_);
32227 				setState(4532);
32228 				expr(0);
32229 				setState(4534);
32230 				_errHandler.sync(this);
32231 				_la = _input.LA(1);
32232 				if (_la==MINUTES) {
32233 					{
32234 					setState(4533);
32235 					match(MINUTES);
32236 					}
32237 				}
32238 
32239 				}
32240 				break;
32241 			case WAIT_AT_LOW_PRIORITY:
32242 				enterOuterAlt(_localctx, 3);
32243 				{
32244 				setState(4536);
32245 				lowPriorityLockWait();
32246 				}
32247 				break;
32248 			default:
32249 				throw new NoViableAltException(this);
32250 			}
32251 		}
32252 		catch (RecognitionException re) {
32253 			_localctx.exception = re;
32254 			_errHandler.reportError(this, re);
32255 			_errHandler.recover(this, re);
32256 		}
32257 		finally {
32258 			exitRule();
32259 		}
32260 		return _localctx;
32261 	}
32262 
32263 	public static class AlterDatabaseClauseContext extends ParserRuleContext {
32264 		public TerminalNode MODIFY() { return getToken(SQLServerStatementParser.MODIFY, 0); }
32265 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
32266 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32267 		public DatabaseNameContext databaseName() {
32268 			return getRuleContext(DatabaseNameContext.class,0);
32269 		}
32270 		public TerminalNode COLLATE() { return getToken(SQLServerStatementParser.COLLATE, 0); }
32271 		public IgnoredIdentifierContext ignoredIdentifier() {
32272 			return getRuleContext(IgnoredIdentifierContext.class,0);
32273 		}
32274 		public FileAndFilegroupOptionsContext fileAndFilegroupOptions() {
32275 			return getRuleContext(FileAndFilegroupOptionsContext.class,0);
32276 		}
32277 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
32278 		public List<AlterDatabaseOptionSpecContext> alterDatabaseOptionSpec() {
32279 			return getRuleContexts(AlterDatabaseOptionSpecContext.class);
32280 		}
32281 		public AlterDatabaseOptionSpecContext alterDatabaseOptionSpec(int i) {
32282 			return getRuleContext(AlterDatabaseOptionSpecContext.class,i);
32283 		}
32284 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
32285 		public TerminalNode COMMA_(int i) {
32286 			return getToken(SQLServerStatementParser.COMMA_, i);
32287 		}
32288 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
32289 		public TerminationContext termination() {
32290 			return getRuleContext(TerminationContext.class,0);
32291 		}
32292 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32293 		public List<EditionOptionsContext> editionOptions() {
32294 			return getRuleContexts(EditionOptionsContext.class);
32295 		}
32296 		public EditionOptionsContext editionOptions(int i) {
32297 			return getRuleContext(EditionOptionsContext.class,i);
32298 		}
32299 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32300 		public TerminalNode BACKUP_STORAGE_REDUNDANCY() { return getToken(SQLServerStatementParser.BACKUP_STORAGE_REDUNDANCY, 0); }
32301 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
32302 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
32303 		public TerminalNode SECONDARY() { return getToken(SQLServerStatementParser.SECONDARY, 0); }
32304 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32305 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
32306 		public List<AddSecondaryOptionContext> addSecondaryOption() {
32307 			return getRuleContexts(AddSecondaryOptionContext.class);
32308 		}
32309 		public AddSecondaryOptionContext addSecondaryOption(int i) {
32310 			return getRuleContext(AddSecondaryOptionContext.class,i);
32311 		}
32312 		public TerminalNode FAILOVER() { return getToken(SQLServerStatementParser.FAILOVER, 0); }
32313 		public TerminalNode FORCE_FAILOVER_ALLOW_DATA_LOSS() { return getToken(SQLServerStatementParser.FORCE_FAILOVER_ALLOW_DATA_LOSS, 0); }
32314 		public AlterDatabaseClauseContext(ParserRuleContext parent, int invokingState) {
32315 			super(parent, invokingState);
32316 		}
32317 		@Override public int getRuleIndex() { return RULE_alterDatabaseClause; }
32318 		@Override
32319 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32320 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDatabaseClause(this);
32321 			else return visitor.visitChildren(this);
32322 		}
32323 	}
32324 
32325 	public final AlterDatabaseClauseContext alterDatabaseClause() throws RecognitionException {
32326 		AlterDatabaseClauseContext _localctx = new AlterDatabaseClauseContext(_ctx, getState());
32327 		enterRule(_localctx, 630, RULE_alterDatabaseClause);
32328 		int _la;
32329 		try {
32330 			setState(4593);
32331 			_errHandler.sync(this);
32332 			switch ( getInterpreter().adaptivePredict(_input,496,_ctx) ) {
32333 			case 1:
32334 				enterOuterAlt(_localctx, 1);
32335 				{
32336 				setState(4539);
32337 				match(MODIFY);
32338 				setState(4540);
32339 				match(NAME);
32340 				setState(4541);
32341 				match(EQ_);
32342 				setState(4542);
32343 				databaseName();
32344 				}
32345 				break;
32346 			case 2:
32347 				enterOuterAlt(_localctx, 2);
32348 				{
32349 				setState(4543);
32350 				match(COLLATE);
32351 				setState(4544);
32352 				ignoredIdentifier();
32353 				}
32354 				break;
32355 			case 3:
32356 				enterOuterAlt(_localctx, 3);
32357 				{
32358 				setState(4545);
32359 				fileAndFilegroupOptions();
32360 				}
32361 				break;
32362 			case 4:
32363 				enterOuterAlt(_localctx, 4);
32364 				{
32365 				setState(4546);
32366 				match(SET);
32367 				setState(4547);
32368 				alterDatabaseOptionSpec();
32369 				setState(4552);
32370 				_errHandler.sync(this);
32371 				_la = _input.LA(1);
32372 				while (_la==COMMA_) {
32373 					{
32374 					{
32375 					setState(4548);
32376 					match(COMMA_);
32377 					setState(4549);
32378 					alterDatabaseOptionSpec();
32379 					}
32380 					}
32381 					setState(4554);
32382 					_errHandler.sync(this);
32383 					_la = _input.LA(1);
32384 				}
32385 				setState(4557);
32386 				_errHandler.sync(this);
32387 				_la = _input.LA(1);
32388 				if (_la==WITH) {
32389 					{
32390 					setState(4555);
32391 					match(WITH);
32392 					setState(4556);
32393 					termination();
32394 					}
32395 				}
32396 
32397 				}
32398 				break;
32399 			case 5:
32400 				enterOuterAlt(_localctx, 5);
32401 				{
32402 				setState(4559);
32403 				match(MODIFY);
32404 				setState(4560);
32405 				match(LP_);
32406 				setState(4561);
32407 				editionOptions();
32408 				setState(4566);
32409 				_errHandler.sync(this);
32410 				_la = _input.LA(1);
32411 				while (_la==COMMA_) {
32412 					{
32413 					{
32414 					setState(4562);
32415 					match(COMMA_);
32416 					setState(4563);
32417 					editionOptions();
32418 					}
32419 					}
32420 					setState(4568);
32421 					_errHandler.sync(this);
32422 					_la = _input.LA(1);
32423 				}
32424 				setState(4569);
32425 				match(RP_);
32426 				}
32427 				break;
32428 			case 6:
32429 				enterOuterAlt(_localctx, 6);
32430 				{
32431 				setState(4571);
32432 				match(MODIFY);
32433 				setState(4572);
32434 				match(BACKUP_STORAGE_REDUNDANCY);
32435 				setState(4573);
32436 				match(EQ_);
32437 				setState(4574);
32438 				match(STRING_);
32439 				}
32440 				break;
32441 			case 7:
32442 				enterOuterAlt(_localctx, 7);
32443 				{
32444 				setState(4575);
32445 				match(ADD);
32446 				setState(4576);
32447 				match(SECONDARY);
32448 				setState(4577);
32449 				match(ON);
32450 				setState(4578);
32451 				match(SERVER);
32452 				setState(4579);
32453 				ignoredIdentifier();
32454 				setState(4589);
32455 				_errHandler.sync(this);
32456 				_la = _input.LA(1);
32457 				if (_la==WITH) {
32458 					{
32459 					setState(4580);
32460 					match(WITH);
32461 					setState(4581);
32462 					addSecondaryOption();
32463 					setState(4586);
32464 					_errHandler.sync(this);
32465 					_la = _input.LA(1);
32466 					while (_la==COMMA_) {
32467 						{
32468 						{
32469 						setState(4582);
32470 						match(COMMA_);
32471 						setState(4583);
32472 						addSecondaryOption();
32473 						}
32474 						}
32475 						setState(4588);
32476 						_errHandler.sync(this);
32477 						_la = _input.LA(1);
32478 					}
32479 					}
32480 				}
32481 
32482 				}
32483 				break;
32484 			case 8:
32485 				enterOuterAlt(_localctx, 8);
32486 				{
32487 				setState(4591);
32488 				match(FAILOVER);
32489 				}
32490 				break;
32491 			case 9:
32492 				enterOuterAlt(_localctx, 9);
32493 				{
32494 				setState(4592);
32495 				match(FORCE_FAILOVER_ALLOW_DATA_LOSS);
32496 				}
32497 				break;
32498 			}
32499 		}
32500 		catch (RecognitionException re) {
32501 			_localctx.exception = re;
32502 			_errHandler.reportError(this, re);
32503 			_errHandler.recover(this, re);
32504 		}
32505 		finally {
32506 			exitRule();
32507 		}
32508 		return _localctx;
32509 	}
32510 
32511 	public static class AddSecondaryOptionContext extends ParserRuleContext {
32512 		public Token SECONDARY_TYPE;
32513 		public TerminalNode ALLOW_CONNECTIONS() { return getToken(SQLServerStatementParser.ALLOW_CONNECTIONS, 0); }
32514 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
32515 		public TerminalNode EQ_(int i) {
32516 			return getToken(SQLServerStatementParser.EQ_, i);
32517 		}
32518 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
32519 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
32520 		public TerminalNode SERVICE_OBJECTIVE() { return getToken(SQLServerStatementParser.SERVICE_OBJECTIVE, 0); }
32521 		public ServiceObjectiveContext serviceObjective() {
32522 			return getRuleContext(ServiceObjectiveContext.class,0);
32523 		}
32524 		public TerminalNode DATABASE_NAME() { return getToken(SQLServerStatementParser.DATABASE_NAME, 0); }
32525 		public DatabaseNameContext databaseName() {
32526 			return getRuleContext(DatabaseNameContext.class,0);
32527 		}
32528 		public TerminalNode GEO() { return getToken(SQLServerStatementParser.GEO, 0); }
32529 		public TerminalNode NAMED() { return getToken(SQLServerStatementParser.NAMED, 0); }
32530 		public AddSecondaryOptionContext(ParserRuleContext parent, int invokingState) {
32531 			super(parent, invokingState);
32532 		}
32533 		@Override public int getRuleIndex() { return RULE_addSecondaryOption; }
32534 		@Override
32535 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32536 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddSecondaryOption(this);
32537 			else return visitor.visitChildren(this);
32538 		}
32539 	}
32540 
32541 	public final AddSecondaryOptionContext addSecondaryOption() throws RecognitionException {
32542 		AddSecondaryOptionContext _localctx = new AddSecondaryOptionContext(_ctx, getState());
32543 		enterRule(_localctx, 632, RULE_addSecondaryOption);
32544 		int _la;
32545 		try {
32546 			setState(4607);
32547 			_errHandler.sync(this);
32548 			switch (_input.LA(1)) {
32549 			case ALLOW_CONNECTIONS:
32550 				enterOuterAlt(_localctx, 1);
32551 				{
32552 				setState(4595);
32553 				match(ALLOW_CONNECTIONS);
32554 				setState(4596);
32555 				match(EQ_);
32556 				setState(4597);
32557 				_la = _input.LA(1);
32558 				if ( !(_la==ALL || _la==NO) ) {
32559 				_errHandler.recoverInline(this);
32560 				}
32561 				else {
32562 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32563 					_errHandler.reportMatch(this);
32564 					consume();
32565 				}
32566 				}
32567 				break;
32568 			case SERVICE_OBJECTIVE:
32569 				enterOuterAlt(_localctx, 2);
32570 				{
32571 				setState(4598);
32572 				match(SERVICE_OBJECTIVE);
32573 				setState(4599);
32574 				match(EQ_);
32575 				setState(4605);
32576 				_errHandler.sync(this);
32577 				switch (_input.LA(1)) {
32578 				case ELASTIC_POOL:
32579 				case STRING_:
32580 					{
32581 					setState(4600);
32582 					serviceObjective();
32583 					}
32584 					break;
32585 				case DATABASE_NAME:
32586 					{
32587 					setState(4601);
32588 					match(DATABASE_NAME);
32589 					setState(4602);
32590 					match(EQ_);
32591 					setState(4603);
32592 					databaseName();
32593 					}
32594 					break;
32595 				case GEO:
32596 				case NAMED:
32597 					{
32598 					setState(4604);
32599 					((AddSecondaryOptionContext)_localctx).SECONDARY_TYPE = _input.LT(1);
32600 					_la = _input.LA(1);
32601 					if ( !(_la==GEO || _la==NAMED) ) {
32602 						((AddSecondaryOptionContext)_localctx).SECONDARY_TYPE = (Token)_errHandler.recoverInline(this);
32603 					}
32604 					else {
32605 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32606 						_errHandler.reportMatch(this);
32607 						consume();
32608 					}
32609 					}
32610 					break;
32611 				default:
32612 					throw new NoViableAltException(this);
32613 				}
32614 				}
32615 				break;
32616 			default:
32617 				throw new NoViableAltException(this);
32618 			}
32619 		}
32620 		catch (RecognitionException re) {
32621 			_localctx.exception = re;
32622 			_errHandler.reportError(this, re);
32623 			_errHandler.recover(this, re);
32624 		}
32625 		finally {
32626 			exitRule();
32627 		}
32628 		return _localctx;
32629 	}
32630 
32631 	public static class EditionOptionsContext extends ParserRuleContext {
32632 		public TerminalNode MAXSIZE() { return getToken(SQLServerStatementParser.MAXSIZE, 0); }
32633 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32634 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
32635 		public TerminalNode MB() { return getToken(SQLServerStatementParser.MB, 0); }
32636 		public TerminalNode GB() { return getToken(SQLServerStatementParser.GB, 0); }
32637 		public TerminalNode EDITION() { return getToken(SQLServerStatementParser.EDITION, 0); }
32638 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
32639 		public TerminalNode SERVICE_OBJECTIVE() { return getToken(SQLServerStatementParser.SERVICE_OBJECTIVE, 0); }
32640 		public ServiceObjectiveContext serviceObjective() {
32641 			return getRuleContext(ServiceObjectiveContext.class,0);
32642 		}
32643 		public EditionOptionsContext(ParserRuleContext parent, int invokingState) {
32644 			super(parent, invokingState);
32645 		}
32646 		@Override public int getRuleIndex() { return RULE_editionOptions; }
32647 		@Override
32648 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32649 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEditionOptions(this);
32650 			else return visitor.visitChildren(this);
32651 		}
32652 	}
32653 
32654 	public final EditionOptionsContext editionOptions() throws RecognitionException {
32655 		EditionOptionsContext _localctx = new EditionOptionsContext(_ctx, getState());
32656 		enterRule(_localctx, 634, RULE_editionOptions);
32657 		int _la;
32658 		try {
32659 			setState(4622);
32660 			_errHandler.sync(this);
32661 			switch (_input.LA(1)) {
32662 			case MAXSIZE:
32663 				enterOuterAlt(_localctx, 1);
32664 				{
32665 				setState(4609);
32666 				match(MAXSIZE);
32667 				setState(4610);
32668 				match(EQ_);
32669 				setState(4611);
32670 				match(NUMBER_);
32671 				setState(4612);
32672 				_la = _input.LA(1);
32673 				if ( !(_la==MB || _la==GB) ) {
32674 				_errHandler.recoverInline(this);
32675 				}
32676 				else {
32677 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32678 					_errHandler.reportMatch(this);
32679 					consume();
32680 				}
32681 				}
32682 				break;
32683 			case EDITION:
32684 				enterOuterAlt(_localctx, 2);
32685 				{
32686 				setState(4613);
32687 				match(EDITION);
32688 				setState(4614);
32689 				match(EQ_);
32690 				setState(4615);
32691 				match(STRING_);
32692 				}
32693 				break;
32694 			case SERVICE_OBJECTIVE:
32695 				enterOuterAlt(_localctx, 3);
32696 				{
32697 				setState(4616);
32698 				match(SERVICE_OBJECTIVE);
32699 				setState(4617);
32700 				match(EQ_);
32701 				setState(4620);
32702 				_errHandler.sync(this);
32703 				switch ( getInterpreter().adaptivePredict(_input,499,_ctx) ) {
32704 				case 1:
32705 					{
32706 					setState(4618);
32707 					match(STRING_);
32708 					}
32709 					break;
32710 				case 2:
32711 					{
32712 					setState(4619);
32713 					serviceObjective();
32714 					}
32715 					break;
32716 				}
32717 				}
32718 				break;
32719 			default:
32720 				throw new NoViableAltException(this);
32721 			}
32722 		}
32723 		catch (RecognitionException re) {
32724 			_localctx.exception = re;
32725 			_errHandler.reportError(this, re);
32726 			_errHandler.recover(this, re);
32727 		}
32728 		finally {
32729 			exitRule();
32730 		}
32731 		return _localctx;
32732 	}
32733 
32734 	public static class ServiceObjectiveContext extends ParserRuleContext {
32735 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
32736 		public TerminalNode ELASTIC_POOL() { return getToken(SQLServerStatementParser.ELASTIC_POOL, 0); }
32737 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32738 		public IgnoredIdentifierContext ignoredIdentifier() {
32739 			return getRuleContext(IgnoredIdentifierContext.class,0);
32740 		}
32741 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32742 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32743 		public ServiceObjectiveContext(ParserRuleContext parent, int invokingState) {
32744 			super(parent, invokingState);
32745 		}
32746 		@Override public int getRuleIndex() { return RULE_serviceObjective; }
32747 		@Override
32748 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32749 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceObjective(this);
32750 			else return visitor.visitChildren(this);
32751 		}
32752 	}
32753 
32754 	public final ServiceObjectiveContext serviceObjective() throws RecognitionException {
32755 		ServiceObjectiveContext _localctx = new ServiceObjectiveContext(_ctx, getState());
32756 		enterRule(_localctx, 636, RULE_serviceObjective);
32757 		try {
32758 			setState(4632);
32759 			_errHandler.sync(this);
32760 			switch (_input.LA(1)) {
32761 			case STRING_:
32762 				enterOuterAlt(_localctx, 1);
32763 				{
32764 				setState(4624);
32765 				match(STRING_);
32766 				}
32767 				break;
32768 			case ELASTIC_POOL:
32769 				enterOuterAlt(_localctx, 2);
32770 				{
32771 				setState(4625);
32772 				match(ELASTIC_POOL);
32773 				setState(4626);
32774 				match(LP_);
32775 				setState(4627);
32776 				ignoredIdentifier();
32777 				setState(4628);
32778 				match(EQ_);
32779 				setState(4629);
32780 				match(STRING_);
32781 				setState(4630);
32782 				match(RP_);
32783 				}
32784 				break;
32785 			default:
32786 				throw new NoViableAltException(this);
32787 			}
32788 		}
32789 		catch (RecognitionException re) {
32790 			_localctx.exception = re;
32791 			_errHandler.reportError(this, re);
32792 			_errHandler.recover(this, re);
32793 		}
32794 		finally {
32795 			exitRule();
32796 		}
32797 		return _localctx;
32798 	}
32799 
32800 	public static class AlterDatabaseOptionSpecContext extends ParserRuleContext {
32801 		public AcceleratedDatabaseRecoveryContext acceleratedDatabaseRecovery() {
32802 			return getRuleContext(AcceleratedDatabaseRecoveryContext.class,0);
32803 		}
32804 		public AutoOptionContext autoOption() {
32805 			return getRuleContext(AutoOptionContext.class,0);
32806 		}
32807 		public AutomaticTuningOptionContext automaticTuningOption() {
32808 			return getRuleContext(AutomaticTuningOptionContext.class,0);
32809 		}
32810 		public ChangeTrackingOptionContext changeTrackingOption() {
32811 			return getRuleContext(ChangeTrackingOptionContext.class,0);
32812 		}
32813 		public TerminalNode CONTAINMENT() { return getToken(SQLServerStatementParser.CONTAINMENT, 0); }
32814 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
32815 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
32816 		public TerminalNode PARTIAL() { return getToken(SQLServerStatementParser.PARTIAL, 0); }
32817 		public CursorOptionContext cursorOption() {
32818 			return getRuleContext(CursorOptionContext.class,0);
32819 		}
32820 		public TerminalNode DATE_CORRELATION_OPTIMIZATION() { return getToken(SQLServerStatementParser.DATE_CORRELATION_OPTIMIZATION, 0); }
32821 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
32822 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
32823 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
32824 		public TerminalNode SUSPEND() { return getToken(SQLServerStatementParser.SUSPEND, 0); }
32825 		public TerminalNode RESUME() { return getToken(SQLServerStatementParser.RESUME, 0); }
32826 		public TerminalNode ONLINE() { return getToken(SQLServerStatementParser.ONLINE, 0); }
32827 		public TerminalNode OFFLINE() { return getToken(SQLServerStatementParser.OFFLINE, 0); }
32828 		public TerminalNode EMERGENCY() { return getToken(SQLServerStatementParser.EMERGENCY, 0); }
32829 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
32830 		public TerminalNode READ_WRITE() { return getToken(SQLServerStatementParser.READ_WRITE, 0); }
32831 		public TerminalNode SINGLE_USER() { return getToken(SQLServerStatementParser.SINGLE_USER, 0); }
32832 		public TerminalNode RESTRICTED_USER() { return getToken(SQLServerStatementParser.RESTRICTED_USER, 0); }
32833 		public TerminalNode MULTI_USER() { return getToken(SQLServerStatementParser.MULTI_USER, 0); }
32834 		public TerminalNode DELAYED_DURABILITY() { return getToken(SQLServerStatementParser.DELAYED_DURABILITY, 0); }
32835 		public TerminalNode DISABLED() { return getToken(SQLServerStatementParser.DISABLED, 0); }
32836 		public TerminalNode ALLOWED() { return getToken(SQLServerStatementParser.ALLOWED, 0); }
32837 		public TerminalNode FORCED() { return getToken(SQLServerStatementParser.FORCED, 0); }
32838 		public ExternalAccessOptionContext externalAccessOption() {
32839 			return getRuleContext(ExternalAccessOptionContext.class,0);
32840 		}
32841 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
32842 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
32843 		public FileStreamOptionContext fileStreamOption() {
32844 			return getRuleContext(FileStreamOptionContext.class,0);
32845 		}
32846 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
32847 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
32848 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
32849 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
32850 		public TerminalNode HADR() { return getToken(SQLServerStatementParser.HADR, 0); }
32851 		public TerminalNode MIXED_PAGE_ALLOCATION() { return getToken(SQLServerStatementParser.MIXED_PAGE_ALLOCATION, 0); }
32852 		public TerminalNode PARAMETERIZATION() { return getToken(SQLServerStatementParser.PARAMETERIZATION, 0); }
32853 		public TerminalNode SIMPLE() { return getToken(SQLServerStatementParser.SIMPLE, 0); }
32854 		public QueryStoreOptionsContext queryStoreOptions() {
32855 			return getRuleContext(QueryStoreOptionsContext.class,0);
32856 		}
32857 		public RecoveryOptionContext recoveryOption() {
32858 			return getRuleContext(RecoveryOptionContext.class,0);
32859 		}
32860 		public ServiceBrokerOptionContext serviceBrokerOption() {
32861 			return getRuleContext(ServiceBrokerOptionContext.class,0);
32862 		}
32863 		public SnapshotOptionContext snapshotOption() {
32864 			return getRuleContext(SnapshotOptionContext.class,0);
32865 		}
32866 		public SqlOptionContext sqlOption() {
32867 			return getRuleContext(SqlOptionContext.class,0);
32868 		}
32869 		public TargetRecoveryTimeOptionContext targetRecoveryTimeOption() {
32870 			return getRuleContext(TargetRecoveryTimeOptionContext.class,0);
32871 		}
32872 		public TerminationContext termination() {
32873 			return getRuleContext(TerminationContext.class,0);
32874 		}
32875 		public TerminalNode TEMPORAL_HISTORY_RETENTION() { return getToken(SQLServerStatementParser.TEMPORAL_HISTORY_RETENTION, 0); }
32876 		public TerminalNode DATA_RETENTION() { return getToken(SQLServerStatementParser.DATA_RETENTION, 0); }
32877 		public AlterDatabaseOptionSpecContext(ParserRuleContext parent, int invokingState) {
32878 			super(parent, invokingState);
32879 		}
32880 		@Override public int getRuleIndex() { return RULE_alterDatabaseOptionSpec; }
32881 		@Override
32882 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
32883 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterDatabaseOptionSpec(this);
32884 			else return visitor.visitChildren(this);
32885 		}
32886 	}
32887 
32888 	public final AlterDatabaseOptionSpecContext alterDatabaseOptionSpec() throws RecognitionException {
32889 		AlterDatabaseOptionSpecContext _localctx = new AlterDatabaseOptionSpecContext(_ctx, getState());
32890 		enterRule(_localctx, 638, RULE_alterDatabaseOptionSpec);
32891 		int _la;
32892 		try {
32893 			setState(4677);
32894 			_errHandler.sync(this);
32895 			switch (_input.LA(1)) {
32896 			case ACCELERATED_DATABASE_RECOVERY:
32897 				enterOuterAlt(_localctx, 1);
32898 				{
32899 				setState(4634);
32900 				acceleratedDatabaseRecovery();
32901 				}
32902 				break;
32903 			case AUTO_UPDATE_STATISTICS_ASYNC:
32904 			case AUTO_UPDATE_STATISTICS:
32905 			case AUTO_SHRINK:
32906 			case AUTO_CREATE_STATISTICS:
32907 			case AUTO_CLOSE:
32908 				enterOuterAlt(_localctx, 2);
32909 				{
32910 				setState(4635);
32911 				autoOption();
32912 				}
32913 				break;
32914 			case AUTOMATIC_TUNING:
32915 				enterOuterAlt(_localctx, 3);
32916 				{
32917 				setState(4636);
32918 				automaticTuningOption();
32919 				}
32920 				break;
32921 			case CHANGE_TRACKING:
32922 				enterOuterAlt(_localctx, 4);
32923 				{
32924 				setState(4637);
32925 				changeTrackingOption();
32926 				}
32927 				break;
32928 			case CONTAINMENT:
32929 				enterOuterAlt(_localctx, 5);
32930 				{
32931 				setState(4638);
32932 				match(CONTAINMENT);
32933 				setState(4639);
32934 				match(EQ_);
32935 				setState(4640);
32936 				_la = _input.LA(1);
32937 				if ( !(_la==NONE || _la==PARTIAL) ) {
32938 				_errHandler.recoverInline(this);
32939 				}
32940 				else {
32941 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32942 					_errHandler.reportMatch(this);
32943 					consume();
32944 				}
32945 				}
32946 				break;
32947 			case CURSOR_DEFAULT:
32948 			case CURSOR_CLOSE_ON_COMMIT:
32949 				enterOuterAlt(_localctx, 6);
32950 				{
32951 				setState(4641);
32952 				cursorOption();
32953 				}
32954 				break;
32955 			case DATE_CORRELATION_OPTIMIZATION:
32956 				enterOuterAlt(_localctx, 7);
32957 				{
32958 				setState(4642);
32959 				match(DATE_CORRELATION_OPTIMIZATION);
32960 				setState(4643);
32961 				_la = _input.LA(1);
32962 				if ( !(_la==ON || _la==OFF) ) {
32963 				_errHandler.recoverInline(this);
32964 				}
32965 				else {
32966 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32967 					_errHandler.reportMatch(this);
32968 					consume();
32969 				}
32970 				}
32971 				break;
32972 			case ENCRYPTION:
32973 				enterOuterAlt(_localctx, 8);
32974 				{
32975 				setState(4644);
32976 				match(ENCRYPTION);
32977 				setState(4645);
32978 				_la = _input.LA(1);
32979 				if ( !(_la==ON || _la==OFF || _la==RESUME || _la==SUSPEND) ) {
32980 				_errHandler.recoverInline(this);
32981 				}
32982 				else {
32983 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
32984 					_errHandler.reportMatch(this);
32985 					consume();
32986 				}
32987 				}
32988 				break;
32989 			case ONLINE:
32990 			case OFFLINE:
32991 			case EMERGENCY:
32992 				enterOuterAlt(_localctx, 9);
32993 				{
32994 				setState(4646);
32995 				_la = _input.LA(1);
32996 				if ( !(_la==ONLINE || _la==OFFLINE || _la==EMERGENCY) ) {
32997 				_errHandler.recoverInline(this);
32998 				}
32999 				else {
33000 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33001 					_errHandler.reportMatch(this);
33002 					consume();
33003 				}
33004 				}
33005 				break;
33006 			case READ_ONLY:
33007 			case READ_WRITE:
33008 				enterOuterAlt(_localctx, 10);
33009 				{
33010 				setState(4647);
33011 				_la = _input.LA(1);
33012 				if ( !(_la==READ_ONLY || _la==READ_WRITE) ) {
33013 				_errHandler.recoverInline(this);
33014 				}
33015 				else {
33016 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33017 					_errHandler.reportMatch(this);
33018 					consume();
33019 				}
33020 				}
33021 				break;
33022 			case MULTI_USER:
33023 			case RESTRICTED_USER:
33024 			case SINGLE_USER:
33025 				enterOuterAlt(_localctx, 11);
33026 				{
33027 				setState(4648);
33028 				_la = _input.LA(1);
33029 				if ( !(((((_la - 639)) & ~0x3f) == 0 && ((1L << (_la - 639)) & ((1L << (MULTI_USER - 639)) | (1L << (RESTRICTED_USER - 639)) | (1L << (SINGLE_USER - 639)))) != 0)) ) {
33030 				_errHandler.recoverInline(this);
33031 				}
33032 				else {
33033 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33034 					_errHandler.reportMatch(this);
33035 					consume();
33036 				}
33037 				}
33038 				break;
33039 			case DELAYED_DURABILITY:
33040 				enterOuterAlt(_localctx, 12);
33041 				{
33042 				setState(4649);
33043 				match(DELAYED_DURABILITY);
33044 				setState(4650);
33045 				match(EQ_);
33046 				setState(4651);
33047 				_la = _input.LA(1);
33048 				if ( !(_la==FORCED || _la==DISABLED || _la==ALLOWED) ) {
33049 				_errHandler.recoverInline(this);
33050 				}
33051 				else {
33052 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33053 					_errHandler.reportMatch(this);
33054 					consume();
33055 				}
33056 				}
33057 				break;
33058 			case DB_CHAINING:
33059 			case TRUSTWORTHY:
33060 			case DEFAULT_FULLTEXT_LANGUAGE:
33061 			case DEFAULT_LANGUAGE:
33062 			case NESTED_TRIGGERS:
33063 			case TRANSFORM_NOISE_WORDS:
33064 			case TWO_DIGIT_YEAR_CUTOFF:
33065 				enterOuterAlt(_localctx, 13);
33066 				{
33067 				setState(4652);
33068 				externalAccessOption();
33069 				}
33070 				break;
33071 			case FILESTREAM:
33072 				enterOuterAlt(_localctx, 14);
33073 				{
33074 				setState(4653);
33075 				match(FILESTREAM);
33076 				setState(4654);
33077 				match(LP_);
33078 				setState(4655);
33079 				fileStreamOption();
33080 				setState(4656);
33081 				match(RP_);
33082 				}
33083 				break;
33084 			case ALTER:
33085 				enterOuterAlt(_localctx, 15);
33086 				{
33087 				setState(4658);
33088 				match(ALTER);
33089 				setState(4659);
33090 				match(DATABASE);
33091 				setState(4660);
33092 				match(SET);
33093 				setState(4661);
33094 				match(HADR);
33095 				}
33096 				break;
33097 			case MIXED_PAGE_ALLOCATION:
33098 				enterOuterAlt(_localctx, 16);
33099 				{
33100 				setState(4662);
33101 				match(MIXED_PAGE_ALLOCATION);
33102 				setState(4663);
33103 				_la = _input.LA(1);
33104 				if ( !(_la==ON || _la==OFF) ) {
33105 				_errHandler.recoverInline(this);
33106 				}
33107 				else {
33108 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33109 					_errHandler.reportMatch(this);
33110 					consume();
33111 				}
33112 				}
33113 				break;
33114 			case PARAMETERIZATION:
33115 				enterOuterAlt(_localctx, 17);
33116 				{
33117 				setState(4664);
33118 				match(PARAMETERIZATION);
33119 				setState(4665);
33120 				_la = _input.LA(1);
33121 				if ( !(_la==SIMPLE || _la==FORCED) ) {
33122 				_errHandler.recoverInline(this);
33123 				}
33124 				else {
33125 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33126 					_errHandler.reportMatch(this);
33127 					consume();
33128 				}
33129 				}
33130 				break;
33131 			case QUERY_STORE:
33132 				enterOuterAlt(_localctx, 18);
33133 				{
33134 				setState(4666);
33135 				queryStoreOptions();
33136 				}
33137 				break;
33138 			case PAGE_VERIFY:
33139 			case TORN_PAGE_DETECTION:
33140 			case RECOVERY:
33141 				enterOuterAlt(_localctx, 19);
33142 				{
33143 				setState(4667);
33144 				recoveryOption();
33145 				}
33146 				break;
33147 			case HONOR_BROKER_PRIORITY:
33148 			case ERROR_BROKER_CONVERSATIONS:
33149 			case NEW_BROKER:
33150 			case DISABLE_BROKER:
33151 			case ENABLE_BROKER:
33152 				enterOuterAlt(_localctx, 20);
33153 				{
33154 				setState(4668);
33155 				serviceBrokerOption();
33156 				}
33157 				break;
33158 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
33159 			case READ_COMMITTED_SNAPSHOT:
33160 			case ALLOW_SNAPSHOT_ISOLATION:
33161 				enterOuterAlt(_localctx, 21);
33162 				{
33163 				setState(4669);
33164 				snapshotOption();
33165 				}
33166 				break;
33167 			case RECURSIVE_TRIGGERS:
33168 			case QUOTED_IDENTIFIER:
33169 			case NUMERIC_ROUNDABORT:
33170 			case CONCAT_NULL_YIELDS_NULL:
33171 			case COMPATIBILITY_LEVEL:
33172 			case ARITHABORT:
33173 			case ANSI_WARNINGS:
33174 			case ANSI_PADDING:
33175 			case ANSI_NULLS:
33176 			case ANSI_NULL_DEFAULT:
33177 				enterOuterAlt(_localctx, 22);
33178 				{
33179 				setState(4670);
33180 				sqlOption();
33181 				}
33182 				break;
33183 			case TARGET_RECOVERY_TIME:
33184 				enterOuterAlt(_localctx, 23);
33185 				{
33186 				setState(4671);
33187 				targetRecoveryTimeOption();
33188 				}
33189 				break;
33190 			case ROLLBACK:
33191 			case NO_WAIT:
33192 				enterOuterAlt(_localctx, 24);
33193 				{
33194 				setState(4672);
33195 				termination();
33196 				}
33197 				break;
33198 			case TEMPORAL_HISTORY_RETENTION:
33199 				enterOuterAlt(_localctx, 25);
33200 				{
33201 				setState(4673);
33202 				match(TEMPORAL_HISTORY_RETENTION);
33203 				setState(4674);
33204 				_la = _input.LA(1);
33205 				if ( !(_la==ON || _la==OFF) ) {
33206 				_errHandler.recoverInline(this);
33207 				}
33208 				else {
33209 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33210 					_errHandler.reportMatch(this);
33211 					consume();
33212 				}
33213 				}
33214 				break;
33215 			case DATA_RETENTION:
33216 				enterOuterAlt(_localctx, 26);
33217 				{
33218 				setState(4675);
33219 				match(DATA_RETENTION);
33220 				setState(4676);
33221 				_la = _input.LA(1);
33222 				if ( !(_la==ON || _la==OFF) ) {
33223 				_errHandler.recoverInline(this);
33224 				}
33225 				else {
33226 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33227 					_errHandler.reportMatch(this);
33228 					consume();
33229 				}
33230 				}
33231 				break;
33232 			default:
33233 				throw new NoViableAltException(this);
33234 			}
33235 		}
33236 		catch (RecognitionException re) {
33237 			_localctx.exception = re;
33238 			_errHandler.reportError(this, re);
33239 			_errHandler.recover(this, re);
33240 		}
33241 		finally {
33242 			exitRule();
33243 		}
33244 		return _localctx;
33245 	}
33246 
33247 	public static class FileAndFilegroupOptionsContext extends ParserRuleContext {
33248 		public AddOrModifyFilesContext addOrModifyFiles() {
33249 			return getRuleContext(AddOrModifyFilesContext.class,0);
33250 		}
33251 		public FileSpecContext fileSpec() {
33252 			return getRuleContext(FileSpecContext.class,0);
33253 		}
33254 		public AddOrModifyFilegroupsContext addOrModifyFilegroups() {
33255 			return getRuleContext(AddOrModifyFilegroupsContext.class,0);
33256 		}
33257 		public FilegroupUpdatabilityOptionContext filegroupUpdatabilityOption() {
33258 			return getRuleContext(FilegroupUpdatabilityOptionContext.class,0);
33259 		}
33260 		public FileAndFilegroupOptionsContext(ParserRuleContext parent, int invokingState) {
33261 			super(parent, invokingState);
33262 		}
33263 		@Override public int getRuleIndex() { return RULE_fileAndFilegroupOptions; }
33264 		@Override
33265 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33266 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFileAndFilegroupOptions(this);
33267 			else return visitor.visitChildren(this);
33268 		}
33269 	}
33270 
33271 	public final FileAndFilegroupOptionsContext fileAndFilegroupOptions() throws RecognitionException {
33272 		FileAndFilegroupOptionsContext _localctx = new FileAndFilegroupOptionsContext(_ctx, getState());
33273 		enterRule(_localctx, 640, RULE_fileAndFilegroupOptions);
33274 		try {
33275 			setState(4683);
33276 			_errHandler.sync(this);
33277 			switch ( getInterpreter().adaptivePredict(_input,503,_ctx) ) {
33278 			case 1:
33279 				enterOuterAlt(_localctx, 1);
33280 				{
33281 				setState(4679);
33282 				addOrModifyFiles();
33283 				}
33284 				break;
33285 			case 2:
33286 				enterOuterAlt(_localctx, 2);
33287 				{
33288 				setState(4680);
33289 				fileSpec();
33290 				}
33291 				break;
33292 			case 3:
33293 				enterOuterAlt(_localctx, 3);
33294 				{
33295 				setState(4681);
33296 				addOrModifyFilegroups();
33297 				}
33298 				break;
33299 			case 4:
33300 				enterOuterAlt(_localctx, 4);
33301 				{
33302 				setState(4682);
33303 				filegroupUpdatabilityOption();
33304 				}
33305 				break;
33306 			}
33307 		}
33308 		catch (RecognitionException re) {
33309 			_localctx.exception = re;
33310 			_errHandler.reportError(this, re);
33311 			_errHandler.recover(this, re);
33312 		}
33313 		finally {
33314 			exitRule();
33315 		}
33316 		return _localctx;
33317 	}
33318 
33319 	public static class AddOrModifyFilegroupsContext extends ParserRuleContext {
33320 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
33321 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
33322 		public IgnoredIdentifierContext ignoredIdentifier() {
33323 			return getRuleContext(IgnoredIdentifierContext.class,0);
33324 		}
33325 		public TerminalNode CONTAINS() { return getToken(SQLServerStatementParser.CONTAINS, 0); }
33326 		public TerminalNode FILESTREAM() { return getToken(SQLServerStatementParser.FILESTREAM, 0); }
33327 		public TerminalNode MEMORY_OPTIMIZED_DATA() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_DATA, 0); }
33328 		public TerminalNode REMOVE() { return getToken(SQLServerStatementParser.REMOVE, 0); }
33329 		public TerminalNode MODIFY() { return getToken(SQLServerStatementParser.MODIFY, 0); }
33330 		public FilegroupUpdatabilityOptionContext filegroupUpdatabilityOption() {
33331 			return getRuleContext(FilegroupUpdatabilityOptionContext.class,0);
33332 		}
33333 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
33334 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
33335 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33336 		public TerminalNode AUTOGROW_SINGLE_FILE() { return getToken(SQLServerStatementParser.AUTOGROW_SINGLE_FILE, 0); }
33337 		public TerminalNode AUTOGROW_ALL_FILES() { return getToken(SQLServerStatementParser.AUTOGROW_ALL_FILES, 0); }
33338 		public AddOrModifyFilegroupsContext(ParserRuleContext parent, int invokingState) {
33339 			super(parent, invokingState);
33340 		}
33341 		@Override public int getRuleIndex() { return RULE_addOrModifyFilegroups; }
33342 		@Override
33343 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33344 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddOrModifyFilegroups(this);
33345 			else return visitor.visitChildren(this);
33346 		}
33347 	}
33348 
33349 	public final AddOrModifyFilegroupsContext addOrModifyFilegroups() throws RecognitionException {
33350 		AddOrModifyFilegroupsContext _localctx = new AddOrModifyFilegroupsContext(_ctx, getState());
33351 		enterRule(_localctx, 642, RULE_addOrModifyFilegroups);
33352 		int _la;
33353 		try {
33354 			setState(4707);
33355 			_errHandler.sync(this);
33356 			switch (_input.LA(1)) {
33357 			case ADD:
33358 				enterOuterAlt(_localctx, 1);
33359 				{
33360 				setState(4685);
33361 				match(ADD);
33362 				setState(4686);
33363 				match(FILEGROUP);
33364 				setState(4687);
33365 				ignoredIdentifier();
33366 				setState(4692);
33367 				_errHandler.sync(this);
33368 				switch ( getInterpreter().adaptivePredict(_input,504,_ctx) ) {
33369 				case 1:
33370 					{
33371 					setState(4688);
33372 					match(CONTAINS);
33373 					setState(4689);
33374 					match(FILESTREAM);
33375 					}
33376 					break;
33377 				case 2:
33378 					{
33379 					setState(4690);
33380 					match(CONTAINS);
33381 					setState(4691);
33382 					match(MEMORY_OPTIMIZED_DATA);
33383 					}
33384 					break;
33385 				}
33386 				}
33387 				break;
33388 			case REMOVE:
33389 				enterOuterAlt(_localctx, 2);
33390 				{
33391 				setState(4694);
33392 				match(REMOVE);
33393 				setState(4695);
33394 				match(FILEGROUP);
33395 				setState(4696);
33396 				ignoredIdentifier();
33397 				}
33398 				break;
33399 			case MODIFY:
33400 				enterOuterAlt(_localctx, 3);
33401 				{
33402 				setState(4697);
33403 				match(MODIFY);
33404 				setState(4698);
33405 				match(FILEGROUP);
33406 				setState(4699);
33407 				ignoredIdentifier();
33408 				setState(4700);
33409 				filegroupUpdatabilityOption();
33410 				}
33411 				break;
33412 			case DEFAULT:
33413 				enterOuterAlt(_localctx, 4);
33414 				{
33415 				setState(4702);
33416 				match(DEFAULT);
33417 				}
33418 				break;
33419 			case NAME:
33420 				enterOuterAlt(_localctx, 5);
33421 				{
33422 				setState(4703);
33423 				match(NAME);
33424 				setState(4704);
33425 				match(EQ_);
33426 				setState(4705);
33427 				ignoredIdentifier();
33428 				}
33429 				break;
33430 			case AUTOGROW_SINGLE_FILE:
33431 			case AUTOGROW_ALL_FILES:
33432 				enterOuterAlt(_localctx, 6);
33433 				{
33434 				setState(4706);
33435 				_la = _input.LA(1);
33436 				if ( !(_la==AUTOGROW_SINGLE_FILE || _la==AUTOGROW_ALL_FILES) ) {
33437 				_errHandler.recoverInline(this);
33438 				}
33439 				else {
33440 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33441 					_errHandler.reportMatch(this);
33442 					consume();
33443 				}
33444 				}
33445 				break;
33446 			default:
33447 				throw new NoViableAltException(this);
33448 			}
33449 		}
33450 		catch (RecognitionException re) {
33451 			_localctx.exception = re;
33452 			_errHandler.reportError(this, re);
33453 			_errHandler.recover(this, re);
33454 		}
33455 		finally {
33456 			exitRule();
33457 		}
33458 		return _localctx;
33459 	}
33460 
33461 	public static class FilegroupUpdatabilityOptionContext extends ParserRuleContext {
33462 		public TerminalNode READONLY() { return getToken(SQLServerStatementParser.READONLY, 0); }
33463 		public TerminalNode READWRITE() { return getToken(SQLServerStatementParser.READWRITE, 0); }
33464 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
33465 		public TerminalNode READ_WRITE() { return getToken(SQLServerStatementParser.READ_WRITE, 0); }
33466 		public FilegroupUpdatabilityOptionContext(ParserRuleContext parent, int invokingState) {
33467 			super(parent, invokingState);
33468 		}
33469 		@Override public int getRuleIndex() { return RULE_filegroupUpdatabilityOption; }
33470 		@Override
33471 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33472 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFilegroupUpdatabilityOption(this);
33473 			else return visitor.visitChildren(this);
33474 		}
33475 	}
33476 
33477 	public final FilegroupUpdatabilityOptionContext filegroupUpdatabilityOption() throws RecognitionException {
33478 		FilegroupUpdatabilityOptionContext _localctx = new FilegroupUpdatabilityOptionContext(_ctx, getState());
33479 		enterRule(_localctx, 644, RULE_filegroupUpdatabilityOption);
33480 		int _la;
33481 		try {
33482 			setState(4711);
33483 			_errHandler.sync(this);
33484 			switch (_input.LA(1)) {
33485 			case READONLY:
33486 			case READWRITE:
33487 				enterOuterAlt(_localctx, 1);
33488 				{
33489 				setState(4709);
33490 				_la = _input.LA(1);
33491 				if ( !(_la==READONLY || _la==READWRITE) ) {
33492 				_errHandler.recoverInline(this);
33493 				}
33494 				else {
33495 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33496 					_errHandler.reportMatch(this);
33497 					consume();
33498 				}
33499 				}
33500 				break;
33501 			case READ_ONLY:
33502 			case READ_WRITE:
33503 				enterOuterAlt(_localctx, 2);
33504 				{
33505 				setState(4710);
33506 				_la = _input.LA(1);
33507 				if ( !(_la==READ_ONLY || _la==READ_WRITE) ) {
33508 				_errHandler.recoverInline(this);
33509 				}
33510 				else {
33511 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33512 					_errHandler.reportMatch(this);
33513 					consume();
33514 				}
33515 				}
33516 				break;
33517 			default:
33518 				throw new NoViableAltException(this);
33519 			}
33520 		}
33521 		catch (RecognitionException re) {
33522 			_localctx.exception = re;
33523 			_errHandler.reportError(this, re);
33524 			_errHandler.recover(this, re);
33525 		}
33526 		finally {
33527 			exitRule();
33528 		}
33529 		return _localctx;
33530 	}
33531 
33532 	public static class AddOrModifyFilesContext extends ParserRuleContext {
33533 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
33534 		public TerminalNode FILE() { return getToken(SQLServerStatementParser.FILE, 0); }
33535 		public List<FileSpecContext> fileSpec() {
33536 			return getRuleContexts(FileSpecContext.class);
33537 		}
33538 		public FileSpecContext fileSpec(int i) {
33539 			return getRuleContext(FileSpecContext.class,i);
33540 		}
33541 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
33542 		public TerminalNode COMMA_(int i) {
33543 			return getToken(SQLServerStatementParser.COMMA_, i);
33544 		}
33545 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
33546 		public TerminalNode FILEGROUP() { return getToken(SQLServerStatementParser.FILEGROUP, 0); }
33547 		public IgnoredIdentifierContext ignoredIdentifier() {
33548 			return getRuleContext(IgnoredIdentifierContext.class,0);
33549 		}
33550 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
33551 		public TerminalNode REMOVE() { return getToken(SQLServerStatementParser.REMOVE, 0); }
33552 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
33553 		public TerminalNode MODIFY() { return getToken(SQLServerStatementParser.MODIFY, 0); }
33554 		public AddOrModifyFilesContext(ParserRuleContext parent, int invokingState) {
33555 			super(parent, invokingState);
33556 		}
33557 		@Override public int getRuleIndex() { return RULE_addOrModifyFiles; }
33558 		@Override
33559 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33560 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAddOrModifyFiles(this);
33561 			else return visitor.visitChildren(this);
33562 		}
33563 	}
33564 
33565 	public final AddOrModifyFilesContext addOrModifyFiles() throws RecognitionException {
33566 		AddOrModifyFilesContext _localctx = new AddOrModifyFilesContext(_ctx, getState());
33567 		enterRule(_localctx, 646, RULE_addOrModifyFiles);
33568 		int _la;
33569 		try {
33570 			setState(4745);
33571 			_errHandler.sync(this);
33572 			switch ( getInterpreter().adaptivePredict(_input,510,_ctx) ) {
33573 			case 1:
33574 				enterOuterAlt(_localctx, 1);
33575 				{
33576 				setState(4713);
33577 				match(ADD);
33578 				setState(4714);
33579 				match(FILE);
33580 				setState(4715);
33581 				fileSpec();
33582 				setState(4720);
33583 				_errHandler.sync(this);
33584 				_la = _input.LA(1);
33585 				while (_la==COMMA_) {
33586 					{
33587 					{
33588 					setState(4716);
33589 					match(COMMA_);
33590 					setState(4717);
33591 					fileSpec();
33592 					}
33593 					}
33594 					setState(4722);
33595 					_errHandler.sync(this);
33596 					_la = _input.LA(1);
33597 				}
33598 				setState(4726);
33599 				_errHandler.sync(this);
33600 				_la = _input.LA(1);
33601 				if (_la==TO) {
33602 					{
33603 					setState(4723);
33604 					match(TO);
33605 					setState(4724);
33606 					match(FILEGROUP);
33607 					setState(4725);
33608 					ignoredIdentifier();
33609 					}
33610 				}
33611 
33612 				}
33613 				break;
33614 			case 2:
33615 				enterOuterAlt(_localctx, 2);
33616 				{
33617 				setState(4728);
33618 				match(ADD);
33619 				setState(4729);
33620 				match(LOG);
33621 				setState(4730);
33622 				match(FILE);
33623 				setState(4731);
33624 				fileSpec();
33625 				setState(4736);
33626 				_errHandler.sync(this);
33627 				_la = _input.LA(1);
33628 				while (_la==COMMA_) {
33629 					{
33630 					{
33631 					setState(4732);
33632 					match(COMMA_);
33633 					setState(4733);
33634 					fileSpec();
33635 					}
33636 					}
33637 					setState(4738);
33638 					_errHandler.sync(this);
33639 					_la = _input.LA(1);
33640 				}
33641 				}
33642 				break;
33643 			case 3:
33644 				enterOuterAlt(_localctx, 3);
33645 				{
33646 				setState(4739);
33647 				match(REMOVE);
33648 				setState(4740);
33649 				match(FILE);
33650 				setState(4741);
33651 				match(STRING_);
33652 				}
33653 				break;
33654 			case 4:
33655 				enterOuterAlt(_localctx, 4);
33656 				{
33657 				setState(4742);
33658 				match(MODIFY);
33659 				setState(4743);
33660 				match(FILE);
33661 				setState(4744);
33662 				fileSpec();
33663 				}
33664 				break;
33665 			}
33666 		}
33667 		catch (RecognitionException re) {
33668 			_localctx.exception = re;
33669 			_errHandler.reportError(this, re);
33670 			_errHandler.recover(this, re);
33671 		}
33672 		finally {
33673 			exitRule();
33674 		}
33675 		return _localctx;
33676 	}
33677 
33678 	public static class AcceleratedDatabaseRecoveryContext extends ParserRuleContext {
33679 		public TerminalNode ACCELERATED_DATABASE_RECOVERY() { return getToken(SQLServerStatementParser.ACCELERATED_DATABASE_RECOVERY, 0); }
33680 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
33681 		public TerminalNode EQ_(int i) {
33682 			return getToken(SQLServerStatementParser.EQ_, i);
33683 		}
33684 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33685 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33686 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
33687 		public TerminalNode PERSISTENT_VERSION_STORE_FILEGROUP() { return getToken(SQLServerStatementParser.PERSISTENT_VERSION_STORE_FILEGROUP, 0); }
33688 		public IgnoredIdentifierContext ignoredIdentifier() {
33689 			return getRuleContext(IgnoredIdentifierContext.class,0);
33690 		}
33691 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
33692 		public AcceleratedDatabaseRecoveryContext(ParserRuleContext parent, int invokingState) {
33693 			super(parent, invokingState);
33694 		}
33695 		@Override public int getRuleIndex() { return RULE_acceleratedDatabaseRecovery; }
33696 		@Override
33697 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33698 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAcceleratedDatabaseRecovery(this);
33699 			else return visitor.visitChildren(this);
33700 		}
33701 	}
33702 
33703 	public final AcceleratedDatabaseRecoveryContext acceleratedDatabaseRecovery() throws RecognitionException {
33704 		AcceleratedDatabaseRecoveryContext _localctx = new AcceleratedDatabaseRecoveryContext(_ctx, getState());
33705 		enterRule(_localctx, 648, RULE_acceleratedDatabaseRecovery);
33706 		int _la;
33707 		try {
33708 			enterOuterAlt(_localctx, 1);
33709 			{
33710 			setState(4747);
33711 			match(ACCELERATED_DATABASE_RECOVERY);
33712 			setState(4748);
33713 			match(EQ_);
33714 			setState(4749);
33715 			_la = _input.LA(1);
33716 			if ( !(_la==ON || _la==OFF) ) {
33717 			_errHandler.recoverInline(this);
33718 			}
33719 			else {
33720 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33721 				_errHandler.reportMatch(this);
33722 				consume();
33723 			}
33724 			setState(4756);
33725 			_errHandler.sync(this);
33726 			switch ( getInterpreter().adaptivePredict(_input,511,_ctx) ) {
33727 			case 1:
33728 				{
33729 				setState(4750);
33730 				match(LP_);
33731 				setState(4751);
33732 				match(PERSISTENT_VERSION_STORE_FILEGROUP);
33733 				setState(4752);
33734 				match(EQ_);
33735 				setState(4753);
33736 				ignoredIdentifier();
33737 				setState(4754);
33738 				match(RP_);
33739 				}
33740 				break;
33741 			}
33742 			}
33743 		}
33744 		catch (RecognitionException re) {
33745 			_localctx.exception = re;
33746 			_errHandler.reportError(this, re);
33747 			_errHandler.recover(this, re);
33748 		}
33749 		finally {
33750 			exitRule();
33751 		}
33752 		return _localctx;
33753 	}
33754 
33755 	public static class AutoOptionContext extends ParserRuleContext {
33756 		public TerminalNode AUTO_CLOSE() { return getToken(SQLServerStatementParser.AUTO_CLOSE, 0); }
33757 		public List<TerminalNode> ON() { return getTokens(SQLServerStatementParser.ON); }
33758 		public TerminalNode ON(int i) {
33759 			return getToken(SQLServerStatementParser.ON, i);
33760 		}
33761 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33762 		public TerminalNode AUTO_CREATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_CREATE_STATISTICS, 0); }
33763 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
33764 		public TerminalNode INCREMENTAL() { return getToken(SQLServerStatementParser.INCREMENTAL, 0); }
33765 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33766 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
33767 		public TerminalNode AUTO_SHRINK() { return getToken(SQLServerStatementParser.AUTO_SHRINK, 0); }
33768 		public TerminalNode AUTO_UPDATE_STATISTICS() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS, 0); }
33769 		public TerminalNode AUTO_UPDATE_STATISTICS_ASYNC() { return getToken(SQLServerStatementParser.AUTO_UPDATE_STATISTICS_ASYNC, 0); }
33770 		public AutoOptionContext(ParserRuleContext parent, int invokingState) {
33771 			super(parent, invokingState);
33772 		}
33773 		@Override public int getRuleIndex() { return RULE_autoOption; }
33774 		@Override
33775 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33776 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAutoOption(this);
33777 			else return visitor.visitChildren(this);
33778 		}
33779 	}
33780 
33781 	public final AutoOptionContext autoOption() throws RecognitionException {
33782 		AutoOptionContext _localctx = new AutoOptionContext(_ctx, getState());
33783 		enterRule(_localctx, 650, RULE_autoOption);
33784 		int _la;
33785 		try {
33786 			setState(4778);
33787 			_errHandler.sync(this);
33788 			switch (_input.LA(1)) {
33789 			case AUTO_CLOSE:
33790 				enterOuterAlt(_localctx, 1);
33791 				{
33792 				setState(4758);
33793 				match(AUTO_CLOSE);
33794 				setState(4759);
33795 				_la = _input.LA(1);
33796 				if ( !(_la==ON || _la==OFF) ) {
33797 				_errHandler.recoverInline(this);
33798 				}
33799 				else {
33800 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33801 					_errHandler.reportMatch(this);
33802 					consume();
33803 				}
33804 				}
33805 				break;
33806 			case AUTO_CREATE_STATISTICS:
33807 				enterOuterAlt(_localctx, 2);
33808 				{
33809 				setState(4760);
33810 				match(AUTO_CREATE_STATISTICS);
33811 				setState(4770);
33812 				_errHandler.sync(this);
33813 				switch (_input.LA(1)) {
33814 				case OFF:
33815 					{
33816 					setState(4761);
33817 					match(OFF);
33818 					}
33819 					break;
33820 				case ON:
33821 					{
33822 					setState(4762);
33823 					match(ON);
33824 					setState(4768);
33825 					_errHandler.sync(this);
33826 					switch ( getInterpreter().adaptivePredict(_input,512,_ctx) ) {
33827 					case 1:
33828 						{
33829 						setState(4763);
33830 						match(LP_);
33831 						setState(4764);
33832 						match(INCREMENTAL);
33833 						setState(4765);
33834 						match(EQ_);
33835 						setState(4766);
33836 						_la = _input.LA(1);
33837 						if ( !(_la==ON || _la==OFF) ) {
33838 						_errHandler.recoverInline(this);
33839 						}
33840 						else {
33841 							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33842 							_errHandler.reportMatch(this);
33843 							consume();
33844 						}
33845 						setState(4767);
33846 						match(RP_);
33847 						}
33848 						break;
33849 					}
33850 					}
33851 					break;
33852 				default:
33853 					throw new NoViableAltException(this);
33854 				}
33855 				}
33856 				break;
33857 			case AUTO_SHRINK:
33858 				enterOuterAlt(_localctx, 3);
33859 				{
33860 				setState(4772);
33861 				match(AUTO_SHRINK);
33862 				setState(4773);
33863 				_la = _input.LA(1);
33864 				if ( !(_la==ON || _la==OFF) ) {
33865 				_errHandler.recoverInline(this);
33866 				}
33867 				else {
33868 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33869 					_errHandler.reportMatch(this);
33870 					consume();
33871 				}
33872 				}
33873 				break;
33874 			case AUTO_UPDATE_STATISTICS:
33875 				enterOuterAlt(_localctx, 4);
33876 				{
33877 				setState(4774);
33878 				match(AUTO_UPDATE_STATISTICS);
33879 				setState(4775);
33880 				_la = _input.LA(1);
33881 				if ( !(_la==ON || _la==OFF) ) {
33882 				_errHandler.recoverInline(this);
33883 				}
33884 				else {
33885 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33886 					_errHandler.reportMatch(this);
33887 					consume();
33888 				}
33889 				}
33890 				break;
33891 			case AUTO_UPDATE_STATISTICS_ASYNC:
33892 				enterOuterAlt(_localctx, 5);
33893 				{
33894 				setState(4776);
33895 				match(AUTO_UPDATE_STATISTICS_ASYNC);
33896 				setState(4777);
33897 				_la = _input.LA(1);
33898 				if ( !(_la==ON || _la==OFF) ) {
33899 				_errHandler.recoverInline(this);
33900 				}
33901 				else {
33902 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33903 					_errHandler.reportMatch(this);
33904 					consume();
33905 				}
33906 				}
33907 				break;
33908 			default:
33909 				throw new NoViableAltException(this);
33910 			}
33911 		}
33912 		catch (RecognitionException re) {
33913 			_localctx.exception = re;
33914 			_errHandler.reportError(this, re);
33915 			_errHandler.recover(this, re);
33916 		}
33917 		finally {
33918 			exitRule();
33919 		}
33920 		return _localctx;
33921 	}
33922 
33923 	public static class AutomaticTuningOptionContext extends ParserRuleContext {
33924 		public TerminalNode AUTOMATIC_TUNING() { return getToken(SQLServerStatementParser.AUTOMATIC_TUNING, 0); }
33925 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
33926 		public TerminalNode FORCE_LAST_GOOD_PLAN() { return getToken(SQLServerStatementParser.FORCE_LAST_GOOD_PLAN, 0); }
33927 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33928 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
33929 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33930 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33931 		public AutomaticTuningOptionContext(ParserRuleContext parent, int invokingState) {
33932 			super(parent, invokingState);
33933 		}
33934 		@Override public int getRuleIndex() { return RULE_automaticTuningOption; }
33935 		@Override
33936 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
33937 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAutomaticTuningOption(this);
33938 			else return visitor.visitChildren(this);
33939 		}
33940 	}
33941 
33942 	public final AutomaticTuningOptionContext automaticTuningOption() throws RecognitionException {
33943 		AutomaticTuningOptionContext _localctx = new AutomaticTuningOptionContext(_ctx, getState());
33944 		enterRule(_localctx, 652, RULE_automaticTuningOption);
33945 		int _la;
33946 		try {
33947 			enterOuterAlt(_localctx, 1);
33948 			{
33949 			setState(4780);
33950 			match(AUTOMATIC_TUNING);
33951 			setState(4781);
33952 			match(LP_);
33953 			setState(4782);
33954 			match(FORCE_LAST_GOOD_PLAN);
33955 			setState(4783);
33956 			match(EQ_);
33957 			setState(4784);
33958 			_la = _input.LA(1);
33959 			if ( !(_la==ON || _la==OFF) ) {
33960 			_errHandler.recoverInline(this);
33961 			}
33962 			else {
33963 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
33964 				_errHandler.reportMatch(this);
33965 				consume();
33966 			}
33967 			setState(4785);
33968 			match(RP_);
33969 			}
33970 		}
33971 		catch (RecognitionException re) {
33972 			_localctx.exception = re;
33973 			_errHandler.reportError(this, re);
33974 			_errHandler.recover(this, re);
33975 		}
33976 		finally {
33977 			exitRule();
33978 		}
33979 		return _localctx;
33980 	}
33981 
33982 	public static class ChangeTrackingOptionContext extends ParserRuleContext {
33983 		public TerminalNode CHANGE_TRACKING() { return getToken(SQLServerStatementParser.CHANGE_TRACKING, 0); }
33984 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
33985 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
33986 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
33987 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
33988 		public List<ChangeTrackingOptionListContext> changeTrackingOptionList() {
33989 			return getRuleContexts(ChangeTrackingOptionListContext.class);
33990 		}
33991 		public ChangeTrackingOptionListContext changeTrackingOptionList(int i) {
33992 			return getRuleContext(ChangeTrackingOptionListContext.class,i);
33993 		}
33994 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
33995 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
33996 		public TerminalNode COMMA_(int i) {
33997 			return getToken(SQLServerStatementParser.COMMA_, i);
33998 		}
33999 		public ChangeTrackingOptionContext(ParserRuleContext parent, int invokingState) {
34000 			super(parent, invokingState);
34001 		}
34002 		@Override public int getRuleIndex() { return RULE_changeTrackingOption; }
34003 		@Override
34004 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34005 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitChangeTrackingOption(this);
34006 			else return visitor.visitChildren(this);
34007 		}
34008 	}
34009 
34010 	public final ChangeTrackingOptionContext changeTrackingOption() throws RecognitionException {
34011 		ChangeTrackingOptionContext _localctx = new ChangeTrackingOptionContext(_ctx, getState());
34012 		enterRule(_localctx, 654, RULE_changeTrackingOption);
34013 		int _la;
34014 		try {
34015 			enterOuterAlt(_localctx, 1);
34016 			{
34017 			setState(4787);
34018 			match(CHANGE_TRACKING);
34019 			setState(4807);
34020 			_errHandler.sync(this);
34021 			switch ( getInterpreter().adaptivePredict(_input,518,_ctx) ) {
34022 			case 1:
34023 				{
34024 				setState(4788);
34025 				match(EQ_);
34026 				setState(4789);
34027 				match(OFF);
34028 				}
34029 				break;
34030 			case 2:
34031 				{
34032 				setState(4792);
34033 				_errHandler.sync(this);
34034 				_la = _input.LA(1);
34035 				if (_la==EQ_) {
34036 					{
34037 					setState(4790);
34038 					match(EQ_);
34039 					setState(4791);
34040 					match(ON);
34041 					}
34042 				}
34043 
34044 				setState(4805);
34045 				_errHandler.sync(this);
34046 				switch ( getInterpreter().adaptivePredict(_input,517,_ctx) ) {
34047 				case 1:
34048 					{
34049 					setState(4794);
34050 					match(LP_);
34051 					setState(4795);
34052 					changeTrackingOptionList();
34053 					setState(4800);
34054 					_errHandler.sync(this);
34055 					_la = _input.LA(1);
34056 					while (_la==COMMA_) {
34057 						{
34058 						{
34059 						setState(4796);
34060 						match(COMMA_);
34061 						setState(4797);
34062 						changeTrackingOptionList();
34063 						}
34064 						}
34065 						setState(4802);
34066 						_errHandler.sync(this);
34067 						_la = _input.LA(1);
34068 					}
34069 					setState(4803);
34070 					match(RP_);
34071 					}
34072 					break;
34073 				}
34074 				}
34075 				break;
34076 			}
34077 			}
34078 		}
34079 		catch (RecognitionException re) {
34080 			_localctx.exception = re;
34081 			_errHandler.reportError(this, re);
34082 			_errHandler.recover(this, re);
34083 		}
34084 		finally {
34085 			exitRule();
34086 		}
34087 		return _localctx;
34088 	}
34089 
34090 	public static class ChangeTrackingOptionListContext extends ParserRuleContext {
34091 		public TerminalNode AUTO_CLEANUP() { return getToken(SQLServerStatementParser.AUTO_CLEANUP, 0); }
34092 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
34093 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
34094 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
34095 		public TerminalNode CHANGE_RETENTION() { return getToken(SQLServerStatementParser.CHANGE_RETENTION, 0); }
34096 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
34097 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
34098 		public TerminalNode HOURS() { return getToken(SQLServerStatementParser.HOURS, 0); }
34099 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
34100 		public ChangeTrackingOptionListContext(ParserRuleContext parent, int invokingState) {
34101 			super(parent, invokingState);
34102 		}
34103 		@Override public int getRuleIndex() { return RULE_changeTrackingOptionList; }
34104 		@Override
34105 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34106 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitChangeTrackingOptionList(this);
34107 			else return visitor.visitChildren(this);
34108 		}
34109 	}
34110 
34111 	public final ChangeTrackingOptionListContext changeTrackingOptionList() throws RecognitionException {
34112 		ChangeTrackingOptionListContext _localctx = new ChangeTrackingOptionListContext(_ctx, getState());
34113 		enterRule(_localctx, 656, RULE_changeTrackingOptionList);
34114 		int _la;
34115 		try {
34116 			setState(4816);
34117 			_errHandler.sync(this);
34118 			switch (_input.LA(1)) {
34119 			case AUTO_CLEANUP:
34120 				enterOuterAlt(_localctx, 1);
34121 				{
34122 				setState(4809);
34123 				match(AUTO_CLEANUP);
34124 				setState(4810);
34125 				match(EQ_);
34126 				setState(4811);
34127 				_la = _input.LA(1);
34128 				if ( !(_la==ON || _la==OFF) ) {
34129 				_errHandler.recoverInline(this);
34130 				}
34131 				else {
34132 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34133 					_errHandler.reportMatch(this);
34134 					consume();
34135 				}
34136 				}
34137 				break;
34138 			case CHANGE_RETENTION:
34139 				enterOuterAlt(_localctx, 2);
34140 				{
34141 				setState(4812);
34142 				match(CHANGE_RETENTION);
34143 				setState(4813);
34144 				match(EQ_);
34145 				setState(4814);
34146 				match(NUMBER_);
34147 				setState(4815);
34148 				_la = _input.LA(1);
34149 				if ( !(_la==DAYS || _la==MINUTES || _la==HOURS) ) {
34150 				_errHandler.recoverInline(this);
34151 				}
34152 				else {
34153 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34154 					_errHandler.reportMatch(this);
34155 					consume();
34156 				}
34157 				}
34158 				break;
34159 			default:
34160 				throw new NoViableAltException(this);
34161 			}
34162 		}
34163 		catch (RecognitionException re) {
34164 			_localctx.exception = re;
34165 			_errHandler.reportError(this, re);
34166 			_errHandler.recover(this, re);
34167 		}
34168 		finally {
34169 			exitRule();
34170 		}
34171 		return _localctx;
34172 	}
34173 
34174 	public static class CursorOptionContext extends ParserRuleContext {
34175 		public TerminalNode CURSOR_CLOSE_ON_COMMIT() { return getToken(SQLServerStatementParser.CURSOR_CLOSE_ON_COMMIT, 0); }
34176 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
34177 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
34178 		public TerminalNode CURSOR_DEFAULT() { return getToken(SQLServerStatementParser.CURSOR_DEFAULT, 0); }
34179 		public TerminalNode LOCAL() { return getToken(SQLServerStatementParser.LOCAL, 0); }
34180 		public TerminalNode GLOBAL() { return getToken(SQLServerStatementParser.GLOBAL, 0); }
34181 		public CursorOptionContext(ParserRuleContext parent, int invokingState) {
34182 			super(parent, invokingState);
34183 		}
34184 		@Override public int getRuleIndex() { return RULE_cursorOption; }
34185 		@Override
34186 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34187 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCursorOption(this);
34188 			else return visitor.visitChildren(this);
34189 		}
34190 	}
34191 
34192 	public final CursorOptionContext cursorOption() throws RecognitionException {
34193 		CursorOptionContext _localctx = new CursorOptionContext(_ctx, getState());
34194 		enterRule(_localctx, 658, RULE_cursorOption);
34195 		int _la;
34196 		try {
34197 			setState(4822);
34198 			_errHandler.sync(this);
34199 			switch (_input.LA(1)) {
34200 			case CURSOR_CLOSE_ON_COMMIT:
34201 				enterOuterAlt(_localctx, 1);
34202 				{
34203 				setState(4818);
34204 				match(CURSOR_CLOSE_ON_COMMIT);
34205 				setState(4819);
34206 				_la = _input.LA(1);
34207 				if ( !(_la==ON || _la==OFF) ) {
34208 				_errHandler.recoverInline(this);
34209 				}
34210 				else {
34211 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34212 					_errHandler.reportMatch(this);
34213 					consume();
34214 				}
34215 				}
34216 				break;
34217 			case CURSOR_DEFAULT:
34218 				enterOuterAlt(_localctx, 2);
34219 				{
34220 				setState(4820);
34221 				match(CURSOR_DEFAULT);
34222 				setState(4821);
34223 				_la = _input.LA(1);
34224 				if ( !(_la==LOCAL || _la==GLOBAL) ) {
34225 				_errHandler.recoverInline(this);
34226 				}
34227 				else {
34228 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34229 					_errHandler.reportMatch(this);
34230 					consume();
34231 				}
34232 				}
34233 				break;
34234 			default:
34235 				throw new NoViableAltException(this);
34236 			}
34237 		}
34238 		catch (RecognitionException re) {
34239 			_localctx.exception = re;
34240 			_errHandler.reportError(this, re);
34241 			_errHandler.recover(this, re);
34242 		}
34243 		finally {
34244 			exitRule();
34245 		}
34246 		return _localctx;
34247 	}
34248 
34249 	public static class ExternalAccessOptionContext extends ParserRuleContext {
34250 		public TerminalNode DB_CHAINING() { return getToken(SQLServerStatementParser.DB_CHAINING, 0); }
34251 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
34252 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
34253 		public TerminalNode TRUSTWORTHY() { return getToken(SQLServerStatementParser.TRUSTWORTHY, 0); }
34254 		public TerminalNode DEFAULT_FULLTEXT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_FULLTEXT_LANGUAGE, 0); }
34255 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
34256 		public TerminalNode STRING_() { return getToken(SQLServerStatementParser.STRING_, 0); }
34257 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
34258 		public TerminalNode NESTED_TRIGGERS() { return getToken(SQLServerStatementParser.NESTED_TRIGGERS, 0); }
34259 		public TerminalNode TRANSFORM_NOISE_WORDS() { return getToken(SQLServerStatementParser.TRANSFORM_NOISE_WORDS, 0); }
34260 		public TerminalNode TWO_DIGIT_YEAR_CUTOFF() { return getToken(SQLServerStatementParser.TWO_DIGIT_YEAR_CUTOFF, 0); }
34261 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
34262 		public ExternalAccessOptionContext(ParserRuleContext parent, int invokingState) {
34263 			super(parent, invokingState);
34264 		}
34265 		@Override public int getRuleIndex() { return RULE_externalAccessOption; }
34266 		@Override
34267 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34268 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExternalAccessOption(this);
34269 			else return visitor.visitChildren(this);
34270 		}
34271 	}
34272 
34273 	public final ExternalAccessOptionContext externalAccessOption() throws RecognitionException {
34274 		ExternalAccessOptionContext _localctx = new ExternalAccessOptionContext(_ctx, getState());
34275 		enterRule(_localctx, 660, RULE_externalAccessOption);
34276 		int _la;
34277 		try {
34278 			setState(4843);
34279 			_errHandler.sync(this);
34280 			switch (_input.LA(1)) {
34281 			case DB_CHAINING:
34282 				enterOuterAlt(_localctx, 1);
34283 				{
34284 				setState(4824);
34285 				match(DB_CHAINING);
34286 				setState(4825);
34287 				_la = _input.LA(1);
34288 				if ( !(_la==ON || _la==OFF) ) {
34289 				_errHandler.recoverInline(this);
34290 				}
34291 				else {
34292 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34293 					_errHandler.reportMatch(this);
34294 					consume();
34295 				}
34296 				}
34297 				break;
34298 			case TRUSTWORTHY:
34299 				enterOuterAlt(_localctx, 2);
34300 				{
34301 				setState(4826);
34302 				match(TRUSTWORTHY);
34303 				setState(4827);
34304 				_la = _input.LA(1);
34305 				if ( !(_la==ON || _la==OFF) ) {
34306 				_errHandler.recoverInline(this);
34307 				}
34308 				else {
34309 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34310 					_errHandler.reportMatch(this);
34311 					consume();
34312 				}
34313 				}
34314 				break;
34315 			case DEFAULT_FULLTEXT_LANGUAGE:
34316 				enterOuterAlt(_localctx, 3);
34317 				{
34318 				setState(4828);
34319 				match(DEFAULT_FULLTEXT_LANGUAGE);
34320 				setState(4829);
34321 				match(EQ_);
34322 				setState(4830);
34323 				match(STRING_);
34324 				}
34325 				break;
34326 			case DEFAULT_LANGUAGE:
34327 				enterOuterAlt(_localctx, 4);
34328 				{
34329 				setState(4831);
34330 				match(DEFAULT_LANGUAGE);
34331 				setState(4832);
34332 				match(EQ_);
34333 				setState(4833);
34334 				match(STRING_);
34335 				}
34336 				break;
34337 			case NESTED_TRIGGERS:
34338 				enterOuterAlt(_localctx, 5);
34339 				{
34340 				setState(4834);
34341 				match(NESTED_TRIGGERS);
34342 				setState(4835);
34343 				match(EQ_);
34344 				setState(4836);
34345 				_la = _input.LA(1);
34346 				if ( !(_la==ON || _la==OFF) ) {
34347 				_errHandler.recoverInline(this);
34348 				}
34349 				else {
34350 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34351 					_errHandler.reportMatch(this);
34352 					consume();
34353 				}
34354 				}
34355 				break;
34356 			case TRANSFORM_NOISE_WORDS:
34357 				enterOuterAlt(_localctx, 6);
34358 				{
34359 				setState(4837);
34360 				match(TRANSFORM_NOISE_WORDS);
34361 				setState(4838);
34362 				match(EQ_);
34363 				setState(4839);
34364 				_la = _input.LA(1);
34365 				if ( !(_la==ON || _la==OFF) ) {
34366 				_errHandler.recoverInline(this);
34367 				}
34368 				else {
34369 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34370 					_errHandler.reportMatch(this);
34371 					consume();
34372 				}
34373 				}
34374 				break;
34375 			case TWO_DIGIT_YEAR_CUTOFF:
34376 				enterOuterAlt(_localctx, 7);
34377 				{
34378 				setState(4840);
34379 				match(TWO_DIGIT_YEAR_CUTOFF);
34380 				setState(4841);
34381 				match(EQ_);
34382 				setState(4842);
34383 				match(NUMBER_);
34384 				}
34385 				break;
34386 			default:
34387 				throw new NoViableAltException(this);
34388 			}
34389 		}
34390 		catch (RecognitionException re) {
34391 			_localctx.exception = re;
34392 			_errHandler.reportError(this, re);
34393 			_errHandler.recover(this, re);
34394 		}
34395 		finally {
34396 			exitRule();
34397 		}
34398 		return _localctx;
34399 	}
34400 
34401 	public static class QueryStoreOptionsContext extends ParserRuleContext {
34402 		public TerminalNode QUERY_STORE() { return getToken(SQLServerStatementParser.QUERY_STORE, 0); }
34403 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
34404 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
34405 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
34406 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
34407 		public List<QueryStoreOptionListContext> queryStoreOptionList() {
34408 			return getRuleContexts(QueryStoreOptionListContext.class);
34409 		}
34410 		public QueryStoreOptionListContext queryStoreOptionList(int i) {
34411 			return getRuleContext(QueryStoreOptionListContext.class,i);
34412 		}
34413 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
34414 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
34415 		public TerminalNode COMMA_(int i) {
34416 			return getToken(SQLServerStatementParser.COMMA_, i);
34417 		}
34418 		public QueryStoreOptionsContext(ParserRuleContext parent, int invokingState) {
34419 			super(parent, invokingState);
34420 		}
34421 		@Override public int getRuleIndex() { return RULE_queryStoreOptions; }
34422 		@Override
34423 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34424 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryStoreOptions(this);
34425 			else return visitor.visitChildren(this);
34426 		}
34427 	}
34428 
34429 	public final QueryStoreOptionsContext queryStoreOptions() throws RecognitionException {
34430 		QueryStoreOptionsContext _localctx = new QueryStoreOptionsContext(_ctx, getState());
34431 		enterRule(_localctx, 662, RULE_queryStoreOptions);
34432 		int _la;
34433 		try {
34434 			enterOuterAlt(_localctx, 1);
34435 			{
34436 			setState(4845);
34437 			match(QUERY_STORE);
34438 			setState(4865);
34439 			_errHandler.sync(this);
34440 			switch ( getInterpreter().adaptivePredict(_input,525,_ctx) ) {
34441 			case 1:
34442 				{
34443 				setState(4846);
34444 				match(EQ_);
34445 				setState(4847);
34446 				match(OFF);
34447 				}
34448 				break;
34449 			case 2:
34450 				{
34451 				setState(4850);
34452 				_errHandler.sync(this);
34453 				_la = _input.LA(1);
34454 				if (_la==EQ_) {
34455 					{
34456 					setState(4848);
34457 					match(EQ_);
34458 					setState(4849);
34459 					match(ON);
34460 					}
34461 				}
34462 
34463 				setState(4863);
34464 				_errHandler.sync(this);
34465 				switch ( getInterpreter().adaptivePredict(_input,524,_ctx) ) {
34466 				case 1:
34467 					{
34468 					setState(4852);
34469 					match(LP_);
34470 					setState(4853);
34471 					queryStoreOptionList();
34472 					setState(4858);
34473 					_errHandler.sync(this);
34474 					_la = _input.LA(1);
34475 					while (_la==COMMA_) {
34476 						{
34477 						{
34478 						setState(4854);
34479 						match(COMMA_);
34480 						setState(4855);
34481 						queryStoreOptionList();
34482 						}
34483 						}
34484 						setState(4860);
34485 						_errHandler.sync(this);
34486 						_la = _input.LA(1);
34487 					}
34488 					setState(4861);
34489 					match(RP_);
34490 					}
34491 					break;
34492 				}
34493 				}
34494 				break;
34495 			}
34496 			}
34497 		}
34498 		catch (RecognitionException re) {
34499 			_localctx.exception = re;
34500 			_errHandler.reportError(this, re);
34501 			_errHandler.recover(this, re);
34502 		}
34503 		finally {
34504 			exitRule();
34505 		}
34506 		return _localctx;
34507 	}
34508 
34509 	public static class QueryStoreOptionListContext extends ParserRuleContext {
34510 		public TerminalNode OPERATION_MODE() { return getToken(SQLServerStatementParser.OPERATION_MODE, 0); }
34511 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
34512 		public TerminalNode EQ_(int i) {
34513 			return getToken(SQLServerStatementParser.EQ_, i);
34514 		}
34515 		public TerminalNode READ_WRITE() { return getToken(SQLServerStatementParser.READ_WRITE, 0); }
34516 		public TerminalNode READ_ONLY() { return getToken(SQLServerStatementParser.READ_ONLY, 0); }
34517 		public TerminalNode CLEANUP_POLICY() { return getToken(SQLServerStatementParser.CLEANUP_POLICY, 0); }
34518 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
34519 		public TerminalNode STALE_QUERY_THRESHOLD_DAYS() { return getToken(SQLServerStatementParser.STALE_QUERY_THRESHOLD_DAYS, 0); }
34520 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
34521 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
34522 		public TerminalNode DATA_FLUSH_INTERVAL_SECONDS() { return getToken(SQLServerStatementParser.DATA_FLUSH_INTERVAL_SECONDS, 0); }
34523 		public TerminalNode MAX_STORAGE_SIZE_MB() { return getToken(SQLServerStatementParser.MAX_STORAGE_SIZE_MB, 0); }
34524 		public TerminalNode INTERVAL_LENGTH_MINUTES() { return getToken(SQLServerStatementParser.INTERVAL_LENGTH_MINUTES, 0); }
34525 		public TerminalNode SIZE_BASED_CLEANUP_MODE() { return getToken(SQLServerStatementParser.SIZE_BASED_CLEANUP_MODE, 0); }
34526 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
34527 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
34528 		public TerminalNode QUERY_CAPTURE_MODE() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_MODE, 0); }
34529 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
34530 		public TerminalNode CUSTOM() { return getToken(SQLServerStatementParser.CUSTOM, 0); }
34531 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
34532 		public TerminalNode MAX_PLANS_PER_QUERY() { return getToken(SQLServerStatementParser.MAX_PLANS_PER_QUERY, 0); }
34533 		public TerminalNode WAIT_STATS_CAPTURE_MODE() { return getToken(SQLServerStatementParser.WAIT_STATS_CAPTURE_MODE, 0); }
34534 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
34535 		public TerminalNode QUERY_CAPTURE_POLICY() { return getToken(SQLServerStatementParser.QUERY_CAPTURE_POLICY, 0); }
34536 		public List<QueryCapturePolicyOptionListContext> queryCapturePolicyOptionList() {
34537 			return getRuleContexts(QueryCapturePolicyOptionListContext.class);
34538 		}
34539 		public QueryCapturePolicyOptionListContext queryCapturePolicyOptionList(int i) {
34540 			return getRuleContext(QueryCapturePolicyOptionListContext.class,i);
34541 		}
34542 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
34543 		public TerminalNode COMMA_(int i) {
34544 			return getToken(SQLServerStatementParser.COMMA_, i);
34545 		}
34546 		public QueryStoreOptionListContext(ParserRuleContext parent, int invokingState) {
34547 			super(parent, invokingState);
34548 		}
34549 		@Override public int getRuleIndex() { return RULE_queryStoreOptionList; }
34550 		@Override
34551 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34552 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryStoreOptionList(this);
34553 			else return visitor.visitChildren(this);
34554 		}
34555 	}
34556 
34557 	public final QueryStoreOptionListContext queryStoreOptionList() throws RecognitionException {
34558 		QueryStoreOptionListContext _localctx = new QueryStoreOptionListContext(_ctx, getState());
34559 		enterRule(_localctx, 664, RULE_queryStoreOptionList);
34560 		int _la;
34561 		try {
34562 			setState(4911);
34563 			_errHandler.sync(this);
34564 			switch (_input.LA(1)) {
34565 			case OPERATION_MODE:
34566 				enterOuterAlt(_localctx, 1);
34567 				{
34568 				setState(4867);
34569 				match(OPERATION_MODE);
34570 				setState(4868);
34571 				match(EQ_);
34572 				setState(4869);
34573 				_la = _input.LA(1);
34574 				if ( !(_la==READ_ONLY || _la==READ_WRITE) ) {
34575 				_errHandler.recoverInline(this);
34576 				}
34577 				else {
34578 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34579 					_errHandler.reportMatch(this);
34580 					consume();
34581 				}
34582 				}
34583 				break;
34584 			case CLEANUP_POLICY:
34585 				enterOuterAlt(_localctx, 2);
34586 				{
34587 				setState(4870);
34588 				match(CLEANUP_POLICY);
34589 				setState(4871);
34590 				match(EQ_);
34591 				setState(4872);
34592 				match(LP_);
34593 				setState(4873);
34594 				match(STALE_QUERY_THRESHOLD_DAYS);
34595 				setState(4874);
34596 				match(EQ_);
34597 				setState(4875);
34598 				match(NUMBER_);
34599 				setState(4876);
34600 				match(RP_);
34601 				}
34602 				break;
34603 			case DATA_FLUSH_INTERVAL_SECONDS:
34604 				enterOuterAlt(_localctx, 3);
34605 				{
34606 				setState(4877);
34607 				match(DATA_FLUSH_INTERVAL_SECONDS);
34608 				setState(4878);
34609 				match(EQ_);
34610 				setState(4879);
34611 				match(NUMBER_);
34612 				}
34613 				break;
34614 			case MAX_STORAGE_SIZE_MB:
34615 				enterOuterAlt(_localctx, 4);
34616 				{
34617 				setState(4880);
34618 				match(MAX_STORAGE_SIZE_MB);
34619 				setState(4881);
34620 				match(EQ_);
34621 				setState(4882);
34622 				match(NUMBER_);
34623 				}
34624 				break;
34625 			case INTERVAL_LENGTH_MINUTES:
34626 				enterOuterAlt(_localctx, 5);
34627 				{
34628 				setState(4883);
34629 				match(INTERVAL_LENGTH_MINUTES);
34630 				setState(4884);
34631 				match(EQ_);
34632 				setState(4885);
34633 				match(NUMBER_);
34634 				}
34635 				break;
34636 			case SIZE_BASED_CLEANUP_MODE:
34637 				enterOuterAlt(_localctx, 6);
34638 				{
34639 				setState(4886);
34640 				match(SIZE_BASED_CLEANUP_MODE);
34641 				setState(4887);
34642 				match(EQ_);
34643 				setState(4888);
34644 				_la = _input.LA(1);
34645 				if ( !(_la==OFF || _la==AUTO) ) {
34646 				_errHandler.recoverInline(this);
34647 				}
34648 				else {
34649 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34650 					_errHandler.reportMatch(this);
34651 					consume();
34652 				}
34653 				}
34654 				break;
34655 			case QUERY_CAPTURE_MODE:
34656 				enterOuterAlt(_localctx, 7);
34657 				{
34658 				setState(4889);
34659 				match(QUERY_CAPTURE_MODE);
34660 				setState(4890);
34661 				match(EQ_);
34662 				setState(4891);
34663 				_la = _input.LA(1);
34664 				if ( !(_la==ALL || _la==AUTO || _la==NONE || _la==CUSTOM) ) {
34665 				_errHandler.recoverInline(this);
34666 				}
34667 				else {
34668 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34669 					_errHandler.reportMatch(this);
34670 					consume();
34671 				}
34672 				}
34673 				break;
34674 			case MAX_PLANS_PER_QUERY:
34675 				enterOuterAlt(_localctx, 8);
34676 				{
34677 				setState(4892);
34678 				match(MAX_PLANS_PER_QUERY);
34679 				setState(4893);
34680 				match(EQ_);
34681 				setState(4894);
34682 				match(NUMBER_);
34683 				}
34684 				break;
34685 			case WAIT_STATS_CAPTURE_MODE:
34686 				enterOuterAlt(_localctx, 9);
34687 				{
34688 				setState(4895);
34689 				match(WAIT_STATS_CAPTURE_MODE);
34690 				setState(4896);
34691 				match(EQ_);
34692 				setState(4897);
34693 				_la = _input.LA(1);
34694 				if ( !(_la==ON || _la==OFF) ) {
34695 				_errHandler.recoverInline(this);
34696 				}
34697 				else {
34698 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34699 					_errHandler.reportMatch(this);
34700 					consume();
34701 				}
34702 				}
34703 				break;
34704 			case QUERY_CAPTURE_POLICY:
34705 				enterOuterAlt(_localctx, 10);
34706 				{
34707 				setState(4898);
34708 				match(QUERY_CAPTURE_POLICY);
34709 				setState(4899);
34710 				match(EQ_);
34711 				setState(4900);
34712 				match(LP_);
34713 				setState(4901);
34714 				queryCapturePolicyOptionList();
34715 				setState(4906);
34716 				_errHandler.sync(this);
34717 				_la = _input.LA(1);
34718 				while (_la==COMMA_) {
34719 					{
34720 					{
34721 					setState(4902);
34722 					match(COMMA_);
34723 					setState(4903);
34724 					queryCapturePolicyOptionList();
34725 					}
34726 					}
34727 					setState(4908);
34728 					_errHandler.sync(this);
34729 					_la = _input.LA(1);
34730 				}
34731 				setState(4909);
34732 				match(RP_);
34733 				}
34734 				break;
34735 			default:
34736 				throw new NoViableAltException(this);
34737 			}
34738 		}
34739 		catch (RecognitionException re) {
34740 			_localctx.exception = re;
34741 			_errHandler.reportError(this, re);
34742 			_errHandler.recover(this, re);
34743 		}
34744 		finally {
34745 			exitRule();
34746 		}
34747 		return _localctx;
34748 	}
34749 
34750 	public static class QueryCapturePolicyOptionListContext extends ParserRuleContext {
34751 		public TerminalNode STALE_CAPTURE_POLICY_THRESHOLD() { return getToken(SQLServerStatementParser.STALE_CAPTURE_POLICY_THRESHOLD, 0); }
34752 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
34753 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
34754 		public TerminalNode DAYS() { return getToken(SQLServerStatementParser.DAYS, 0); }
34755 		public TerminalNode HOURS() { return getToken(SQLServerStatementParser.HOURS, 0); }
34756 		public TerminalNode EXECUTION_COUNT() { return getToken(SQLServerStatementParser.EXECUTION_COUNT, 0); }
34757 		public TerminalNode TOTAL_COMPILE_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_COMPILE_CPU_TIME_MS, 0); }
34758 		public TerminalNode TOTAL_EXECUTION_CPU_TIME_MS() { return getToken(SQLServerStatementParser.TOTAL_EXECUTION_CPU_TIME_MS, 0); }
34759 		public QueryCapturePolicyOptionListContext(ParserRuleContext parent, int invokingState) {
34760 			super(parent, invokingState);
34761 		}
34762 		@Override public int getRuleIndex() { return RULE_queryCapturePolicyOptionList; }
34763 		@Override
34764 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34765 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryCapturePolicyOptionList(this);
34766 			else return visitor.visitChildren(this);
34767 		}
34768 	}
34769 
34770 	public final QueryCapturePolicyOptionListContext queryCapturePolicyOptionList() throws RecognitionException {
34771 		QueryCapturePolicyOptionListContext _localctx = new QueryCapturePolicyOptionListContext(_ctx, getState());
34772 		enterRule(_localctx, 666, RULE_queryCapturePolicyOptionList);
34773 		int _la;
34774 		try {
34775 			setState(4926);
34776 			_errHandler.sync(this);
34777 			switch (_input.LA(1)) {
34778 			case STALE_CAPTURE_POLICY_THRESHOLD:
34779 				enterOuterAlt(_localctx, 1);
34780 				{
34781 				setState(4913);
34782 				match(STALE_CAPTURE_POLICY_THRESHOLD);
34783 				setState(4914);
34784 				match(EQ_);
34785 				setState(4915);
34786 				match(NUMBER_);
34787 				setState(4916);
34788 				_la = _input.LA(1);
34789 				if ( !(_la==DAYS || _la==HOURS) ) {
34790 				_errHandler.recoverInline(this);
34791 				}
34792 				else {
34793 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34794 					_errHandler.reportMatch(this);
34795 					consume();
34796 				}
34797 				}
34798 				break;
34799 			case EXECUTION_COUNT:
34800 				enterOuterAlt(_localctx, 2);
34801 				{
34802 				setState(4917);
34803 				match(EXECUTION_COUNT);
34804 				setState(4918);
34805 				match(EQ_);
34806 				setState(4919);
34807 				match(NUMBER_);
34808 				}
34809 				break;
34810 			case TOTAL_COMPILE_CPU_TIME_MS:
34811 				enterOuterAlt(_localctx, 3);
34812 				{
34813 				setState(4920);
34814 				match(TOTAL_COMPILE_CPU_TIME_MS);
34815 				setState(4921);
34816 				match(EQ_);
34817 				setState(4922);
34818 				match(NUMBER_);
34819 				}
34820 				break;
34821 			case TOTAL_EXECUTION_CPU_TIME_MS:
34822 				enterOuterAlt(_localctx, 4);
34823 				{
34824 				setState(4923);
34825 				match(TOTAL_EXECUTION_CPU_TIME_MS);
34826 				setState(4924);
34827 				match(EQ_);
34828 				setState(4925);
34829 				match(NUMBER_);
34830 				}
34831 				break;
34832 			default:
34833 				throw new NoViableAltException(this);
34834 			}
34835 		}
34836 		catch (RecognitionException re) {
34837 			_localctx.exception = re;
34838 			_errHandler.reportError(this, re);
34839 			_errHandler.recover(this, re);
34840 		}
34841 		finally {
34842 			exitRule();
34843 		}
34844 		return _localctx;
34845 	}
34846 
34847 	public static class RecoveryOptionContext extends ParserRuleContext {
34848 		public TerminalNode RECOVERY() { return getToken(SQLServerStatementParser.RECOVERY, 0); }
34849 		public TerminalNode FULL() { return getToken(SQLServerStatementParser.FULL, 0); }
34850 		public TerminalNode BULK_LOGGED() { return getToken(SQLServerStatementParser.BULK_LOGGED, 0); }
34851 		public TerminalNode SIMPLE() { return getToken(SQLServerStatementParser.SIMPLE, 0); }
34852 		public TerminalNode TORN_PAGE_DETECTION() { return getToken(SQLServerStatementParser.TORN_PAGE_DETECTION, 0); }
34853 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
34854 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
34855 		public TerminalNode PAGE_VERIFY() { return getToken(SQLServerStatementParser.PAGE_VERIFY, 0); }
34856 		public TerminalNode CHECKSUM() { return getToken(SQLServerStatementParser.CHECKSUM, 0); }
34857 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
34858 		public RecoveryOptionContext(ParserRuleContext parent, int invokingState) {
34859 			super(parent, invokingState);
34860 		}
34861 		@Override public int getRuleIndex() { return RULE_recoveryOption; }
34862 		@Override
34863 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34864 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRecoveryOption(this);
34865 			else return visitor.visitChildren(this);
34866 		}
34867 	}
34868 
34869 	public final RecoveryOptionContext recoveryOption() throws RecognitionException {
34870 		RecoveryOptionContext _localctx = new RecoveryOptionContext(_ctx, getState());
34871 		enterRule(_localctx, 668, RULE_recoveryOption);
34872 		int _la;
34873 		try {
34874 			setState(4934);
34875 			_errHandler.sync(this);
34876 			switch (_input.LA(1)) {
34877 			case RECOVERY:
34878 				enterOuterAlt(_localctx, 1);
34879 				{
34880 				setState(4928);
34881 				match(RECOVERY);
34882 				setState(4929);
34883 				_la = _input.LA(1);
34884 				if ( !(_la==FULL || _la==SIMPLE || _la==BULK_LOGGED) ) {
34885 				_errHandler.recoverInline(this);
34886 				}
34887 				else {
34888 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34889 					_errHandler.reportMatch(this);
34890 					consume();
34891 				}
34892 				}
34893 				break;
34894 			case TORN_PAGE_DETECTION:
34895 				enterOuterAlt(_localctx, 2);
34896 				{
34897 				setState(4930);
34898 				match(TORN_PAGE_DETECTION);
34899 				setState(4931);
34900 				_la = _input.LA(1);
34901 				if ( !(_la==ON || _la==OFF) ) {
34902 				_errHandler.recoverInline(this);
34903 				}
34904 				else {
34905 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34906 					_errHandler.reportMatch(this);
34907 					consume();
34908 				}
34909 				}
34910 				break;
34911 			case PAGE_VERIFY:
34912 				enterOuterAlt(_localctx, 3);
34913 				{
34914 				setState(4932);
34915 				match(PAGE_VERIFY);
34916 				setState(4933);
34917 				_la = _input.LA(1);
34918 				if ( !(_la==NONE || _la==CHECKSUM || _la==TORN_PAGE_DETECTION) ) {
34919 				_errHandler.recoverInline(this);
34920 				}
34921 				else {
34922 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34923 					_errHandler.reportMatch(this);
34924 					consume();
34925 				}
34926 				}
34927 				break;
34928 			default:
34929 				throw new NoViableAltException(this);
34930 			}
34931 		}
34932 		catch (RecognitionException re) {
34933 			_localctx.exception = re;
34934 			_errHandler.reportError(this, re);
34935 			_errHandler.recover(this, re);
34936 		}
34937 		finally {
34938 			exitRule();
34939 		}
34940 		return _localctx;
34941 	}
34942 
34943 	public static class SqlOptionContext extends ParserRuleContext {
34944 		public TerminalNode ANSI_NULL_DEFAULT() { return getToken(SQLServerStatementParser.ANSI_NULL_DEFAULT, 0); }
34945 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
34946 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
34947 		public TerminalNode ANSI_NULLS() { return getToken(SQLServerStatementParser.ANSI_NULLS, 0); }
34948 		public TerminalNode ANSI_PADDING() { return getToken(SQLServerStatementParser.ANSI_PADDING, 0); }
34949 		public TerminalNode ANSI_WARNINGS() { return getToken(SQLServerStatementParser.ANSI_WARNINGS, 0); }
34950 		public TerminalNode ARITHABORT() { return getToken(SQLServerStatementParser.ARITHABORT, 0); }
34951 		public TerminalNode COMPATIBILITY_LEVEL() { return getToken(SQLServerStatementParser.COMPATIBILITY_LEVEL, 0); }
34952 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
34953 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
34954 		public TerminalNode CONCAT_NULL_YIELDS_NULL() { return getToken(SQLServerStatementParser.CONCAT_NULL_YIELDS_NULL, 0); }
34955 		public TerminalNode NUMERIC_ROUNDABORT() { return getToken(SQLServerStatementParser.NUMERIC_ROUNDABORT, 0); }
34956 		public TerminalNode QUOTED_IDENTIFIER() { return getToken(SQLServerStatementParser.QUOTED_IDENTIFIER, 0); }
34957 		public TerminalNode RECURSIVE_TRIGGERS() { return getToken(SQLServerStatementParser.RECURSIVE_TRIGGERS, 0); }
34958 		public SqlOptionContext(ParserRuleContext parent, int invokingState) {
34959 			super(parent, invokingState);
34960 		}
34961 		@Override public int getRuleIndex() { return RULE_sqlOption; }
34962 		@Override
34963 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
34964 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSqlOption(this);
34965 			else return visitor.visitChildren(this);
34966 		}
34967 	}
34968 
34969 	public final SqlOptionContext sqlOption() throws RecognitionException {
34970 		SqlOptionContext _localctx = new SqlOptionContext(_ctx, getState());
34971 		enterRule(_localctx, 670, RULE_sqlOption);
34972 		int _la;
34973 		try {
34974 			setState(4957);
34975 			_errHandler.sync(this);
34976 			switch (_input.LA(1)) {
34977 			case ANSI_NULL_DEFAULT:
34978 				enterOuterAlt(_localctx, 1);
34979 				{
34980 				setState(4936);
34981 				match(ANSI_NULL_DEFAULT);
34982 				setState(4937);
34983 				_la = _input.LA(1);
34984 				if ( !(_la==ON || _la==OFF) ) {
34985 				_errHandler.recoverInline(this);
34986 				}
34987 				else {
34988 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
34989 					_errHandler.reportMatch(this);
34990 					consume();
34991 				}
34992 				}
34993 				break;
34994 			case ANSI_NULLS:
34995 				enterOuterAlt(_localctx, 2);
34996 				{
34997 				setState(4938);
34998 				match(ANSI_NULLS);
34999 				setState(4939);
35000 				_la = _input.LA(1);
35001 				if ( !(_la==ON || _la==OFF) ) {
35002 				_errHandler.recoverInline(this);
35003 				}
35004 				else {
35005 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35006 					_errHandler.reportMatch(this);
35007 					consume();
35008 				}
35009 				}
35010 				break;
35011 			case ANSI_PADDING:
35012 				enterOuterAlt(_localctx, 3);
35013 				{
35014 				setState(4940);
35015 				match(ANSI_PADDING);
35016 				setState(4941);
35017 				_la = _input.LA(1);
35018 				if ( !(_la==ON || _la==OFF) ) {
35019 				_errHandler.recoverInline(this);
35020 				}
35021 				else {
35022 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35023 					_errHandler.reportMatch(this);
35024 					consume();
35025 				}
35026 				}
35027 				break;
35028 			case ANSI_WARNINGS:
35029 				enterOuterAlt(_localctx, 4);
35030 				{
35031 				setState(4942);
35032 				match(ANSI_WARNINGS);
35033 				setState(4943);
35034 				_la = _input.LA(1);
35035 				if ( !(_la==ON || _la==OFF) ) {
35036 				_errHandler.recoverInline(this);
35037 				}
35038 				else {
35039 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35040 					_errHandler.reportMatch(this);
35041 					consume();
35042 				}
35043 				}
35044 				break;
35045 			case ARITHABORT:
35046 				enterOuterAlt(_localctx, 5);
35047 				{
35048 				setState(4944);
35049 				match(ARITHABORT);
35050 				setState(4945);
35051 				_la = _input.LA(1);
35052 				if ( !(_la==ON || _la==OFF) ) {
35053 				_errHandler.recoverInline(this);
35054 				}
35055 				else {
35056 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35057 					_errHandler.reportMatch(this);
35058 					consume();
35059 				}
35060 				}
35061 				break;
35062 			case COMPATIBILITY_LEVEL:
35063 				enterOuterAlt(_localctx, 6);
35064 				{
35065 				setState(4946);
35066 				match(COMPATIBILITY_LEVEL);
35067 				setState(4947);
35068 				match(EQ_);
35069 				setState(4948);
35070 				match(NUMBER_);
35071 				}
35072 				break;
35073 			case CONCAT_NULL_YIELDS_NULL:
35074 				enterOuterAlt(_localctx, 7);
35075 				{
35076 				setState(4949);
35077 				match(CONCAT_NULL_YIELDS_NULL);
35078 				setState(4950);
35079 				_la = _input.LA(1);
35080 				if ( !(_la==ON || _la==OFF) ) {
35081 				_errHandler.recoverInline(this);
35082 				}
35083 				else {
35084 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35085 					_errHandler.reportMatch(this);
35086 					consume();
35087 				}
35088 				}
35089 				break;
35090 			case NUMERIC_ROUNDABORT:
35091 				enterOuterAlt(_localctx, 8);
35092 				{
35093 				setState(4951);
35094 				match(NUMERIC_ROUNDABORT);
35095 				setState(4952);
35096 				_la = _input.LA(1);
35097 				if ( !(_la==ON || _la==OFF) ) {
35098 				_errHandler.recoverInline(this);
35099 				}
35100 				else {
35101 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35102 					_errHandler.reportMatch(this);
35103 					consume();
35104 				}
35105 				}
35106 				break;
35107 			case QUOTED_IDENTIFIER:
35108 				enterOuterAlt(_localctx, 9);
35109 				{
35110 				setState(4953);
35111 				match(QUOTED_IDENTIFIER);
35112 				setState(4954);
35113 				_la = _input.LA(1);
35114 				if ( !(_la==ON || _la==OFF) ) {
35115 				_errHandler.recoverInline(this);
35116 				}
35117 				else {
35118 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35119 					_errHandler.reportMatch(this);
35120 					consume();
35121 				}
35122 				}
35123 				break;
35124 			case RECURSIVE_TRIGGERS:
35125 				enterOuterAlt(_localctx, 10);
35126 				{
35127 				setState(4955);
35128 				match(RECURSIVE_TRIGGERS);
35129 				setState(4956);
35130 				_la = _input.LA(1);
35131 				if ( !(_la==ON || _la==OFF) ) {
35132 				_errHandler.recoverInline(this);
35133 				}
35134 				else {
35135 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35136 					_errHandler.reportMatch(this);
35137 					consume();
35138 				}
35139 				}
35140 				break;
35141 			default:
35142 				throw new NoViableAltException(this);
35143 			}
35144 		}
35145 		catch (RecognitionException re) {
35146 			_localctx.exception = re;
35147 			_errHandler.reportError(this, re);
35148 			_errHandler.recover(this, re);
35149 		}
35150 		finally {
35151 			exitRule();
35152 		}
35153 		return _localctx;
35154 	}
35155 
35156 	public static class SnapshotOptionContext extends ParserRuleContext {
35157 		public TerminalNode ALLOW_SNAPSHOT_ISOLATION() { return getToken(SQLServerStatementParser.ALLOW_SNAPSHOT_ISOLATION, 0); }
35158 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
35159 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
35160 		public TerminalNode READ_COMMITTED_SNAPSHOT() { return getToken(SQLServerStatementParser.READ_COMMITTED_SNAPSHOT, 0); }
35161 		public TerminalNode MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT() { return getToken(SQLServerStatementParser.MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT, 0); }
35162 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
35163 		public SnapshotOptionContext(ParserRuleContext parent, int invokingState) {
35164 			super(parent, invokingState);
35165 		}
35166 		@Override public int getRuleIndex() { return RULE_snapshotOption; }
35167 		@Override
35168 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35169 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSnapshotOption(this);
35170 			else return visitor.visitChildren(this);
35171 		}
35172 	}
35173 
35174 	public final SnapshotOptionContext snapshotOption() throws RecognitionException {
35175 		SnapshotOptionContext _localctx = new SnapshotOptionContext(_ctx, getState());
35176 		enterRule(_localctx, 672, RULE_snapshotOption);
35177 		int _la;
35178 		try {
35179 			setState(4966);
35180 			_errHandler.sync(this);
35181 			switch (_input.LA(1)) {
35182 			case ALLOW_SNAPSHOT_ISOLATION:
35183 				enterOuterAlt(_localctx, 1);
35184 				{
35185 				setState(4959);
35186 				match(ALLOW_SNAPSHOT_ISOLATION);
35187 				setState(4960);
35188 				_la = _input.LA(1);
35189 				if ( !(_la==ON || _la==OFF) ) {
35190 				_errHandler.recoverInline(this);
35191 				}
35192 				else {
35193 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35194 					_errHandler.reportMatch(this);
35195 					consume();
35196 				}
35197 				}
35198 				break;
35199 			case READ_COMMITTED_SNAPSHOT:
35200 				enterOuterAlt(_localctx, 2);
35201 				{
35202 				setState(4961);
35203 				match(READ_COMMITTED_SNAPSHOT);
35204 				setState(4962);
35205 				_la = _input.LA(1);
35206 				if ( !(_la==ON || _la==OFF) ) {
35207 				_errHandler.recoverInline(this);
35208 				}
35209 				else {
35210 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35211 					_errHandler.reportMatch(this);
35212 					consume();
35213 				}
35214 				}
35215 				break;
35216 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
35217 				enterOuterAlt(_localctx, 3);
35218 				{
35219 				setState(4963);
35220 				match(MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT);
35221 				setState(4964);
35222 				match(EQ_);
35223 				setState(4965);
35224 				_la = _input.LA(1);
35225 				if ( !(_la==ON || _la==OFF) ) {
35226 				_errHandler.recoverInline(this);
35227 				}
35228 				else {
35229 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35230 					_errHandler.reportMatch(this);
35231 					consume();
35232 				}
35233 				}
35234 				break;
35235 			default:
35236 				throw new NoViableAltException(this);
35237 			}
35238 		}
35239 		catch (RecognitionException re) {
35240 			_localctx.exception = re;
35241 			_errHandler.reportError(this, re);
35242 			_errHandler.recover(this, re);
35243 		}
35244 		finally {
35245 			exitRule();
35246 		}
35247 		return _localctx;
35248 	}
35249 
35250 	public static class ServiceBrokerOptionContext extends ParserRuleContext {
35251 		public TerminalNode ENABLE_BROKER() { return getToken(SQLServerStatementParser.ENABLE_BROKER, 0); }
35252 		public TerminalNode DISABLE_BROKER() { return getToken(SQLServerStatementParser.DISABLE_BROKER, 0); }
35253 		public TerminalNode NEW_BROKER() { return getToken(SQLServerStatementParser.NEW_BROKER, 0); }
35254 		public TerminalNode ERROR_BROKER_CONVERSATIONS() { return getToken(SQLServerStatementParser.ERROR_BROKER_CONVERSATIONS, 0); }
35255 		public TerminalNode HONOR_BROKER_PRIORITY() { return getToken(SQLServerStatementParser.HONOR_BROKER_PRIORITY, 0); }
35256 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
35257 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
35258 		public ServiceBrokerOptionContext(ParserRuleContext parent, int invokingState) {
35259 			super(parent, invokingState);
35260 		}
35261 		@Override public int getRuleIndex() { return RULE_serviceBrokerOption; }
35262 		@Override
35263 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35264 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerOption(this);
35265 			else return visitor.visitChildren(this);
35266 		}
35267 	}
35268 
35269 	public final ServiceBrokerOptionContext serviceBrokerOption() throws RecognitionException {
35270 		ServiceBrokerOptionContext _localctx = new ServiceBrokerOptionContext(_ctx, getState());
35271 		enterRule(_localctx, 674, RULE_serviceBrokerOption);
35272 		int _la;
35273 		try {
35274 			setState(4974);
35275 			_errHandler.sync(this);
35276 			switch (_input.LA(1)) {
35277 			case ENABLE_BROKER:
35278 				enterOuterAlt(_localctx, 1);
35279 				{
35280 				setState(4968);
35281 				match(ENABLE_BROKER);
35282 				}
35283 				break;
35284 			case DISABLE_BROKER:
35285 				enterOuterAlt(_localctx, 2);
35286 				{
35287 				setState(4969);
35288 				match(DISABLE_BROKER);
35289 				}
35290 				break;
35291 			case NEW_BROKER:
35292 				enterOuterAlt(_localctx, 3);
35293 				{
35294 				setState(4970);
35295 				match(NEW_BROKER);
35296 				}
35297 				break;
35298 			case ERROR_BROKER_CONVERSATIONS:
35299 				enterOuterAlt(_localctx, 4);
35300 				{
35301 				setState(4971);
35302 				match(ERROR_BROKER_CONVERSATIONS);
35303 				}
35304 				break;
35305 			case HONOR_BROKER_PRIORITY:
35306 				enterOuterAlt(_localctx, 5);
35307 				{
35308 				setState(4972);
35309 				match(HONOR_BROKER_PRIORITY);
35310 				setState(4973);
35311 				_la = _input.LA(1);
35312 				if ( !(_la==ON || _la==OFF) ) {
35313 				_errHandler.recoverInline(this);
35314 				}
35315 				else {
35316 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35317 					_errHandler.reportMatch(this);
35318 					consume();
35319 				}
35320 				}
35321 				break;
35322 			default:
35323 				throw new NoViableAltException(this);
35324 			}
35325 		}
35326 		catch (RecognitionException re) {
35327 			_localctx.exception = re;
35328 			_errHandler.reportError(this, re);
35329 			_errHandler.recover(this, re);
35330 		}
35331 		finally {
35332 			exitRule();
35333 		}
35334 		return _localctx;
35335 	}
35336 
35337 	public static class TargetRecoveryTimeOptionContext extends ParserRuleContext {
35338 		public TerminalNode TARGET_RECOVERY_TIME() { return getToken(SQLServerStatementParser.TARGET_RECOVERY_TIME, 0); }
35339 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
35340 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
35341 		public TerminalNode SECONDS() { return getToken(SQLServerStatementParser.SECONDS, 0); }
35342 		public TerminalNode MINUTES() { return getToken(SQLServerStatementParser.MINUTES, 0); }
35343 		public TargetRecoveryTimeOptionContext(ParserRuleContext parent, int invokingState) {
35344 			super(parent, invokingState);
35345 		}
35346 		@Override public int getRuleIndex() { return RULE_targetRecoveryTimeOption; }
35347 		@Override
35348 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35349 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTargetRecoveryTimeOption(this);
35350 			else return visitor.visitChildren(this);
35351 		}
35352 	}
35353 
35354 	public final TargetRecoveryTimeOptionContext targetRecoveryTimeOption() throws RecognitionException {
35355 		TargetRecoveryTimeOptionContext _localctx = new TargetRecoveryTimeOptionContext(_ctx, getState());
35356 		enterRule(_localctx, 676, RULE_targetRecoveryTimeOption);
35357 		int _la;
35358 		try {
35359 			enterOuterAlt(_localctx, 1);
35360 			{
35361 			setState(4976);
35362 			match(TARGET_RECOVERY_TIME);
35363 			setState(4977);
35364 			match(EQ_);
35365 			setState(4978);
35366 			match(NUMBER_);
35367 			setState(4979);
35368 			_la = _input.LA(1);
35369 			if ( !(_la==MINUTES || _la==SECONDS) ) {
35370 			_errHandler.recoverInline(this);
35371 			}
35372 			else {
35373 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
35374 				_errHandler.reportMatch(this);
35375 				consume();
35376 			}
35377 			}
35378 		}
35379 		catch (RecognitionException re) {
35380 			_localctx.exception = re;
35381 			_errHandler.reportError(this, re);
35382 			_errHandler.recover(this, re);
35383 		}
35384 		finally {
35385 			exitRule();
35386 		}
35387 		return _localctx;
35388 	}
35389 
35390 	public static class TerminationContext extends ParserRuleContext {
35391 		public TerminalNode ROLLBACK() { return getToken(SQLServerStatementParser.ROLLBACK, 0); }
35392 		public TerminalNode AFTER() { return getToken(SQLServerStatementParser.AFTER, 0); }
35393 		public TerminalNode NUMBER_() { return getToken(SQLServerStatementParser.NUMBER_, 0); }
35394 		public TerminalNode SECONDS() { return getToken(SQLServerStatementParser.SECONDS, 0); }
35395 		public TerminalNode IMMEDIATE() { return getToken(SQLServerStatementParser.IMMEDIATE, 0); }
35396 		public TerminalNode NO_WAIT() { return getToken(SQLServerStatementParser.NO_WAIT, 0); }
35397 		public TerminationContext(ParserRuleContext parent, int invokingState) {
35398 			super(parent, invokingState);
35399 		}
35400 		@Override public int getRuleIndex() { return RULE_termination; }
35401 		@Override
35402 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35403 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTermination(this);
35404 			else return visitor.visitChildren(this);
35405 		}
35406 	}
35407 
35408 	public final TerminationContext termination() throws RecognitionException {
35409 		TerminationContext _localctx = new TerminationContext(_ctx, getState());
35410 		enterRule(_localctx, 678, RULE_termination);
35411 		int _la;
35412 		try {
35413 			setState(4990);
35414 			_errHandler.sync(this);
35415 			switch ( getInterpreter().adaptivePredict(_input,534,_ctx) ) {
35416 			case 1:
35417 				enterOuterAlt(_localctx, 1);
35418 				{
35419 				setState(4981);
35420 				match(ROLLBACK);
35421 				setState(4982);
35422 				match(AFTER);
35423 				setState(4983);
35424 				match(NUMBER_);
35425 				setState(4985);
35426 				_errHandler.sync(this);
35427 				_la = _input.LA(1);
35428 				if (_la==SECONDS) {
35429 					{
35430 					setState(4984);
35431 					match(SECONDS);
35432 					}
35433 				}
35434 
35435 				}
35436 				break;
35437 			case 2:
35438 				enterOuterAlt(_localctx, 2);
35439 				{
35440 				setState(4987);
35441 				match(ROLLBACK);
35442 				setState(4988);
35443 				match(IMMEDIATE);
35444 				}
35445 				break;
35446 			case 3:
35447 				enterOuterAlt(_localctx, 3);
35448 				{
35449 				setState(4989);
35450 				match(NO_WAIT);
35451 				}
35452 				break;
35453 			}
35454 		}
35455 		catch (RecognitionException re) {
35456 			_localctx.exception = re;
35457 			_errHandler.reportError(this, re);
35458 			_errHandler.recover(this, re);
35459 		}
35460 		finally {
35461 			exitRule();
35462 		}
35463 		return _localctx;
35464 	}
35465 
35466 	public static class CreateServiceClauseContext extends ParserRuleContext {
35467 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
35468 		public List<ContractNameContext> contractName() {
35469 			return getRuleContexts(ContractNameContext.class);
35470 		}
35471 		public ContractNameContext contractName(int i) {
35472 			return getRuleContext(ContractNameContext.class,i);
35473 		}
35474 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
35475 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
35476 		public TerminalNode COMMA_(int i) {
35477 			return getToken(SQLServerStatementParser.COMMA_, i);
35478 		}
35479 		public CreateServiceClauseContext(ParserRuleContext parent, int invokingState) {
35480 			super(parent, invokingState);
35481 		}
35482 		@Override public int getRuleIndex() { return RULE_createServiceClause; }
35483 		@Override
35484 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35485 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateServiceClause(this);
35486 			else return visitor.visitChildren(this);
35487 		}
35488 	}
35489 
35490 	public final CreateServiceClauseContext createServiceClause() throws RecognitionException {
35491 		CreateServiceClauseContext _localctx = new CreateServiceClauseContext(_ctx, getState());
35492 		enterRule(_localctx, 680, RULE_createServiceClause);
35493 		int _la;
35494 		try {
35495 			enterOuterAlt(_localctx, 1);
35496 			{
35497 			setState(4992);
35498 			match(LP_);
35499 			setState(4993);
35500 			contractName();
35501 			setState(4998);
35502 			_errHandler.sync(this);
35503 			_la = _input.LA(1);
35504 			while (_la==COMMA_) {
35505 				{
35506 				{
35507 				setState(4994);
35508 				match(COMMA_);
35509 				setState(4995);
35510 				contractName();
35511 				}
35512 				}
35513 				setState(5000);
35514 				_errHandler.sync(this);
35515 				_la = _input.LA(1);
35516 			}
35517 			setState(5001);
35518 			match(RP_);
35519 			}
35520 		}
35521 		catch (RecognitionException re) {
35522 			_localctx.exception = re;
35523 			_errHandler.reportError(this, re);
35524 			_errHandler.recover(this, re);
35525 		}
35526 		finally {
35527 			exitRule();
35528 		}
35529 		return _localctx;
35530 	}
35531 
35532 	public static class AlterServiceClauseContext extends ParserRuleContext {
35533 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
35534 		public List<AlterServiceOptArgContext> alterServiceOptArg() {
35535 			return getRuleContexts(AlterServiceOptArgContext.class);
35536 		}
35537 		public AlterServiceOptArgContext alterServiceOptArg(int i) {
35538 			return getRuleContext(AlterServiceOptArgContext.class,i);
35539 		}
35540 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
35541 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
35542 		public TerminalNode COMMA_(int i) {
35543 			return getToken(SQLServerStatementParser.COMMA_, i);
35544 		}
35545 		public AlterServiceClauseContext(ParserRuleContext parent, int invokingState) {
35546 			super(parent, invokingState);
35547 		}
35548 		@Override public int getRuleIndex() { return RULE_alterServiceClause; }
35549 		@Override
35550 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35551 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterServiceClause(this);
35552 			else return visitor.visitChildren(this);
35553 		}
35554 	}
35555 
35556 	public final AlterServiceClauseContext alterServiceClause() throws RecognitionException {
35557 		AlterServiceClauseContext _localctx = new AlterServiceClauseContext(_ctx, getState());
35558 		enterRule(_localctx, 682, RULE_alterServiceClause);
35559 		int _la;
35560 		try {
35561 			enterOuterAlt(_localctx, 1);
35562 			{
35563 			setState(5003);
35564 			match(LP_);
35565 			setState(5004);
35566 			alterServiceOptArg();
35567 			setState(5009);
35568 			_errHandler.sync(this);
35569 			_la = _input.LA(1);
35570 			while (_la==COMMA_) {
35571 				{
35572 				{
35573 				setState(5005);
35574 				match(COMMA_);
35575 				setState(5006);
35576 				alterServiceOptArg();
35577 				}
35578 				}
35579 				setState(5011);
35580 				_errHandler.sync(this);
35581 				_la = _input.LA(1);
35582 			}
35583 			setState(5012);
35584 			match(RP_);
35585 			}
35586 		}
35587 		catch (RecognitionException re) {
35588 			_localctx.exception = re;
35589 			_errHandler.reportError(this, re);
35590 			_errHandler.recover(this, re);
35591 		}
35592 		finally {
35593 			exitRule();
35594 		}
35595 		return _localctx;
35596 	}
35597 
35598 	public static class AlterServiceOptArgContext extends ParserRuleContext {
35599 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
35600 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
35601 		public ContractNameContext contractName() {
35602 			return getRuleContext(ContractNameContext.class,0);
35603 		}
35604 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
35605 		public AlterServiceOptArgContext(ParserRuleContext parent, int invokingState) {
35606 			super(parent, invokingState);
35607 		}
35608 		@Override public int getRuleIndex() { return RULE_alterServiceOptArg; }
35609 		@Override
35610 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35611 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterServiceOptArg(this);
35612 			else return visitor.visitChildren(this);
35613 		}
35614 	}
35615 
35616 	public final AlterServiceOptArgContext alterServiceOptArg() throws RecognitionException {
35617 		AlterServiceOptArgContext _localctx = new AlterServiceOptArgContext(_ctx, getState());
35618 		enterRule(_localctx, 684, RULE_alterServiceOptArg);
35619 		try {
35620 			setState(5020);
35621 			_errHandler.sync(this);
35622 			switch (_input.LA(1)) {
35623 			case ADD:
35624 				enterOuterAlt(_localctx, 1);
35625 				{
35626 				setState(5014);
35627 				match(ADD);
35628 				setState(5015);
35629 				match(CONTRACT);
35630 				setState(5016);
35631 				contractName();
35632 				}
35633 				break;
35634 			case DROP:
35635 				enterOuterAlt(_localctx, 2);
35636 				{
35637 				setState(5017);
35638 				match(DROP);
35639 				setState(5018);
35640 				match(CONTRACT);
35641 				setState(5019);
35642 				contractName();
35643 				}
35644 				break;
35645 			default:
35646 				throw new NoViableAltException(this);
35647 			}
35648 		}
35649 		catch (RecognitionException re) {
35650 			_localctx.exception = re;
35651 			_errHandler.reportError(this, re);
35652 			_errHandler.recover(this, re);
35653 		}
35654 		finally {
35655 			exitRule();
35656 		}
35657 		return _localctx;
35658 	}
35659 
35660 	public static class SchemaNameClauseContext extends ParserRuleContext {
35661 		public SchemaNameContext schemaName() {
35662 			return getRuleContext(SchemaNameContext.class,0);
35663 		}
35664 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
35665 		public IgnoredIdentifierContext ignoredIdentifier() {
35666 			return getRuleContext(IgnoredIdentifierContext.class,0);
35667 		}
35668 		public SchemaNameClauseContext(ParserRuleContext parent, int invokingState) {
35669 			super(parent, invokingState);
35670 		}
35671 		@Override public int getRuleIndex() { return RULE_schemaNameClause; }
35672 		@Override
35673 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35674 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaNameClause(this);
35675 			else return visitor.visitChildren(this);
35676 		}
35677 	}
35678 
35679 	public final SchemaNameClauseContext schemaNameClause() throws RecognitionException {
35680 		SchemaNameClauseContext _localctx = new SchemaNameClauseContext(_ctx, getState());
35681 		enterRule(_localctx, 686, RULE_schemaNameClause);
35682 		try {
35683 			setState(5029);
35684 			_errHandler.sync(this);
35685 			switch ( getInterpreter().adaptivePredict(_input,538,_ctx) ) {
35686 			case 1:
35687 				enterOuterAlt(_localctx, 1);
35688 				{
35689 				setState(5022);
35690 				schemaName();
35691 				}
35692 				break;
35693 			case 2:
35694 				enterOuterAlt(_localctx, 2);
35695 				{
35696 				setState(5023);
35697 				match(AUTHORIZATION);
35698 				setState(5024);
35699 				ignoredIdentifier();
35700 				}
35701 				break;
35702 			case 3:
35703 				enterOuterAlt(_localctx, 3);
35704 				{
35705 				setState(5025);
35706 				schemaName();
35707 				setState(5026);
35708 				match(AUTHORIZATION);
35709 				setState(5027);
35710 				ignoredIdentifier();
35711 				}
35712 				break;
35713 			}
35714 		}
35715 		catch (RecognitionException re) {
35716 			_localctx.exception = re;
35717 			_errHandler.reportError(this, re);
35718 			_errHandler.recover(this, re);
35719 		}
35720 		finally {
35721 			exitRule();
35722 		}
35723 		return _localctx;
35724 	}
35725 
35726 	public static class SchemaElementContext extends ParserRuleContext {
35727 		public CreateTableContext createTable() {
35728 			return getRuleContext(CreateTableContext.class,0);
35729 		}
35730 		public CreateViewContext createView() {
35731 			return getRuleContext(CreateViewContext.class,0);
35732 		}
35733 		public GrantContext grant() {
35734 			return getRuleContext(GrantContext.class,0);
35735 		}
35736 		public RevokeContext revoke() {
35737 			return getRuleContext(RevokeContext.class,0);
35738 		}
35739 		public DenyContext deny() {
35740 			return getRuleContext(DenyContext.class,0);
35741 		}
35742 		public SchemaElementContext(ParserRuleContext parent, int invokingState) {
35743 			super(parent, invokingState);
35744 		}
35745 		@Override public int getRuleIndex() { return RULE_schemaElement; }
35746 		@Override
35747 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35748 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaElement(this);
35749 			else return visitor.visitChildren(this);
35750 		}
35751 	}
35752 
35753 	public final SchemaElementContext schemaElement() throws RecognitionException {
35754 		SchemaElementContext _localctx = new SchemaElementContext(_ctx, getState());
35755 		enterRule(_localctx, 688, RULE_schemaElement);
35756 		try {
35757 			setState(5036);
35758 			_errHandler.sync(this);
35759 			switch ( getInterpreter().adaptivePredict(_input,539,_ctx) ) {
35760 			case 1:
35761 				enterOuterAlt(_localctx, 1);
35762 				{
35763 				setState(5031);
35764 				createTable();
35765 				}
35766 				break;
35767 			case 2:
35768 				enterOuterAlt(_localctx, 2);
35769 				{
35770 				setState(5032);
35771 				createView();
35772 				}
35773 				break;
35774 			case 3:
35775 				enterOuterAlt(_localctx, 3);
35776 				{
35777 				setState(5033);
35778 				grant();
35779 				}
35780 				break;
35781 			case 4:
35782 				enterOuterAlt(_localctx, 4);
35783 				{
35784 				setState(5034);
35785 				revoke();
35786 				}
35787 				break;
35788 			case 5:
35789 				enterOuterAlt(_localctx, 5);
35790 				{
35791 				setState(5035);
35792 				deny();
35793 				}
35794 				break;
35795 			}
35796 		}
35797 		catch (RecognitionException re) {
35798 			_localctx.exception = re;
35799 			_errHandler.reportError(this, re);
35800 			_errHandler.recover(this, re);
35801 		}
35802 		finally {
35803 			exitRule();
35804 		}
35805 		return _localctx;
35806 	}
35807 
35808 	public static class CreateTableAsSelectClauseContext extends ParserRuleContext {
35809 		public CreateTableAsSelectContext createTableAsSelect() {
35810 			return getRuleContext(CreateTableAsSelectContext.class,0);
35811 		}
35812 		public CreateRemoteTableAsSelectContext createRemoteTableAsSelect() {
35813 			return getRuleContext(CreateRemoteTableAsSelectContext.class,0);
35814 		}
35815 		public CreateTableAsSelectClauseContext(ParserRuleContext parent, int invokingState) {
35816 			super(parent, invokingState);
35817 		}
35818 		@Override public int getRuleIndex() { return RULE_createTableAsSelectClause; }
35819 		@Override
35820 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35821 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableAsSelectClause(this);
35822 			else return visitor.visitChildren(this);
35823 		}
35824 	}
35825 
35826 	public final CreateTableAsSelectClauseContext createTableAsSelectClause() throws RecognitionException {
35827 		CreateTableAsSelectClauseContext _localctx = new CreateTableAsSelectClauseContext(_ctx, getState());
35828 		enterRule(_localctx, 690, RULE_createTableAsSelectClause);
35829 		try {
35830 			setState(5040);
35831 			_errHandler.sync(this);
35832 			switch ( getInterpreter().adaptivePredict(_input,540,_ctx) ) {
35833 			case 1:
35834 				enterOuterAlt(_localctx, 1);
35835 				{
35836 				setState(5038);
35837 				createTableAsSelect();
35838 				}
35839 				break;
35840 			case 2:
35841 				enterOuterAlt(_localctx, 2);
35842 				{
35843 				setState(5039);
35844 				createRemoteTableAsSelect();
35845 				}
35846 				break;
35847 			}
35848 		}
35849 		catch (RecognitionException re) {
35850 			_localctx.exception = re;
35851 			_errHandler.reportError(this, re);
35852 			_errHandler.recover(this, re);
35853 		}
35854 		finally {
35855 			exitRule();
35856 		}
35857 		return _localctx;
35858 	}
35859 
35860 	public static class CreateTableAsSelectContext extends ParserRuleContext {
35861 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
35862 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
35863 		public TableNameContext tableName() {
35864 			return getRuleContext(TableNameContext.class,0);
35865 		}
35866 		public WithDistributionOptionContext withDistributionOption() {
35867 			return getRuleContext(WithDistributionOptionContext.class,0);
35868 		}
35869 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
35870 		public SelectContext select() {
35871 			return getRuleContext(SelectContext.class,0);
35872 		}
35873 		public OptionQueryHintClauseContext optionQueryHintClause() {
35874 			return getRuleContext(OptionQueryHintClauseContext.class,0);
35875 		}
35876 		public ColumnNamesContext columnNames() {
35877 			return getRuleContext(ColumnNamesContext.class,0);
35878 		}
35879 		public CreateTableAsSelectContext(ParserRuleContext parent, int invokingState) {
35880 			super(parent, invokingState);
35881 		}
35882 		@Override public int getRuleIndex() { return RULE_createTableAsSelect; }
35883 		@Override
35884 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35885 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateTableAsSelect(this);
35886 			else return visitor.visitChildren(this);
35887 		}
35888 	}
35889 
35890 	public final CreateTableAsSelectContext createTableAsSelect() throws RecognitionException {
35891 		CreateTableAsSelectContext _localctx = new CreateTableAsSelectContext(_ctx, getState());
35892 		enterRule(_localctx, 692, RULE_createTableAsSelect);
35893 		int _la;
35894 		try {
35895 			enterOuterAlt(_localctx, 1);
35896 			{
35897 			setState(5042);
35898 			match(CREATE);
35899 			setState(5043);
35900 			match(TABLE);
35901 			setState(5044);
35902 			tableName();
35903 			setState(5046);
35904 			_errHandler.sync(this);
35905 			_la = _input.LA(1);
35906 			if (_la==LP_) {
35907 				{
35908 				setState(5045);
35909 				columnNames();
35910 				}
35911 			}
35912 
35913 			setState(5048);
35914 			withDistributionOption();
35915 			setState(5049);
35916 			match(AS);
35917 			setState(5050);
35918 			select();
35919 			setState(5051);
35920 			optionQueryHintClause();
35921 			}
35922 		}
35923 		catch (RecognitionException re) {
35924 			_localctx.exception = re;
35925 			_errHandler.reportError(this, re);
35926 			_errHandler.recover(this, re);
35927 		}
35928 		finally {
35929 			exitRule();
35930 		}
35931 		return _localctx;
35932 	}
35933 
35934 	public static class CreateRemoteTableAsSelectContext extends ParserRuleContext {
35935 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
35936 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
35937 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
35938 		public TableNameContext tableName() {
35939 			return getRuleContext(TableNameContext.class,0);
35940 		}
35941 		public TerminalNode AT() { return getToken(SQLServerStatementParser.AT, 0); }
35942 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
35943 		public TerminalNode LP_(int i) {
35944 			return getToken(SQLServerStatementParser.LP_, i);
35945 		}
35946 		public StringLiteralsContext stringLiterals() {
35947 			return getRuleContext(StringLiteralsContext.class,0);
35948 		}
35949 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
35950 		public TerminalNode RP_(int i) {
35951 			return getToken(SQLServerStatementParser.RP_, i);
35952 		}
35953 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
35954 		public SelectContext select() {
35955 			return getRuleContext(SelectContext.class,0);
35956 		}
35957 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
35958 		public TerminalNode BATCH_SIZE() { return getToken(SQLServerStatementParser.BATCH_SIZE, 0); }
35959 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
35960 		public TerminalNode INT_NUM_() { return getToken(SQLServerStatementParser.INT_NUM_, 0); }
35961 		public CreateRemoteTableAsSelectContext(ParserRuleContext parent, int invokingState) {
35962 			super(parent, invokingState);
35963 		}
35964 		@Override public int getRuleIndex() { return RULE_createRemoteTableAsSelect; }
35965 		@Override
35966 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
35967 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateRemoteTableAsSelect(this);
35968 			else return visitor.visitChildren(this);
35969 		}
35970 	}
35971 
35972 	public final CreateRemoteTableAsSelectContext createRemoteTableAsSelect() throws RecognitionException {
35973 		CreateRemoteTableAsSelectContext _localctx = new CreateRemoteTableAsSelectContext(_ctx, getState());
35974 		enterRule(_localctx, 694, RULE_createRemoteTableAsSelect);
35975 		int _la;
35976 		try {
35977 			enterOuterAlt(_localctx, 1);
35978 			{
35979 			setState(5053);
35980 			match(CREATE);
35981 			setState(5054);
35982 			match(REMOTE);
35983 			setState(5055);
35984 			match(TABLE);
35985 			setState(5056);
35986 			tableName();
35987 			setState(5057);
35988 			match(AT);
35989 			setState(5058);
35990 			match(LP_);
35991 			setState(5059);
35992 			stringLiterals();
35993 			setState(5060);
35994 			match(RP_);
35995 			setState(5067);
35996 			_errHandler.sync(this);
35997 			_la = _input.LA(1);
35998 			if (_la==WITH) {
35999 				{
36000 				setState(5061);
36001 				match(WITH);
36002 				setState(5062);
36003 				match(LP_);
36004 				setState(5063);
36005 				match(BATCH_SIZE);
36006 				setState(5064);
36007 				match(EQ_);
36008 				setState(5065);
36009 				match(INT_NUM_);
36010 				setState(5066);
36011 				match(RP_);
36012 				}
36013 			}
36014 
36015 			setState(5069);
36016 			match(AS);
36017 			setState(5070);
36018 			select();
36019 			}
36020 		}
36021 		catch (RecognitionException re) {
36022 			_localctx.exception = re;
36023 			_errHandler.reportError(this, re);
36024 			_errHandler.recover(this, re);
36025 		}
36026 		finally {
36027 			exitRule();
36028 		}
36029 		return _localctx;
36030 	}
36031 
36032 	public static class WithDistributionOptionContext extends ParserRuleContext {
36033 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
36034 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
36035 		public DistributionOptionContext distributionOption() {
36036 			return getRuleContext(DistributionOptionContext.class,0);
36037 		}
36038 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
36039 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
36040 		public TerminalNode COMMA_(int i) {
36041 			return getToken(SQLServerStatementParser.COMMA_, i);
36042 		}
36043 		public List<TableOptionContext> tableOption() {
36044 			return getRuleContexts(TableOptionContext.class);
36045 		}
36046 		public TableOptionContext tableOption(int i) {
36047 			return getRuleContext(TableOptionContext.class,i);
36048 		}
36049 		public WithDistributionOptionContext(ParserRuleContext parent, int invokingState) {
36050 			super(parent, invokingState);
36051 		}
36052 		@Override public int getRuleIndex() { return RULE_withDistributionOption; }
36053 		@Override
36054 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36055 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithDistributionOption(this);
36056 			else return visitor.visitChildren(this);
36057 		}
36058 	}
36059 
36060 	public final WithDistributionOptionContext withDistributionOption() throws RecognitionException {
36061 		WithDistributionOptionContext _localctx = new WithDistributionOptionContext(_ctx, getState());
36062 		enterRule(_localctx, 696, RULE_withDistributionOption);
36063 		int _la;
36064 		try {
36065 			enterOuterAlt(_localctx, 1);
36066 			{
36067 			setState(5072);
36068 			match(WITH);
36069 			setState(5073);
36070 			match(LP_);
36071 			setState(5074);
36072 			distributionOption();
36073 			setState(5084);
36074 			_errHandler.sync(this);
36075 			_la = _input.LA(1);
36076 			if (_la==COMMA_) {
36077 				{
36078 				setState(5075);
36079 				match(COMMA_);
36080 				setState(5076);
36081 				tableOption();
36082 				setState(5081);
36083 				_errHandler.sync(this);
36084 				_la = _input.LA(1);
36085 				while (_la==COMMA_) {
36086 					{
36087 					{
36088 					setState(5077);
36089 					match(COMMA_);
36090 					setState(5078);
36091 					tableOption();
36092 					}
36093 					}
36094 					setState(5083);
36095 					_errHandler.sync(this);
36096 					_la = _input.LA(1);
36097 				}
36098 				}
36099 			}
36100 
36101 			setState(5086);
36102 			match(RP_);
36103 			}
36104 		}
36105 		catch (RecognitionException re) {
36106 			_localctx.exception = re;
36107 			_errHandler.reportError(this, re);
36108 			_errHandler.recover(this, re);
36109 		}
36110 		finally {
36111 			exitRule();
36112 		}
36113 		return _localctx;
36114 	}
36115 
36116 	public static class OptionQueryHintClauseContext extends ParserRuleContext {
36117 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
36118 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
36119 		public List<QueryHintContext> queryHint() {
36120 			return getRuleContexts(QueryHintContext.class);
36121 		}
36122 		public QueryHintContext queryHint(int i) {
36123 			return getRuleContext(QueryHintContext.class,i);
36124 		}
36125 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
36126 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
36127 		public TerminalNode COMMA_(int i) {
36128 			return getToken(SQLServerStatementParser.COMMA_, i);
36129 		}
36130 		public OptionQueryHintClauseContext(ParserRuleContext parent, int invokingState) {
36131 			super(parent, invokingState);
36132 		}
36133 		@Override public int getRuleIndex() { return RULE_optionQueryHintClause; }
36134 		@Override
36135 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36136 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionQueryHintClause(this);
36137 			else return visitor.visitChildren(this);
36138 		}
36139 	}
36140 
36141 	public final OptionQueryHintClauseContext optionQueryHintClause() throws RecognitionException {
36142 		OptionQueryHintClauseContext _localctx = new OptionQueryHintClauseContext(_ctx, getState());
36143 		enterRule(_localctx, 698, RULE_optionQueryHintClause);
36144 		int _la;
36145 		try {
36146 			enterOuterAlt(_localctx, 1);
36147 			{
36148 			setState(5100);
36149 			_errHandler.sync(this);
36150 			_la = _input.LA(1);
36151 			if (_la==OPTION) {
36152 				{
36153 				setState(5088);
36154 				match(OPTION);
36155 				setState(5089);
36156 				match(LP_);
36157 				setState(5090);
36158 				queryHint();
36159 				setState(5095);
36160 				_errHandler.sync(this);
36161 				_la = _input.LA(1);
36162 				while (_la==COMMA_) {
36163 					{
36164 					{
36165 					setState(5091);
36166 					match(COMMA_);
36167 					setState(5092);
36168 					queryHint();
36169 					}
36170 					}
36171 					setState(5097);
36172 					_errHandler.sync(this);
36173 					_la = _input.LA(1);
36174 				}
36175 				setState(5098);
36176 				match(RP_);
36177 				}
36178 			}
36179 
36180 			}
36181 		}
36182 		catch (RecognitionException re) {
36183 			_localctx.exception = re;
36184 			_errHandler.reportError(this, re);
36185 			_errHandler.recover(this, re);
36186 		}
36187 		finally {
36188 			exitRule();
36189 		}
36190 		return _localctx;
36191 	}
36192 
36193 	public static class InsertContext extends ParserRuleContext {
36194 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
36195 		public TableNameContext tableName() {
36196 			return getRuleContext(TableNameContext.class,0);
36197 		}
36198 		public InsertDefaultValueContext insertDefaultValue() {
36199 			return getRuleContext(InsertDefaultValueContext.class,0);
36200 		}
36201 		public InsertValuesClauseContext insertValuesClause() {
36202 			return getRuleContext(InsertValuesClauseContext.class,0);
36203 		}
36204 		public InsertSelectClauseContext insertSelectClause() {
36205 			return getRuleContext(InsertSelectClauseContext.class,0);
36206 		}
36207 		public InsertExecClauseContext insertExecClause() {
36208 			return getRuleContext(InsertExecClauseContext.class,0);
36209 		}
36210 		public WithClauseContext withClause() {
36211 			return getRuleContext(WithClauseContext.class,0);
36212 		}
36213 		public TopContext top() {
36214 			return getRuleContext(TopContext.class,0);
36215 		}
36216 		public TerminalNode INTO() { return getToken(SQLServerStatementParser.INTO, 0); }
36217 		public AliasContext alias() {
36218 			return getRuleContext(AliasContext.class,0);
36219 		}
36220 		public WithTableHintContext withTableHint() {
36221 			return getRuleContext(WithTableHintContext.class,0);
36222 		}
36223 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
36224 		public InsertContext(ParserRuleContext parent, int invokingState) {
36225 			super(parent, invokingState);
36226 		}
36227 		@Override public int getRuleIndex() { return RULE_insert; }
36228 		@Override
36229 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36230 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsert(this);
36231 			else return visitor.visitChildren(this);
36232 		}
36233 	}
36234 
36235 	public final InsertContext insert() throws RecognitionException {
36236 		InsertContext _localctx = new InsertContext(_ctx, getState());
36237 		enterRule(_localctx, 700, RULE_insert);
36238 		int _la;
36239 		try {
36240 			enterOuterAlt(_localctx, 1);
36241 			{
36242 			setState(5103);
36243 			_errHandler.sync(this);
36244 			_la = _input.LA(1);
36245 			if (_la==WITH) {
36246 				{
36247 				setState(5102);
36248 				withClause();
36249 				}
36250 			}
36251 
36252 			setState(5105);
36253 			match(INSERT);
36254 			setState(5107);
36255 			_errHandler.sync(this);
36256 			switch ( getInterpreter().adaptivePredict(_input,548,_ctx) ) {
36257 			case 1:
36258 				{
36259 				setState(5106);
36260 				top();
36261 				}
36262 				break;
36263 			}
36264 			setState(5110);
36265 			_errHandler.sync(this);
36266 			_la = _input.LA(1);
36267 			if (_la==INTO) {
36268 				{
36269 				setState(5109);
36270 				match(INTO);
36271 				}
36272 			}
36273 
36274 			setState(5112);
36275 			tableName();
36276 			setState(5117);
36277 			_errHandler.sync(this);
36278 			switch ( getInterpreter().adaptivePredict(_input,551,_ctx) ) {
36279 			case 1:
36280 				{
36281 				setState(5114);
36282 				_errHandler.sync(this);
36283 				_la = _input.LA(1);
36284 				if (_la==AS) {
36285 					{
36286 					setState(5113);
36287 					match(AS);
36288 					}
36289 				}
36290 
36291 				setState(5116);
36292 				alias();
36293 				}
36294 				break;
36295 			}
36296 			setState(5120);
36297 			_errHandler.sync(this);
36298 			switch ( getInterpreter().adaptivePredict(_input,552,_ctx) ) {
36299 			case 1:
36300 				{
36301 				setState(5119);
36302 				withTableHint();
36303 				}
36304 				break;
36305 			}
36306 			setState(5126);
36307 			_errHandler.sync(this);
36308 			switch ( getInterpreter().adaptivePredict(_input,553,_ctx) ) {
36309 			case 1:
36310 				{
36311 				setState(5122);
36312 				insertDefaultValue();
36313 				}
36314 				break;
36315 			case 2:
36316 				{
36317 				setState(5123);
36318 				insertValuesClause();
36319 				}
36320 				break;
36321 			case 3:
36322 				{
36323 				setState(5124);
36324 				insertSelectClause();
36325 				}
36326 				break;
36327 			case 4:
36328 				{
36329 				setState(5125);
36330 				insertExecClause();
36331 				}
36332 				break;
36333 			}
36334 			}
36335 		}
36336 		catch (RecognitionException re) {
36337 			_localctx.exception = re;
36338 			_errHandler.reportError(this, re);
36339 			_errHandler.recover(this, re);
36340 		}
36341 		finally {
36342 			exitRule();
36343 		}
36344 		return _localctx;
36345 	}
36346 
36347 	public static class InsertDefaultValueContext extends ParserRuleContext {
36348 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
36349 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
36350 		public ColumnNamesContext columnNames() {
36351 			return getRuleContext(ColumnNamesContext.class,0);
36352 		}
36353 		public OutputClauseContext outputClause() {
36354 			return getRuleContext(OutputClauseContext.class,0);
36355 		}
36356 		public InsertDefaultValueContext(ParserRuleContext parent, int invokingState) {
36357 			super(parent, invokingState);
36358 		}
36359 		@Override public int getRuleIndex() { return RULE_insertDefaultValue; }
36360 		@Override
36361 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36362 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertDefaultValue(this);
36363 			else return visitor.visitChildren(this);
36364 		}
36365 	}
36366 
36367 	public final InsertDefaultValueContext insertDefaultValue() throws RecognitionException {
36368 		InsertDefaultValueContext _localctx = new InsertDefaultValueContext(_ctx, getState());
36369 		enterRule(_localctx, 702, RULE_insertDefaultValue);
36370 		int _la;
36371 		try {
36372 			enterOuterAlt(_localctx, 1);
36373 			{
36374 			setState(5129);
36375 			_errHandler.sync(this);
36376 			_la = _input.LA(1);
36377 			if (_la==LP_) {
36378 				{
36379 				setState(5128);
36380 				columnNames();
36381 				}
36382 			}
36383 
36384 			setState(5132);
36385 			_errHandler.sync(this);
36386 			_la = _input.LA(1);
36387 			if (_la==OUTPUT) {
36388 				{
36389 				setState(5131);
36390 				outputClause();
36391 				}
36392 			}
36393 
36394 			setState(5134);
36395 			match(DEFAULT);
36396 			setState(5135);
36397 			match(VALUES);
36398 			}
36399 		}
36400 		catch (RecognitionException re) {
36401 			_localctx.exception = re;
36402 			_errHandler.reportError(this, re);
36403 			_errHandler.recover(this, re);
36404 		}
36405 		finally {
36406 			exitRule();
36407 		}
36408 		return _localctx;
36409 	}
36410 
36411 	public static class InsertValuesClauseContext extends ParserRuleContext {
36412 		public TerminalNode VALUES() { return getToken(SQLServerStatementParser.VALUES, 0); }
36413 		public List<AssignmentValuesContext> assignmentValues() {
36414 			return getRuleContexts(AssignmentValuesContext.class);
36415 		}
36416 		public AssignmentValuesContext assignmentValues(int i) {
36417 			return getRuleContext(AssignmentValuesContext.class,i);
36418 		}
36419 		public ColumnNamesContext columnNames() {
36420 			return getRuleContext(ColumnNamesContext.class,0);
36421 		}
36422 		public OutputClauseContext outputClause() {
36423 			return getRuleContext(OutputClauseContext.class,0);
36424 		}
36425 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
36426 		public TerminalNode COMMA_(int i) {
36427 			return getToken(SQLServerStatementParser.COMMA_, i);
36428 		}
36429 		public InsertValuesClauseContext(ParserRuleContext parent, int invokingState) {
36430 			super(parent, invokingState);
36431 		}
36432 		@Override public int getRuleIndex() { return RULE_insertValuesClause; }
36433 		@Override
36434 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36435 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertValuesClause(this);
36436 			else return visitor.visitChildren(this);
36437 		}
36438 	}
36439 
36440 	public final InsertValuesClauseContext insertValuesClause() throws RecognitionException {
36441 		InsertValuesClauseContext _localctx = new InsertValuesClauseContext(_ctx, getState());
36442 		enterRule(_localctx, 704, RULE_insertValuesClause);
36443 		int _la;
36444 		try {
36445 			enterOuterAlt(_localctx, 1);
36446 			{
36447 			setState(5138);
36448 			_errHandler.sync(this);
36449 			_la = _input.LA(1);
36450 			if (_la==LP_) {
36451 				{
36452 				setState(5137);
36453 				columnNames();
36454 				}
36455 			}
36456 
36457 			setState(5141);
36458 			_errHandler.sync(this);
36459 			_la = _input.LA(1);
36460 			if (_la==OUTPUT) {
36461 				{
36462 				setState(5140);
36463 				outputClause();
36464 				}
36465 			}
36466 
36467 			setState(5143);
36468 			match(VALUES);
36469 			setState(5144);
36470 			assignmentValues();
36471 			setState(5149);
36472 			_errHandler.sync(this);
36473 			_la = _input.LA(1);
36474 			while (_la==COMMA_) {
36475 				{
36476 				{
36477 				setState(5145);
36478 				match(COMMA_);
36479 				setState(5146);
36480 				assignmentValues();
36481 				}
36482 				}
36483 				setState(5151);
36484 				_errHandler.sync(this);
36485 				_la = _input.LA(1);
36486 			}
36487 			}
36488 		}
36489 		catch (RecognitionException re) {
36490 			_localctx.exception = re;
36491 			_errHandler.reportError(this, re);
36492 			_errHandler.recover(this, re);
36493 		}
36494 		finally {
36495 			exitRule();
36496 		}
36497 		return _localctx;
36498 	}
36499 
36500 	public static class InsertSelectClauseContext extends ParserRuleContext {
36501 		public SelectContext select() {
36502 			return getRuleContext(SelectContext.class,0);
36503 		}
36504 		public ColumnNamesContext columnNames() {
36505 			return getRuleContext(ColumnNamesContext.class,0);
36506 		}
36507 		public OutputClauseContext outputClause() {
36508 			return getRuleContext(OutputClauseContext.class,0);
36509 		}
36510 		public InsertSelectClauseContext(ParserRuleContext parent, int invokingState) {
36511 			super(parent, invokingState);
36512 		}
36513 		@Override public int getRuleIndex() { return RULE_insertSelectClause; }
36514 		@Override
36515 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36516 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertSelectClause(this);
36517 			else return visitor.visitChildren(this);
36518 		}
36519 	}
36520 
36521 	public final InsertSelectClauseContext insertSelectClause() throws RecognitionException {
36522 		InsertSelectClauseContext _localctx = new InsertSelectClauseContext(_ctx, getState());
36523 		enterRule(_localctx, 706, RULE_insertSelectClause);
36524 		int _la;
36525 		try {
36526 			enterOuterAlt(_localctx, 1);
36527 			{
36528 			setState(5153);
36529 			_errHandler.sync(this);
36530 			_la = _input.LA(1);
36531 			if (_la==LP_) {
36532 				{
36533 				setState(5152);
36534 				columnNames();
36535 				}
36536 			}
36537 
36538 			setState(5156);
36539 			_errHandler.sync(this);
36540 			_la = _input.LA(1);
36541 			if (_la==OUTPUT) {
36542 				{
36543 				setState(5155);
36544 				outputClause();
36545 				}
36546 			}
36547 
36548 			setState(5158);
36549 			select();
36550 			}
36551 		}
36552 		catch (RecognitionException re) {
36553 			_localctx.exception = re;
36554 			_errHandler.reportError(this, re);
36555 			_errHandler.recover(this, re);
36556 		}
36557 		finally {
36558 			exitRule();
36559 		}
36560 		return _localctx;
36561 	}
36562 
36563 	public static class InsertExecClauseContext extends ParserRuleContext {
36564 		public ExecContext exec() {
36565 			return getRuleContext(ExecContext.class,0);
36566 		}
36567 		public ColumnNamesContext columnNames() {
36568 			return getRuleContext(ColumnNamesContext.class,0);
36569 		}
36570 		public InsertExecClauseContext(ParserRuleContext parent, int invokingState) {
36571 			super(parent, invokingState);
36572 		}
36573 		@Override public int getRuleIndex() { return RULE_insertExecClause; }
36574 		@Override
36575 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36576 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitInsertExecClause(this);
36577 			else return visitor.visitChildren(this);
36578 		}
36579 	}
36580 
36581 	public final InsertExecClauseContext insertExecClause() throws RecognitionException {
36582 		InsertExecClauseContext _localctx = new InsertExecClauseContext(_ctx, getState());
36583 		enterRule(_localctx, 708, RULE_insertExecClause);
36584 		int _la;
36585 		try {
36586 			enterOuterAlt(_localctx, 1);
36587 			{
36588 			setState(5161);
36589 			_errHandler.sync(this);
36590 			_la = _input.LA(1);
36591 			if (_la==LP_) {
36592 				{
36593 				setState(5160);
36594 				columnNames();
36595 				}
36596 			}
36597 
36598 			setState(5163);
36599 			exec();
36600 			}
36601 		}
36602 		catch (RecognitionException re) {
36603 			_localctx.exception = re;
36604 			_errHandler.reportError(this, re);
36605 			_errHandler.recover(this, re);
36606 		}
36607 		finally {
36608 			exitRule();
36609 		}
36610 		return _localctx;
36611 	}
36612 
36613 	public static class WithTableHintContext extends ParserRuleContext {
36614 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
36615 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
36616 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
36617 		public List<TableHintLimitedContext> tableHintLimited() {
36618 			return getRuleContexts(TableHintLimitedContext.class);
36619 		}
36620 		public TableHintLimitedContext tableHintLimited(int i) {
36621 			return getRuleContext(TableHintLimitedContext.class,i);
36622 		}
36623 		public WithTableHintContext(ParserRuleContext parent, int invokingState) {
36624 			super(parent, invokingState);
36625 		}
36626 		@Override public int getRuleIndex() { return RULE_withTableHint; }
36627 		@Override
36628 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36629 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithTableHint(this);
36630 			else return visitor.visitChildren(this);
36631 		}
36632 	}
36633 
36634 	public final WithTableHintContext withTableHint() throws RecognitionException {
36635 		WithTableHintContext _localctx = new WithTableHintContext(_ctx, getState());
36636 		enterRule(_localctx, 710, RULE_withTableHint);
36637 		int _la;
36638 		try {
36639 			enterOuterAlt(_localctx, 1);
36640 			{
36641 			setState(5166);
36642 			_errHandler.sync(this);
36643 			_la = _input.LA(1);
36644 			if (_la==WITH) {
36645 				{
36646 				setState(5165);
36647 				match(WITH);
36648 				}
36649 			}
36650 
36651 			setState(5168);
36652 			match(LP_);
36653 			{
36654 			setState(5170); 
36655 			_errHandler.sync(this);
36656 			_la = _input.LA(1);
36657 			do {
36658 				{
36659 				{
36660 				setState(5169);
36661 				tableHintLimited();
36662 				}
36663 				}
36664 				setState(5172); 
36665 				_errHandler.sync(this);
36666 				_la = _input.LA(1);
36667 			} while ( ((((_la - 216)) & ~0x3f) == 0 && ((1L << (_la - 216)) & ((1L << (KEEPIDENTITY - 216)) | (1L << (KEEPDEFAULTS - 216)) | (1L << (HOLDLOCK - 216)) | (1L << (IGNORE_CONSTRAINTS - 216)) | (1L << (IGNORE_TRIGGERS - 216)) | (1L << (NOLOCK - 216)) | (1L << (NOWAIT - 216)) | (1L << (PAGLOCK - 216)) | (1L << (READCOMMITTED - 216)) | (1L << (READCOMMITTEDLOCK - 216)) | (1L << (READPAST - 216)) | (1L << (REPEATABLEREAD - 216)) | (1L << (ROWLOCK - 216)) | (1L << (TABLOCK - 216)) | (1L << (TABLOCKX - 216)) | (1L << (UPDLOCK - 216)) | (1L << (XLOCK - 216)))) != 0) || _la==SNAPSHOT || _la==SERIALIZABLE );
36668 			}
36669 			setState(5174);
36670 			match(RP_);
36671 			}
36672 		}
36673 		catch (RecognitionException re) {
36674 			_localctx.exception = re;
36675 			_errHandler.reportError(this, re);
36676 			_errHandler.recover(this, re);
36677 		}
36678 		finally {
36679 			exitRule();
36680 		}
36681 		return _localctx;
36682 	}
36683 
36684 	public static class ExecContext extends ParserRuleContext {
36685 		public ProcedureNameContext procedureName() {
36686 			return getRuleContext(ProcedureNameContext.class,0);
36687 		}
36688 		public TerminalNode EXEC() { return getToken(SQLServerStatementParser.EXEC, 0); }
36689 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
36690 		public List<ExprContext> expr() {
36691 			return getRuleContexts(ExprContext.class);
36692 		}
36693 		public ExprContext expr(int i) {
36694 			return getRuleContext(ExprContext.class,i);
36695 		}
36696 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
36697 		public TerminalNode COMMA_(int i) {
36698 			return getToken(SQLServerStatementParser.COMMA_, i);
36699 		}
36700 		public ExecContext(ParserRuleContext parent, int invokingState) {
36701 			super(parent, invokingState);
36702 		}
36703 		@Override public int getRuleIndex() { return RULE_exec; }
36704 		@Override
36705 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36706 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitExec(this);
36707 			else return visitor.visitChildren(this);
36708 		}
36709 	}
36710 
36711 	public final ExecContext exec() throws RecognitionException {
36712 		ExecContext _localctx = new ExecContext(_ctx, getState());
36713 		enterRule(_localctx, 712, RULE_exec);
36714 		int _la;
36715 		try {
36716 			enterOuterAlt(_localctx, 1);
36717 			{
36718 			setState(5176);
36719 			_la = _input.LA(1);
36720 			if ( !(_la==EXECUTE || _la==EXEC) ) {
36721 			_errHandler.recoverInline(this);
36722 			}
36723 			else {
36724 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
36725 				_errHandler.reportMatch(this);
36726 				consume();
36727 			}
36728 			setState(5177);
36729 			procedureName();
36730 			setState(5186);
36731 			_errHandler.sync(this);
36732 			switch ( getInterpreter().adaptivePredict(_input,565,_ctx) ) {
36733 			case 1:
36734 				{
36735 				setState(5178);
36736 				expr(0);
36737 				setState(5183);
36738 				_errHandler.sync(this);
36739 				_la = _input.LA(1);
36740 				while (_la==COMMA_) {
36741 					{
36742 					{
36743 					setState(5179);
36744 					match(COMMA_);
36745 					setState(5180);
36746 					expr(0);
36747 					}
36748 					}
36749 					setState(5185);
36750 					_errHandler.sync(this);
36751 					_la = _input.LA(1);
36752 				}
36753 				}
36754 				break;
36755 			}
36756 			}
36757 		}
36758 		catch (RecognitionException re) {
36759 			_localctx.exception = re;
36760 			_errHandler.reportError(this, re);
36761 			_errHandler.recover(this, re);
36762 		}
36763 		finally {
36764 			exitRule();
36765 		}
36766 		return _localctx;
36767 	}
36768 
36769 	public static class UpdateContext extends ParserRuleContext {
36770 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
36771 		public TableReferencesContext tableReferences() {
36772 			return getRuleContext(TableReferencesContext.class,0);
36773 		}
36774 		public SetAssignmentsClauseContext setAssignmentsClause() {
36775 			return getRuleContext(SetAssignmentsClauseContext.class,0);
36776 		}
36777 		public WithClauseContext withClause() {
36778 			return getRuleContext(WithClauseContext.class,0);
36779 		}
36780 		public TopContext top() {
36781 			return getRuleContext(TopContext.class,0);
36782 		}
36783 		public WithTableHintContext withTableHint() {
36784 			return getRuleContext(WithTableHintContext.class,0);
36785 		}
36786 		public OutputClauseContext outputClause() {
36787 			return getRuleContext(OutputClauseContext.class,0);
36788 		}
36789 		public WhereClauseContext whereClause() {
36790 			return getRuleContext(WhereClauseContext.class,0);
36791 		}
36792 		public OptionHintContext optionHint() {
36793 			return getRuleContext(OptionHintContext.class,0);
36794 		}
36795 		public UpdateContext(ParserRuleContext parent, int invokingState) {
36796 			super(parent, invokingState);
36797 		}
36798 		@Override public int getRuleIndex() { return RULE_update; }
36799 		@Override
36800 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36801 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUpdate(this);
36802 			else return visitor.visitChildren(this);
36803 		}
36804 	}
36805 
36806 	public final UpdateContext update() throws RecognitionException {
36807 		UpdateContext _localctx = new UpdateContext(_ctx, getState());
36808 		enterRule(_localctx, 714, RULE_update);
36809 		int _la;
36810 		try {
36811 			enterOuterAlt(_localctx, 1);
36812 			{
36813 			setState(5189);
36814 			_errHandler.sync(this);
36815 			_la = _input.LA(1);
36816 			if (_la==WITH) {
36817 				{
36818 				setState(5188);
36819 				withClause();
36820 				}
36821 			}
36822 
36823 			setState(5191);
36824 			match(UPDATE);
36825 			setState(5193);
36826 			_errHandler.sync(this);
36827 			switch ( getInterpreter().adaptivePredict(_input,567,_ctx) ) {
36828 			case 1:
36829 				{
36830 				setState(5192);
36831 				top();
36832 				}
36833 				break;
36834 			}
36835 			setState(5195);
36836 			tableReferences();
36837 			setState(5197);
36838 			_errHandler.sync(this);
36839 			_la = _input.LA(1);
36840 			if (_la==LP_ || _la==WITH) {
36841 				{
36842 				setState(5196);
36843 				withTableHint();
36844 				}
36845 			}
36846 
36847 			setState(5199);
36848 			setAssignmentsClause();
36849 			setState(5201);
36850 			_errHandler.sync(this);
36851 			_la = _input.LA(1);
36852 			if (_la==OUTPUT) {
36853 				{
36854 				setState(5200);
36855 				outputClause();
36856 				}
36857 			}
36858 
36859 			setState(5204);
36860 			_errHandler.sync(this);
36861 			_la = _input.LA(1);
36862 			if (_la==WHERE) {
36863 				{
36864 				setState(5203);
36865 				whereClause();
36866 				}
36867 			}
36868 
36869 			setState(5207);
36870 			_errHandler.sync(this);
36871 			_la = _input.LA(1);
36872 			if (_la==OPTION) {
36873 				{
36874 				setState(5206);
36875 				optionHint();
36876 				}
36877 			}
36878 
36879 			}
36880 		}
36881 		catch (RecognitionException re) {
36882 			_localctx.exception = re;
36883 			_errHandler.reportError(this, re);
36884 			_errHandler.recover(this, re);
36885 		}
36886 		finally {
36887 			exitRule();
36888 		}
36889 		return _localctx;
36890 	}
36891 
36892 	public static class AssignmentContext extends ParserRuleContext {
36893 		public ColumnNameContext columnName() {
36894 			return getRuleContext(ColumnNameContext.class,0);
36895 		}
36896 		public AssignmentValueContext assignmentValue() {
36897 			return getRuleContext(AssignmentValueContext.class,0);
36898 		}
36899 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
36900 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
36901 		public TerminalNode PLUS_() { return getToken(SQLServerStatementParser.PLUS_, 0); }
36902 		public TerminalNode MINUS_() { return getToken(SQLServerStatementParser.MINUS_, 0); }
36903 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
36904 		public TerminalNode SLASH_() { return getToken(SQLServerStatementParser.SLASH_, 0); }
36905 		public TerminalNode MOD_() { return getToken(SQLServerStatementParser.MOD_, 0); }
36906 		public AssignmentContext(ParserRuleContext parent, int invokingState) {
36907 			super(parent, invokingState);
36908 		}
36909 		@Override public int getRuleIndex() { return RULE_assignment; }
36910 		@Override
36911 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
36912 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssignment(this);
36913 			else return visitor.visitChildren(this);
36914 		}
36915 	}
36916 
36917 	public final AssignmentContext assignment() throws RecognitionException {
36918 		AssignmentContext _localctx = new AssignmentContext(_ctx, getState());
36919 		enterRule(_localctx, 716, RULE_assignment);
36920 		int _la;
36921 		try {
36922 			enterOuterAlt(_localctx, 1);
36923 			{
36924 			setState(5209);
36925 			columnName();
36926 			setState(5215);
36927 			_errHandler.sync(this);
36928 			switch (_input.LA(1)) {
36929 			case MOD_:
36930 			case PLUS_:
36931 			case MINUS_:
36932 			case ASTERISK_:
36933 			case SLASH_:
36934 			case EQ_:
36935 				{
36936 				setState(5211);
36937 				_errHandler.sync(this);
36938 				_la = _input.LA(1);
36939 				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << MOD_) | (1L << PLUS_) | (1L << MINUS_) | (1L << ASTERISK_) | (1L << SLASH_))) != 0)) {
36940 					{
36941 					setState(5210);
36942 					_la = _input.LA(1);
36943 					if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << MOD_) | (1L << PLUS_) | (1L << MINUS_) | (1L << ASTERISK_) | (1L << SLASH_))) != 0)) ) {
36944 					_errHandler.recoverInline(this);
36945 					}
36946 					else {
36947 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
36948 						_errHandler.reportMatch(this);
36949 						consume();
36950 					}
36951 					}
36952 				}
36953 
36954 				setState(5213);
36955 				match(EQ_);
36956 				}
36957 				break;
36958 			case DOT_:
36959 				{
36960 				setState(5214);
36961 				match(DOT_);
36962 				}
36963 				break;
36964 			default:
36965 				throw new NoViableAltException(this);
36966 			}
36967 			setState(5217);
36968 			assignmentValue();
36969 			}
36970 		}
36971 		catch (RecognitionException re) {
36972 			_localctx.exception = re;
36973 			_errHandler.reportError(this, re);
36974 			_errHandler.recover(this, re);
36975 		}
36976 		finally {
36977 			exitRule();
36978 		}
36979 		return _localctx;
36980 	}
36981 
36982 	public static class SetAssignmentsClauseContext extends ParserRuleContext {
36983 		public TerminalNode SET() { return getToken(SQLServerStatementParser.SET, 0); }
36984 		public List<AssignmentContext> assignment() {
36985 			return getRuleContexts(AssignmentContext.class);
36986 		}
36987 		public AssignmentContext assignment(int i) {
36988 			return getRuleContext(AssignmentContext.class,i);
36989 		}
36990 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
36991 		public TerminalNode COMMA_(int i) {
36992 			return getToken(SQLServerStatementParser.COMMA_, i);
36993 		}
36994 		public FromClauseContext fromClause() {
36995 			return getRuleContext(FromClauseContext.class,0);
36996 		}
36997 		public SetAssignmentsClauseContext(ParserRuleContext parent, int invokingState) {
36998 			super(parent, invokingState);
36999 		}
37000 		@Override public int getRuleIndex() { return RULE_setAssignmentsClause; }
37001 		@Override
37002 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37003 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetAssignmentsClause(this);
37004 			else return visitor.visitChildren(this);
37005 		}
37006 	}
37007 
37008 	public final SetAssignmentsClauseContext setAssignmentsClause() throws RecognitionException {
37009 		SetAssignmentsClauseContext _localctx = new SetAssignmentsClauseContext(_ctx, getState());
37010 		enterRule(_localctx, 718, RULE_setAssignmentsClause);
37011 		int _la;
37012 		try {
37013 			enterOuterAlt(_localctx, 1);
37014 			{
37015 			setState(5219);
37016 			match(SET);
37017 			setState(5220);
37018 			assignment();
37019 			setState(5225);
37020 			_errHandler.sync(this);
37021 			_la = _input.LA(1);
37022 			while (_la==COMMA_) {
37023 				{
37024 				{
37025 				setState(5221);
37026 				match(COMMA_);
37027 				setState(5222);
37028 				assignment();
37029 				}
37030 				}
37031 				setState(5227);
37032 				_errHandler.sync(this);
37033 				_la = _input.LA(1);
37034 			}
37035 			setState(5229);
37036 			_errHandler.sync(this);
37037 			_la = _input.LA(1);
37038 			if (_la==FROM) {
37039 				{
37040 				setState(5228);
37041 				fromClause();
37042 				}
37043 			}
37044 
37045 			}
37046 		}
37047 		catch (RecognitionException re) {
37048 			_localctx.exception = re;
37049 			_errHandler.reportError(this, re);
37050 			_errHandler.recover(this, re);
37051 		}
37052 		finally {
37053 			exitRule();
37054 		}
37055 		return _localctx;
37056 	}
37057 
37058 	public static class AssignmentValuesContext extends ParserRuleContext {
37059 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
37060 		public List<AssignmentValueContext> assignmentValue() {
37061 			return getRuleContexts(AssignmentValueContext.class);
37062 		}
37063 		public AssignmentValueContext assignmentValue(int i) {
37064 			return getRuleContext(AssignmentValueContext.class,i);
37065 		}
37066 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
37067 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
37068 		public TerminalNode COMMA_(int i) {
37069 			return getToken(SQLServerStatementParser.COMMA_, i);
37070 		}
37071 		public AssignmentValuesContext(ParserRuleContext parent, int invokingState) {
37072 			super(parent, invokingState);
37073 		}
37074 		@Override public int getRuleIndex() { return RULE_assignmentValues; }
37075 		@Override
37076 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37077 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssignmentValues(this);
37078 			else return visitor.visitChildren(this);
37079 		}
37080 	}
37081 
37082 	public final AssignmentValuesContext assignmentValues() throws RecognitionException {
37083 		AssignmentValuesContext _localctx = new AssignmentValuesContext(_ctx, getState());
37084 		enterRule(_localctx, 720, RULE_assignmentValues);
37085 		int _la;
37086 		try {
37087 			setState(5245);
37088 			_errHandler.sync(this);
37089 			switch ( getInterpreter().adaptivePredict(_input,577,_ctx) ) {
37090 			case 1:
37091 				enterOuterAlt(_localctx, 1);
37092 				{
37093 				setState(5231);
37094 				match(LP_);
37095 				setState(5232);
37096 				assignmentValue();
37097 				setState(5237);
37098 				_errHandler.sync(this);
37099 				_la = _input.LA(1);
37100 				while (_la==COMMA_) {
37101 					{
37102 					{
37103 					setState(5233);
37104 					match(COMMA_);
37105 					setState(5234);
37106 					assignmentValue();
37107 					}
37108 					}
37109 					setState(5239);
37110 					_errHandler.sync(this);
37111 					_la = _input.LA(1);
37112 				}
37113 				setState(5240);
37114 				match(RP_);
37115 				}
37116 				break;
37117 			case 2:
37118 				enterOuterAlt(_localctx, 2);
37119 				{
37120 				setState(5242);
37121 				assignmentValue();
37122 				}
37123 				break;
37124 			case 3:
37125 				enterOuterAlt(_localctx, 3);
37126 				{
37127 				setState(5243);
37128 				match(LP_);
37129 				setState(5244);
37130 				match(RP_);
37131 				}
37132 				break;
37133 			}
37134 		}
37135 		catch (RecognitionException re) {
37136 			_localctx.exception = re;
37137 			_errHandler.reportError(this, re);
37138 			_errHandler.recover(this, re);
37139 		}
37140 		finally {
37141 			exitRule();
37142 		}
37143 		return _localctx;
37144 	}
37145 
37146 	public static class AssignmentValueContext extends ParserRuleContext {
37147 		public ExprContext expr() {
37148 			return getRuleContext(ExprContext.class,0);
37149 		}
37150 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
37151 		public AssignmentValueContext(ParserRuleContext parent, int invokingState) {
37152 			super(parent, invokingState);
37153 		}
37154 		@Override public int getRuleIndex() { return RULE_assignmentValue; }
37155 		@Override
37156 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37157 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssignmentValue(this);
37158 			else return visitor.visitChildren(this);
37159 		}
37160 	}
37161 
37162 	public final AssignmentValueContext assignmentValue() throws RecognitionException {
37163 		AssignmentValueContext _localctx = new AssignmentValueContext(_ctx, getState());
37164 		enterRule(_localctx, 722, RULE_assignmentValue);
37165 		try {
37166 			setState(5249);
37167 			_errHandler.sync(this);
37168 			switch (_input.LA(1)) {
37169 			case NOT_:
37170 			case TILDE_:
37171 			case PLUS_:
37172 			case MINUS_:
37173 			case LP_:
37174 			case LBE_:
37175 			case LBT_:
37176 			case QUESTION_:
37177 			case DOLLAR_:
37178 			case TRUNCATE:
37179 			case SCHEMA:
37180 			case COLUMNS:
37181 			case PRECISION:
37182 			case FUNCTION:
37183 			case TRIGGER:
37184 			case CASE:
37185 			case CAST:
37186 			case TRIM:
37187 			case SUBSTRING:
37188 			case RIGHT:
37189 			case OFF:
37190 			case IF:
37191 			case NOT:
37192 			case NULL:
37193 			case TRUE:
37194 			case FALSE:
37195 			case EXISTS:
37196 			case GROUP:
37197 			case LIMIT:
37198 			case OFFSET:
37199 			case SAVEPOINT:
37200 			case BOOLEAN:
37201 			case CHAR:
37202 			case ARRAY:
37203 			case INTERVAL:
37204 			case DATE:
37205 			case TIME:
37206 			case TIMESTAMP:
37207 			case LOCALTIME:
37208 			case LOCALTIMESTAMP:
37209 			case YEAR:
37210 			case QUARTER:
37211 			case MONTH:
37212 			case WEEK:
37213 			case DAY:
37214 			case SECOND:
37215 			case MICROSECOND:
37216 			case MAX:
37217 			case MIN:
37218 			case SUM:
37219 			case COUNT:
37220 			case AVG:
37221 			case CURRENT:
37222 			case ENABLE:
37223 			case DISABLE:
37224 			case INSTANCE:
37225 			case DO:
37226 			case DEFINER:
37227 			case SQL:
37228 			case CASCADED:
37229 			case LOCAL:
37230 			case NEXT:
37231 			case NAME:
37232 			case INTEGER:
37233 			case TYPE:
37234 			case TEXT:
37235 			case VIEWS:
37236 			case READ_ONLY:
37237 			case DATABASE:
37238 			case RETURNS:
37239 			case DATEPART:
37240 			case PASSWORD:
37241 			case JSON_OBJECT:
37242 			case JSON_ARRAY:
37243 			case FIRST_VALUE:
37244 			case LAST_VALUE:
37245 			case APPROX_PERCENTILE_CONT:
37246 			case APPROX_PERCENTILE_DISC:
37247 			case OPENDATASOURCE:
37248 			case BINARY:
37249 			case HIDDEN_:
37250 			case MOD:
37251 			case PARTITION:
37252 			case PARTITIONS:
37253 			case TOP:
37254 			case ROW:
37255 			case ROWS:
37256 			case XOR:
37257 			case ALWAYS:
37258 			case USER:
37259 			case ROLE:
37260 			case START:
37261 			case ALGORITHM:
37262 			case AUTO:
37263 			case BLOCKERS:
37264 			case CLUSTERED:
37265 			case NONCLUSTERED:
37266 			case COLUMNSTORE:
37267 			case CONTENT:
37268 			case CONVERT:
37269 			case YEARS:
37270 			case MONTHS:
37271 			case WEEKS:
37272 			case DAYS:
37273 			case MINUTES:
37274 			case DENY:
37275 			case DETERMINISTIC:
37276 			case DISTRIBUTION:
37277 			case DOCUMENT:
37278 			case DURABILITY:
37279 			case ENCRYPTED:
37280 			case FILESTREAM:
37281 			case FILETABLE:
37282 			case FILLFACTOR:
37283 			case FOLLOWING:
37284 			case HASH:
37285 			case HEAP:
37286 			case INBOUND:
37287 			case OUTBOUND:
37288 			case UNBOUNDED:
37289 			case INFINITE:
37290 			case LOGIN:
37291 			case MASKED:
37292 			case MAXDOP:
37293 			case MOVE:
37294 			case NOCHECK:
37295 			case OBJECT:
37296 			case ONLINE:
37297 			case OVER:
37298 			case PAGE:
37299 			case PAUSED:
37300 			case PERIOD:
37301 			case PERSISTED:
37302 			case PRECEDING:
37303 			case RANDOMIZED:
37304 			case RANGE:
37305 			case REBUILD:
37306 			case REPLICATE:
37307 			case REPLICATION:
37308 			case RESUMABLE:
37309 			case ROWGUIDCOL:
37310 			case SAVE:
37311 			case SELF:
37312 			case SPARSE:
37313 			case SWITCH:
37314 			case TRAN:
37315 			case TRANCOUNT:
37316 			case CONTROL:
37317 			case CONCAT:
37318 			case TAKE:
37319 			case OWNERSHIP:
37320 			case DEFINITION:
37321 			case APPLICATION:
37322 			case ASSEMBLY:
37323 			case SYMMETRIC:
37324 			case ASYMMETRIC:
37325 			case SERVER:
37326 			case RECEIVE:
37327 			case CHANGE:
37328 			case TRACE:
37329 			case TRACKING:
37330 			case RESOURCES:
37331 			case SETTINGS:
37332 			case STATE:
37333 			case AVAILABILITY:
37334 			case CREDENTIAL:
37335 			case ENDPOINT:
37336 			case EVENT:
37337 			case NOTIFICATION:
37338 			case LINKED:
37339 			case AUDIT:
37340 			case DDL:
37341 			case XML:
37342 			case IMPERSONATE:
37343 			case SECURABLES:
37344 			case AUTHENTICATE:
37345 			case EXTERNAL:
37346 			case ACCESS:
37347 			case ADMINISTER:
37348 			case BULK:
37349 			case OPERATIONS:
37350 			case UNSAFE:
37351 			case SHUTDOWN:
37352 			case SCOPED:
37353 			case CONFIGURATION:
37354 			case DATASPACE:
37355 			case SERVICE:
37356 			case CERTIFICATE:
37357 			case CONTRACT:
37358 			case ENCRYPTION:
37359 			case MASTER:
37360 			case DATA:
37361 			case SOURCE:
37362 			case FILE:
37363 			case FORMAT:
37364 			case LIBRARY:
37365 			case FULLTEXT:
37366 			case MASK:
37367 			case UNMASK:
37368 			case MESSAGE:
37369 			case REMOTE:
37370 			case BINDING:
37371 			case ROUTE:
37372 			case SECURITY:
37373 			case POLICY:
37374 			case AGGREGATE:
37375 			case QUEUE:
37376 			case RULE:
37377 			case SYNONYM:
37378 			case COLLECTION:
37379 			case SCRIPT:
37380 			case KILL:
37381 			case BACKUP:
37382 			case LOG:
37383 			case SHOWPLAN:
37384 			case SUBSCRIBE:
37385 			case QUERY:
37386 			case NOTIFICATIONS:
37387 			case CHECKPOINT:
37388 			case SEQUENCE:
37389 			case ABORT_AFTER_WAIT:
37390 			case ALLOW_PAGE_LOCKS:
37391 			case ALLOW_ROW_LOCKS:
37392 			case ALL_SPARSE_COLUMNS:
37393 			case BUCKET_COUNT:
37394 			case COLUMNSTORE_ARCHIVE:
37395 			case COLUMN_ENCRYPTION_KEY:
37396 			case COLUMN_SET:
37397 			case COMPRESSION_DELAY:
37398 			case DATABASE_DEAULT:
37399 			case DATA_COMPRESSION:
37400 			case DATA_CONSISTENCY_CHECK:
37401 			case ENCRYPTION_TYPE:
37402 			case SYSTEM_TIME:
37403 			case SYSTEM_VERSIONING:
37404 			case TEXTIMAGE_ON:
37405 			case WAIT_AT_LOW_PRIORITY:
37406 			case STATISTICS_INCREMENTAL:
37407 			case STATISTICS_NORECOMPUTE:
37408 			case ROUND_ROBIN:
37409 			case SCHEMA_AND_DATA:
37410 			case SCHEMA_ONLY:
37411 			case SORT_IN_TEMPDB:
37412 			case IGNORE_DUP_KEY:
37413 			case IMPLICIT_TRANSACTIONS:
37414 			case MAX_DURATION:
37415 			case MEMORY_OPTIMIZED:
37416 			case MIGRATION_STATE:
37417 			case PAD_INDEX:
37418 			case REMOTE_DATA_ARCHIVE:
37419 			case FILESTREAM_ON:
37420 			case FILETABLE_COLLATE_FILENAME:
37421 			case FILETABLE_DIRECTORY:
37422 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
37423 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
37424 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
37425 			case FILTER_PREDICATE:
37426 			case HISTORY_RETENTION_PERIOD:
37427 			case HISTORY_TABLE:
37428 			case LOCK_ESCALATION:
37429 			case DROP_EXISTING:
37430 			case ROW_NUMBER:
37431 			case FIRST:
37432 			case DATETIME2:
37433 			case OUTPUT:
37434 			case INSERTED:
37435 			case DELETED:
37436 			case FILENAME:
37437 			case SIZE:
37438 			case MAXSIZE:
37439 			case FILEGROWTH:
37440 			case UNLIMITED:
37441 			case KB:
37442 			case MB:
37443 			case GB:
37444 			case TB:
37445 			case CONTAINS:
37446 			case MEMORY_OPTIMIZED_DATA:
37447 			case FILEGROUP:
37448 			case NON_TRANSACTED_ACCESS:
37449 			case DB_CHAINING:
37450 			case TRUSTWORTHY:
37451 			case FORWARD_ONLY:
37452 			case KEYSET:
37453 			case FAST_FORWARD:
37454 			case SCROLL_LOCKS:
37455 			case OPTIMISTIC:
37456 			case TYPE_WARNING:
37457 			case SCHEMABINDING:
37458 			case CALLER:
37459 			case INPUT:
37460 			case OWNER:
37461 			case SNAPSHOT:
37462 			case REPEATABLE:
37463 			case SERIALIZABLE:
37464 			case NATIVE_COMPILATION:
37465 			case VIEW_METADATA:
37466 			case INSTEAD:
37467 			case APPEND:
37468 			case INCREMENT:
37469 			case CACHE:
37470 			case MINVALUE:
37471 			case MAXVALUE:
37472 			case RESTART:
37473 			case LOB_COMPACTION:
37474 			case COMPRESS_ALL_ROW_GROUPS:
37475 			case REORGANIZE:
37476 			case RESUME:
37477 			case PAUSE:
37478 			case ABORT:
37479 			case ACCELERATED_DATABASE_RECOVERY:
37480 			case PERSISTENT_VERSION_STORE_FILEGROUP:
37481 			case IMMEDIATE:
37482 			case NO_WAIT:
37483 			case TARGET_RECOVERY_TIME:
37484 			case SECONDS:
37485 			case HONOR_BROKER_PRIORITY:
37486 			case ERROR_BROKER_CONVERSATIONS:
37487 			case NEW_BROKER:
37488 			case DISABLE_BROKER:
37489 			case ENABLE_BROKER:
37490 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
37491 			case READ_COMMITTED_SNAPSHOT:
37492 			case ALLOW_SNAPSHOT_ISOLATION:
37493 			case RECURSIVE_TRIGGERS:
37494 			case QUOTED_IDENTIFIER:
37495 			case NUMERIC_ROUNDABORT:
37496 			case CONCAT_NULL_YIELDS_NULL:
37497 			case COMPATIBILITY_LEVEL:
37498 			case ARITHABORT:
37499 			case ANSI_WARNINGS:
37500 			case ANSI_PADDING:
37501 			case ANSI_NULLS:
37502 			case ANSI_NULL_DEFAULT:
37503 			case PAGE_VERIFY:
37504 			case CHECKSUM:
37505 			case TORN_PAGE_DETECTION:
37506 			case BULK_LOGGED:
37507 			case RECOVERY:
37508 			case TOTAL_EXECUTION_CPU_TIME_MS:
37509 			case TOTAL_COMPILE_CPU_TIME_MS:
37510 			case STALE_CAPTURE_POLICY_THRESHOLD:
37511 			case EXECUTION_COUNT:
37512 			case QUERY_CAPTURE_POLICY:
37513 			case WAIT_STATS_CAPTURE_MODE:
37514 			case MAX_PLANS_PER_QUERY:
37515 			case QUERY_CAPTURE_MODE:
37516 			case SIZE_BASED_CLEANUP_MODE:
37517 			case INTERVAL_LENGTH_MINUTES:
37518 			case MAX_STORAGE_SIZE_MB:
37519 			case DATA_FLUSH_INTERVAL_SECONDS:
37520 			case CLEANUP_POLICY:
37521 			case CUSTOM:
37522 			case STALE_QUERY_THRESHOLD_DAYS:
37523 			case OPERATION_MODE:
37524 			case QUERY_STORE:
37525 			case CURSOR_DEFAULT:
37526 			case GLOBAL:
37527 			case CURSOR_CLOSE_ON_COMMIT:
37528 			case HOURS:
37529 			case CHANGE_RETENTION:
37530 			case AUTO_CLEANUP:
37531 			case CHANGE_TRACKING:
37532 			case AUTOMATIC_TUNING:
37533 			case FORCE_LAST_GOOD_PLAN:
37534 			case AUTO_UPDATE_STATISTICS_ASYNC:
37535 			case AUTO_UPDATE_STATISTICS:
37536 			case AUTO_SHRINK:
37537 			case AUTO_CREATE_STATISTICS:
37538 			case INCREMENTAL:
37539 			case AUTO_CLOSE:
37540 			case DATA_RETENTION:
37541 			case TEMPORAL_HISTORY_RETENTION:
37542 			case EDITION:
37543 			case MIXED_PAGE_ALLOCATION:
37544 			case DISABLED:
37545 			case ALLOWED:
37546 			case HADR:
37547 			case MULTI_USER:
37548 			case RESTRICTED_USER:
37549 			case SINGLE_USER:
37550 			case OFFLINE:
37551 			case EMERGENCY:
37552 			case SUSPEND:
37553 			case DATE_CORRELATION_OPTIMIZATION:
37554 			case ELASTIC_POOL:
37555 			case SERVICE_OBJECTIVE:
37556 			case DATABASE_NAME:
37557 			case ALLOW_CONNECTIONS:
37558 			case GEO:
37559 			case NAMED:
37560 			case DATEFIRST:
37561 			case BACKUP_STORAGE_REDUNDANCY:
37562 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
37563 			case SECONDARY:
37564 			case FAILOVER:
37565 			case DEFAULT_FULLTEXT_LANGUAGE:
37566 			case DEFAULT_LANGUAGE:
37567 			case INLINE:
37568 			case NESTED_TRIGGERS:
37569 			case TRANSFORM_NOISE_WORDS:
37570 			case TWO_DIGIT_YEAR_CUTOFF:
37571 			case PERSISTENT_LOG_BUFFER:
37572 			case DIRECTORY_NAME:
37573 			case DATEFORMAT:
37574 			case DELAYED_DURABILITY:
37575 			case AUTHORIZATION:
37576 			case TRANSFER:
37577 			case PROVIDER:
37578 			case SID:
37579 			case SEARCH:
37580 			case MEMBER:
37581 			case JSON:
37582 			case OPENJSON:
37583 			case OPENROWSET:
37584 			case TRY_CAST:
37585 			case TRY_CONVERT:
37586 			case IDENTIFIER_:
37587 			case DELIMITED_IDENTIFIER_:
37588 			case STRING_:
37589 			case NUMBER_:
37590 			case HEX_DIGIT_:
37591 			case BIT_NUM_:
37592 			case NCHAR_TEXT:
37593 				enterOuterAlt(_localctx, 1);
37594 				{
37595 				setState(5247);
37596 				expr(0);
37597 				}
37598 				break;
37599 			case DEFAULT:
37600 				enterOuterAlt(_localctx, 2);
37601 				{
37602 				setState(5248);
37603 				match(DEFAULT);
37604 				}
37605 				break;
37606 			default:
37607 				throw new NoViableAltException(this);
37608 			}
37609 		}
37610 		catch (RecognitionException re) {
37611 			_localctx.exception = re;
37612 			_errHandler.reportError(this, re);
37613 			_errHandler.recover(this, re);
37614 		}
37615 		finally {
37616 			exitRule();
37617 		}
37618 		return _localctx;
37619 	}
37620 
37621 	public static class DeleteContext extends ParserRuleContext {
37622 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
37623 		public SingleTableClauseContext singleTableClause() {
37624 			return getRuleContext(SingleTableClauseContext.class,0);
37625 		}
37626 		public MultipleTablesClauseContext multipleTablesClause() {
37627 			return getRuleContext(MultipleTablesClauseContext.class,0);
37628 		}
37629 		public WithClauseContext withClause() {
37630 			return getRuleContext(WithClauseContext.class,0);
37631 		}
37632 		public TopContext top() {
37633 			return getRuleContext(TopContext.class,0);
37634 		}
37635 		public OutputClauseContext outputClause() {
37636 			return getRuleContext(OutputClauseContext.class,0);
37637 		}
37638 		public WhereClauseContext whereClause() {
37639 			return getRuleContext(WhereClauseContext.class,0);
37640 		}
37641 		public OptionHintContext optionHint() {
37642 			return getRuleContext(OptionHintContext.class,0);
37643 		}
37644 		public DeleteContext(ParserRuleContext parent, int invokingState) {
37645 			super(parent, invokingState);
37646 		}
37647 		@Override public int getRuleIndex() { return RULE_delete; }
37648 		@Override
37649 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37650 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDelete(this);
37651 			else return visitor.visitChildren(this);
37652 		}
37653 	}
37654 
37655 	public final DeleteContext delete() throws RecognitionException {
37656 		DeleteContext _localctx = new DeleteContext(_ctx, getState());
37657 		enterRule(_localctx, 724, RULE_delete);
37658 		int _la;
37659 		try {
37660 			enterOuterAlt(_localctx, 1);
37661 			{
37662 			setState(5252);
37663 			_errHandler.sync(this);
37664 			_la = _input.LA(1);
37665 			if (_la==WITH) {
37666 				{
37667 				setState(5251);
37668 				withClause();
37669 				}
37670 			}
37671 
37672 			setState(5254);
37673 			match(DELETE);
37674 			setState(5256);
37675 			_errHandler.sync(this);
37676 			switch ( getInterpreter().adaptivePredict(_input,580,_ctx) ) {
37677 			case 1:
37678 				{
37679 				setState(5255);
37680 				top();
37681 				}
37682 				break;
37683 			}
37684 			setState(5260);
37685 			_errHandler.sync(this);
37686 			switch ( getInterpreter().adaptivePredict(_input,581,_ctx) ) {
37687 			case 1:
37688 				{
37689 				setState(5258);
37690 				singleTableClause();
37691 				}
37692 				break;
37693 			case 2:
37694 				{
37695 				setState(5259);
37696 				multipleTablesClause();
37697 				}
37698 				break;
37699 			}
37700 			setState(5263);
37701 			_errHandler.sync(this);
37702 			_la = _input.LA(1);
37703 			if (_la==OUTPUT) {
37704 				{
37705 				setState(5262);
37706 				outputClause();
37707 				}
37708 			}
37709 
37710 			setState(5266);
37711 			_errHandler.sync(this);
37712 			_la = _input.LA(1);
37713 			if (_la==WHERE) {
37714 				{
37715 				setState(5265);
37716 				whereClause();
37717 				}
37718 			}
37719 
37720 			setState(5269);
37721 			_errHandler.sync(this);
37722 			_la = _input.LA(1);
37723 			if (_la==OPTION) {
37724 				{
37725 				setState(5268);
37726 				optionHint();
37727 				}
37728 			}
37729 
37730 			}
37731 		}
37732 		catch (RecognitionException re) {
37733 			_localctx.exception = re;
37734 			_errHandler.reportError(this, re);
37735 			_errHandler.recover(this, re);
37736 		}
37737 		finally {
37738 			exitRule();
37739 		}
37740 		return _localctx;
37741 	}
37742 
37743 	public static class OptionHintContext extends ParserRuleContext {
37744 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
37745 		public QueryHintContext queryHint() {
37746 			return getRuleContext(QueryHintContext.class,0);
37747 		}
37748 		public OptionHintContext(ParserRuleContext parent, int invokingState) {
37749 			super(parent, invokingState);
37750 		}
37751 		@Override public int getRuleIndex() { return RULE_optionHint; }
37752 		@Override
37753 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37754 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionHint(this);
37755 			else return visitor.visitChildren(this);
37756 		}
37757 	}
37758 
37759 	public final OptionHintContext optionHint() throws RecognitionException {
37760 		OptionHintContext _localctx = new OptionHintContext(_ctx, getState());
37761 		enterRule(_localctx, 726, RULE_optionHint);
37762 		try {
37763 			enterOuterAlt(_localctx, 1);
37764 			{
37765 			setState(5271);
37766 			match(OPTION);
37767 			setState(5272);
37768 			queryHint();
37769 			}
37770 		}
37771 		catch (RecognitionException re) {
37772 			_localctx.exception = re;
37773 			_errHandler.reportError(this, re);
37774 			_errHandler.recover(this, re);
37775 		}
37776 		finally {
37777 			exitRule();
37778 		}
37779 		return _localctx;
37780 	}
37781 
37782 	public static class SingleTableClauseContext extends ParserRuleContext {
37783 		public TableNameContext tableName() {
37784 			return getRuleContext(TableNameContext.class,0);
37785 		}
37786 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
37787 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
37788 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
37789 		public AliasContext alias() {
37790 			return getRuleContext(AliasContext.class,0);
37791 		}
37792 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
37793 		public SingleTableClauseContext(ParserRuleContext parent, int invokingState) {
37794 			super(parent, invokingState);
37795 		}
37796 		@Override public int getRuleIndex() { return RULE_singleTableClause; }
37797 		@Override
37798 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37799 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSingleTableClause(this);
37800 			else return visitor.visitChildren(this);
37801 		}
37802 	}
37803 
37804 	public final SingleTableClauseContext singleTableClause() throws RecognitionException {
37805 		SingleTableClauseContext _localctx = new SingleTableClauseContext(_ctx, getState());
37806 		enterRule(_localctx, 728, RULE_singleTableClause);
37807 		int _la;
37808 		try {
37809 			enterOuterAlt(_localctx, 1);
37810 			{
37811 			setState(5275);
37812 			_errHandler.sync(this);
37813 			_la = _input.LA(1);
37814 			if (_la==FROM) {
37815 				{
37816 				setState(5274);
37817 				match(FROM);
37818 				}
37819 			}
37820 
37821 			setState(5278);
37822 			_errHandler.sync(this);
37823 			_la = _input.LA(1);
37824 			if (_la==LP_) {
37825 				{
37826 				setState(5277);
37827 				match(LP_);
37828 				}
37829 			}
37830 
37831 			setState(5280);
37832 			tableName();
37833 			setState(5282);
37834 			_errHandler.sync(this);
37835 			_la = _input.LA(1);
37836 			if (_la==RP_) {
37837 				{
37838 				setState(5281);
37839 				match(RP_);
37840 				}
37841 			}
37842 
37843 			setState(5288);
37844 			_errHandler.sync(this);
37845 			switch ( getInterpreter().adaptivePredict(_input,589,_ctx) ) {
37846 			case 1:
37847 				{
37848 				setState(5285);
37849 				_errHandler.sync(this);
37850 				_la = _input.LA(1);
37851 				if (_la==AS) {
37852 					{
37853 					setState(5284);
37854 					match(AS);
37855 					}
37856 				}
37857 
37858 				setState(5287);
37859 				alias();
37860 				}
37861 				break;
37862 			}
37863 			}
37864 		}
37865 		catch (RecognitionException re) {
37866 			_localctx.exception = re;
37867 			_errHandler.reportError(this, re);
37868 			_errHandler.recover(this, re);
37869 		}
37870 		finally {
37871 			exitRule();
37872 		}
37873 		return _localctx;
37874 	}
37875 
37876 	public static class MultipleTablesClauseContext extends ParserRuleContext {
37877 		public MultipleTableNamesContext multipleTableNames() {
37878 			return getRuleContext(MultipleTableNamesContext.class,0);
37879 		}
37880 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
37881 		public TableReferencesContext tableReferences() {
37882 			return getRuleContext(TableReferencesContext.class,0);
37883 		}
37884 		public TerminalNode USING() { return getToken(SQLServerStatementParser.USING, 0); }
37885 		public MultipleTablesClauseContext(ParserRuleContext parent, int invokingState) {
37886 			super(parent, invokingState);
37887 		}
37888 		@Override public int getRuleIndex() { return RULE_multipleTablesClause; }
37889 		@Override
37890 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
37891 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMultipleTablesClause(this);
37892 			else return visitor.visitChildren(this);
37893 		}
37894 	}
37895 
37896 	public final MultipleTablesClauseContext multipleTablesClause() throws RecognitionException {
37897 		MultipleTablesClauseContext _localctx = new MultipleTablesClauseContext(_ctx, getState());
37898 		enterRule(_localctx, 730, RULE_multipleTablesClause);
37899 		try {
37900 			setState(5299);
37901 			_errHandler.sync(this);
37902 			switch (_input.LA(1)) {
37903 			case DOT_:
37904 			case TRUNCATE:
37905 			case SCHEMA:
37906 			case COLUMNS:
37907 			case PRECISION:
37908 			case FUNCTION:
37909 			case TRIGGER:
37910 			case CAST:
37911 			case TRIM:
37912 			case SUBSTRING:
37913 			case RIGHT:
37914 			case OFF:
37915 			case GROUP:
37916 			case LIMIT:
37917 			case OFFSET:
37918 			case SAVEPOINT:
37919 			case BOOLEAN:
37920 			case ARRAY:
37921 			case DATE:
37922 			case TIMESTAMP:
37923 			case LOCALTIME:
37924 			case LOCALTIMESTAMP:
37925 			case YEAR:
37926 			case QUARTER:
37927 			case MONTH:
37928 			case WEEK:
37929 			case DAY:
37930 			case SECOND:
37931 			case MICROSECOND:
37932 			case MAX:
37933 			case MIN:
37934 			case SUM:
37935 			case COUNT:
37936 			case AVG:
37937 			case ENABLE:
37938 			case DISABLE:
37939 			case INSTANCE:
37940 			case DO:
37941 			case DEFINER:
37942 			case SQL:
37943 			case CASCADED:
37944 			case LOCAL:
37945 			case NEXT:
37946 			case NAME:
37947 			case INTEGER:
37948 			case TYPE:
37949 			case TEXT:
37950 			case VIEWS:
37951 			case READ_ONLY:
37952 			case DATABASE:
37953 			case RETURNS:
37954 			case DATEPART:
37955 			case PASSWORD:
37956 			case BINARY:
37957 			case HIDDEN_:
37958 			case MOD:
37959 			case PARTITION:
37960 			case PARTITIONS:
37961 			case TOP:
37962 			case ROW:
37963 			case ROWS:
37964 			case XOR:
37965 			case ALWAYS:
37966 			case USER:
37967 			case ROLE:
37968 			case START:
37969 			case ALGORITHM:
37970 			case AUTO:
37971 			case BLOCKERS:
37972 			case CLUSTERED:
37973 			case NONCLUSTERED:
37974 			case COLUMNSTORE:
37975 			case CONTENT:
37976 			case YEARS:
37977 			case MONTHS:
37978 			case WEEKS:
37979 			case DAYS:
37980 			case MINUTES:
37981 			case DENY:
37982 			case DETERMINISTIC:
37983 			case DISTRIBUTION:
37984 			case DOCUMENT:
37985 			case DURABILITY:
37986 			case ENCRYPTED:
37987 			case FILESTREAM:
37988 			case FILETABLE:
37989 			case FILLFACTOR:
37990 			case FOLLOWING:
37991 			case HASH:
37992 			case HEAP:
37993 			case INBOUND:
37994 			case OUTBOUND:
37995 			case UNBOUNDED:
37996 			case INFINITE:
37997 			case LOGIN:
37998 			case MASKED:
37999 			case MAXDOP:
38000 			case MOVE:
38001 			case NOCHECK:
38002 			case OBJECT:
38003 			case ONLINE:
38004 			case OVER:
38005 			case PAGE:
38006 			case PAUSED:
38007 			case PERIOD:
38008 			case PERSISTED:
38009 			case PRECEDING:
38010 			case RANDOMIZED:
38011 			case RANGE:
38012 			case REBUILD:
38013 			case REPLICATE:
38014 			case REPLICATION:
38015 			case RESUMABLE:
38016 			case ROWGUIDCOL:
38017 			case SAVE:
38018 			case SELF:
38019 			case SPARSE:
38020 			case SWITCH:
38021 			case TRAN:
38022 			case TRANCOUNT:
38023 			case CONTROL:
38024 			case CONCAT:
38025 			case TAKE:
38026 			case OWNERSHIP:
38027 			case DEFINITION:
38028 			case APPLICATION:
38029 			case ASSEMBLY:
38030 			case SYMMETRIC:
38031 			case ASYMMETRIC:
38032 			case SERVER:
38033 			case RECEIVE:
38034 			case CHANGE:
38035 			case TRACE:
38036 			case TRACKING:
38037 			case RESOURCES:
38038 			case SETTINGS:
38039 			case STATE:
38040 			case AVAILABILITY:
38041 			case CREDENTIAL:
38042 			case ENDPOINT:
38043 			case EVENT:
38044 			case NOTIFICATION:
38045 			case LINKED:
38046 			case AUDIT:
38047 			case DDL:
38048 			case XML:
38049 			case IMPERSONATE:
38050 			case SECURABLES:
38051 			case AUTHENTICATE:
38052 			case EXTERNAL:
38053 			case ACCESS:
38054 			case ADMINISTER:
38055 			case BULK:
38056 			case OPERATIONS:
38057 			case UNSAFE:
38058 			case SHUTDOWN:
38059 			case SCOPED:
38060 			case CONFIGURATION:
38061 			case DATASPACE:
38062 			case SERVICE:
38063 			case CERTIFICATE:
38064 			case CONTRACT:
38065 			case ENCRYPTION:
38066 			case MASTER:
38067 			case DATA:
38068 			case SOURCE:
38069 			case FILE:
38070 			case FORMAT:
38071 			case LIBRARY:
38072 			case FULLTEXT:
38073 			case MASK:
38074 			case UNMASK:
38075 			case MESSAGE:
38076 			case REMOTE:
38077 			case BINDING:
38078 			case ROUTE:
38079 			case SECURITY:
38080 			case POLICY:
38081 			case AGGREGATE:
38082 			case QUEUE:
38083 			case RULE:
38084 			case SYNONYM:
38085 			case COLLECTION:
38086 			case SCRIPT:
38087 			case KILL:
38088 			case BACKUP:
38089 			case LOG:
38090 			case SHOWPLAN:
38091 			case SUBSCRIBE:
38092 			case QUERY:
38093 			case NOTIFICATIONS:
38094 			case CHECKPOINT:
38095 			case SEQUENCE:
38096 			case ABORT_AFTER_WAIT:
38097 			case ALLOW_PAGE_LOCKS:
38098 			case ALLOW_ROW_LOCKS:
38099 			case ALL_SPARSE_COLUMNS:
38100 			case BUCKET_COUNT:
38101 			case COLUMNSTORE_ARCHIVE:
38102 			case COLUMN_ENCRYPTION_KEY:
38103 			case COLUMN_SET:
38104 			case COMPRESSION_DELAY:
38105 			case DATABASE_DEAULT:
38106 			case DATA_COMPRESSION:
38107 			case DATA_CONSISTENCY_CHECK:
38108 			case ENCRYPTION_TYPE:
38109 			case SYSTEM_TIME:
38110 			case SYSTEM_VERSIONING:
38111 			case TEXTIMAGE_ON:
38112 			case WAIT_AT_LOW_PRIORITY:
38113 			case STATISTICS_INCREMENTAL:
38114 			case STATISTICS_NORECOMPUTE:
38115 			case ROUND_ROBIN:
38116 			case SCHEMA_AND_DATA:
38117 			case SCHEMA_ONLY:
38118 			case SORT_IN_TEMPDB:
38119 			case IGNORE_DUP_KEY:
38120 			case IMPLICIT_TRANSACTIONS:
38121 			case MAX_DURATION:
38122 			case MEMORY_OPTIMIZED:
38123 			case MIGRATION_STATE:
38124 			case PAD_INDEX:
38125 			case REMOTE_DATA_ARCHIVE:
38126 			case FILESTREAM_ON:
38127 			case FILETABLE_COLLATE_FILENAME:
38128 			case FILETABLE_DIRECTORY:
38129 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
38130 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
38131 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
38132 			case FILTER_PREDICATE:
38133 			case HISTORY_RETENTION_PERIOD:
38134 			case HISTORY_TABLE:
38135 			case LOCK_ESCALATION:
38136 			case DROP_EXISTING:
38137 			case ROW_NUMBER:
38138 			case FIRST:
38139 			case DATETIME2:
38140 			case OUTPUT:
38141 			case INSERTED:
38142 			case DELETED:
38143 			case FILENAME:
38144 			case SIZE:
38145 			case MAXSIZE:
38146 			case FILEGROWTH:
38147 			case UNLIMITED:
38148 			case KB:
38149 			case MB:
38150 			case GB:
38151 			case TB:
38152 			case CONTAINS:
38153 			case MEMORY_OPTIMIZED_DATA:
38154 			case FILEGROUP:
38155 			case NON_TRANSACTED_ACCESS:
38156 			case DB_CHAINING:
38157 			case TRUSTWORTHY:
38158 			case FORWARD_ONLY:
38159 			case KEYSET:
38160 			case FAST_FORWARD:
38161 			case SCROLL_LOCKS:
38162 			case OPTIMISTIC:
38163 			case TYPE_WARNING:
38164 			case SCHEMABINDING:
38165 			case CALLER:
38166 			case INPUT:
38167 			case OWNER:
38168 			case SNAPSHOT:
38169 			case REPEATABLE:
38170 			case SERIALIZABLE:
38171 			case NATIVE_COMPILATION:
38172 			case VIEW_METADATA:
38173 			case INSTEAD:
38174 			case APPEND:
38175 			case INCREMENT:
38176 			case CACHE:
38177 			case MINVALUE:
38178 			case MAXVALUE:
38179 			case RESTART:
38180 			case LOB_COMPACTION:
38181 			case COMPRESS_ALL_ROW_GROUPS:
38182 			case REORGANIZE:
38183 			case RESUME:
38184 			case PAUSE:
38185 			case ABORT:
38186 			case ACCELERATED_DATABASE_RECOVERY:
38187 			case PERSISTENT_VERSION_STORE_FILEGROUP:
38188 			case IMMEDIATE:
38189 			case NO_WAIT:
38190 			case TARGET_RECOVERY_TIME:
38191 			case SECONDS:
38192 			case HONOR_BROKER_PRIORITY:
38193 			case ERROR_BROKER_CONVERSATIONS:
38194 			case NEW_BROKER:
38195 			case DISABLE_BROKER:
38196 			case ENABLE_BROKER:
38197 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
38198 			case READ_COMMITTED_SNAPSHOT:
38199 			case ALLOW_SNAPSHOT_ISOLATION:
38200 			case RECURSIVE_TRIGGERS:
38201 			case QUOTED_IDENTIFIER:
38202 			case NUMERIC_ROUNDABORT:
38203 			case CONCAT_NULL_YIELDS_NULL:
38204 			case COMPATIBILITY_LEVEL:
38205 			case ARITHABORT:
38206 			case ANSI_WARNINGS:
38207 			case ANSI_PADDING:
38208 			case ANSI_NULLS:
38209 			case ANSI_NULL_DEFAULT:
38210 			case PAGE_VERIFY:
38211 			case CHECKSUM:
38212 			case TORN_PAGE_DETECTION:
38213 			case BULK_LOGGED:
38214 			case RECOVERY:
38215 			case TOTAL_EXECUTION_CPU_TIME_MS:
38216 			case TOTAL_COMPILE_CPU_TIME_MS:
38217 			case STALE_CAPTURE_POLICY_THRESHOLD:
38218 			case EXECUTION_COUNT:
38219 			case QUERY_CAPTURE_POLICY:
38220 			case WAIT_STATS_CAPTURE_MODE:
38221 			case MAX_PLANS_PER_QUERY:
38222 			case QUERY_CAPTURE_MODE:
38223 			case SIZE_BASED_CLEANUP_MODE:
38224 			case INTERVAL_LENGTH_MINUTES:
38225 			case MAX_STORAGE_SIZE_MB:
38226 			case DATA_FLUSH_INTERVAL_SECONDS:
38227 			case CLEANUP_POLICY:
38228 			case CUSTOM:
38229 			case STALE_QUERY_THRESHOLD_DAYS:
38230 			case OPERATION_MODE:
38231 			case QUERY_STORE:
38232 			case CURSOR_DEFAULT:
38233 			case GLOBAL:
38234 			case CURSOR_CLOSE_ON_COMMIT:
38235 			case HOURS:
38236 			case CHANGE_RETENTION:
38237 			case AUTO_CLEANUP:
38238 			case CHANGE_TRACKING:
38239 			case AUTOMATIC_TUNING:
38240 			case FORCE_LAST_GOOD_PLAN:
38241 			case AUTO_UPDATE_STATISTICS_ASYNC:
38242 			case AUTO_UPDATE_STATISTICS:
38243 			case AUTO_SHRINK:
38244 			case AUTO_CREATE_STATISTICS:
38245 			case INCREMENTAL:
38246 			case AUTO_CLOSE:
38247 			case DATA_RETENTION:
38248 			case TEMPORAL_HISTORY_RETENTION:
38249 			case EDITION:
38250 			case MIXED_PAGE_ALLOCATION:
38251 			case DISABLED:
38252 			case ALLOWED:
38253 			case HADR:
38254 			case MULTI_USER:
38255 			case RESTRICTED_USER:
38256 			case SINGLE_USER:
38257 			case OFFLINE:
38258 			case EMERGENCY:
38259 			case SUSPEND:
38260 			case DATE_CORRELATION_OPTIMIZATION:
38261 			case ELASTIC_POOL:
38262 			case SERVICE_OBJECTIVE:
38263 			case DATABASE_NAME:
38264 			case ALLOW_CONNECTIONS:
38265 			case GEO:
38266 			case NAMED:
38267 			case DATEFIRST:
38268 			case BACKUP_STORAGE_REDUNDANCY:
38269 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
38270 			case SECONDARY:
38271 			case FAILOVER:
38272 			case DEFAULT_FULLTEXT_LANGUAGE:
38273 			case DEFAULT_LANGUAGE:
38274 			case INLINE:
38275 			case NESTED_TRIGGERS:
38276 			case TRANSFORM_NOISE_WORDS:
38277 			case TWO_DIGIT_YEAR_CUTOFF:
38278 			case PERSISTENT_LOG_BUFFER:
38279 			case DIRECTORY_NAME:
38280 			case DATEFORMAT:
38281 			case DELAYED_DURABILITY:
38282 			case AUTHORIZATION:
38283 			case TRANSFER:
38284 			case PROVIDER:
38285 			case SID:
38286 			case SEARCH:
38287 			case MEMBER:
38288 			case JSON:
38289 			case IDENTIFIER_:
38290 			case DELIMITED_IDENTIFIER_:
38291 				enterOuterAlt(_localctx, 1);
38292 				{
38293 				setState(5290);
38294 				multipleTableNames();
38295 				setState(5291);
38296 				match(FROM);
38297 				setState(5292);
38298 				tableReferences();
38299 				}
38300 				break;
38301 			case FROM:
38302 				enterOuterAlt(_localctx, 2);
38303 				{
38304 				setState(5294);
38305 				match(FROM);
38306 				setState(5295);
38307 				multipleTableNames();
38308 				setState(5296);
38309 				match(USING);
38310 				setState(5297);
38311 				tableReferences();
38312 				}
38313 				break;
38314 			default:
38315 				throw new NoViableAltException(this);
38316 			}
38317 		}
38318 		catch (RecognitionException re) {
38319 			_localctx.exception = re;
38320 			_errHandler.reportError(this, re);
38321 			_errHandler.recover(this, re);
38322 		}
38323 		finally {
38324 			exitRule();
38325 		}
38326 		return _localctx;
38327 	}
38328 
38329 	public static class MultipleTableNamesContext extends ParserRuleContext {
38330 		public List<TableNameContext> tableName() {
38331 			return getRuleContexts(TableNameContext.class);
38332 		}
38333 		public TableNameContext tableName(int i) {
38334 			return getRuleContext(TableNameContext.class,i);
38335 		}
38336 		public List<TerminalNode> DOT_ASTERISK_() { return getTokens(SQLServerStatementParser.DOT_ASTERISK_); }
38337 		public TerminalNode DOT_ASTERISK_(int i) {
38338 			return getToken(SQLServerStatementParser.DOT_ASTERISK_, i);
38339 		}
38340 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
38341 		public TerminalNode COMMA_(int i) {
38342 			return getToken(SQLServerStatementParser.COMMA_, i);
38343 		}
38344 		public MultipleTableNamesContext(ParserRuleContext parent, int invokingState) {
38345 			super(parent, invokingState);
38346 		}
38347 		@Override public int getRuleIndex() { return RULE_multipleTableNames; }
38348 		@Override
38349 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38350 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitMultipleTableNames(this);
38351 			else return visitor.visitChildren(this);
38352 		}
38353 	}
38354 
38355 	public final MultipleTableNamesContext multipleTableNames() throws RecognitionException {
38356 		MultipleTableNamesContext _localctx = new MultipleTableNamesContext(_ctx, getState());
38357 		enterRule(_localctx, 732, RULE_multipleTableNames);
38358 		int _la;
38359 		try {
38360 			enterOuterAlt(_localctx, 1);
38361 			{
38362 			setState(5301);
38363 			tableName();
38364 			setState(5303);
38365 			_errHandler.sync(this);
38366 			_la = _input.LA(1);
38367 			if (_la==DOT_ASTERISK_) {
38368 				{
38369 				setState(5302);
38370 				match(DOT_ASTERISK_);
38371 				}
38372 			}
38373 
38374 			setState(5312);
38375 			_errHandler.sync(this);
38376 			_la = _input.LA(1);
38377 			while (_la==COMMA_) {
38378 				{
38379 				{
38380 				setState(5305);
38381 				match(COMMA_);
38382 				setState(5306);
38383 				tableName();
38384 				setState(5308);
38385 				_errHandler.sync(this);
38386 				_la = _input.LA(1);
38387 				if (_la==DOT_ASTERISK_) {
38388 					{
38389 					setState(5307);
38390 					match(DOT_ASTERISK_);
38391 					}
38392 				}
38393 
38394 				}
38395 				}
38396 				setState(5314);
38397 				_errHandler.sync(this);
38398 				_la = _input.LA(1);
38399 			}
38400 			}
38401 		}
38402 		catch (RecognitionException re) {
38403 			_localctx.exception = re;
38404 			_errHandler.reportError(this, re);
38405 			_errHandler.recover(this, re);
38406 		}
38407 		finally {
38408 			exitRule();
38409 		}
38410 		return _localctx;
38411 	}
38412 
38413 	public static class SelectContext extends ParserRuleContext {
38414 		public AggregationClauseContext aggregationClause() {
38415 			return getRuleContext(AggregationClauseContext.class,0);
38416 		}
38417 		public SelectContext(ParserRuleContext parent, int invokingState) {
38418 			super(parent, invokingState);
38419 		}
38420 		@Override public int getRuleIndex() { return RULE_select; }
38421 		@Override
38422 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38423 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSelect(this);
38424 			else return visitor.visitChildren(this);
38425 		}
38426 	}
38427 
38428 	public final SelectContext select() throws RecognitionException {
38429 		SelectContext _localctx = new SelectContext(_ctx, getState());
38430 		enterRule(_localctx, 734, RULE_select);
38431 		try {
38432 			enterOuterAlt(_localctx, 1);
38433 			{
38434 			setState(5315);
38435 			aggregationClause();
38436 			}
38437 		}
38438 		catch (RecognitionException re) {
38439 			_localctx.exception = re;
38440 			_errHandler.reportError(this, re);
38441 			_errHandler.recover(this, re);
38442 		}
38443 		finally {
38444 			exitRule();
38445 		}
38446 		return _localctx;
38447 	}
38448 
38449 	public static class AggregationClauseContext extends ParserRuleContext {
38450 		public List<SelectClauseContext> selectClause() {
38451 			return getRuleContexts(SelectClauseContext.class);
38452 		}
38453 		public SelectClauseContext selectClause(int i) {
38454 			return getRuleContext(SelectClauseContext.class,i);
38455 		}
38456 		public List<TerminalNode> UNION() { return getTokens(SQLServerStatementParser.UNION); }
38457 		public TerminalNode UNION(int i) {
38458 			return getToken(SQLServerStatementParser.UNION, i);
38459 		}
38460 		public List<TerminalNode> EXCEPT() { return getTokens(SQLServerStatementParser.EXCEPT); }
38461 		public TerminalNode EXCEPT(int i) {
38462 			return getToken(SQLServerStatementParser.EXCEPT, i);
38463 		}
38464 		public List<TerminalNode> INTERSECT() { return getTokens(SQLServerStatementParser.INTERSECT); }
38465 		public TerminalNode INTERSECT(int i) {
38466 			return getToken(SQLServerStatementParser.INTERSECT, i);
38467 		}
38468 		public List<TerminalNode> ALL() { return getTokens(SQLServerStatementParser.ALL); }
38469 		public TerminalNode ALL(int i) {
38470 			return getToken(SQLServerStatementParser.ALL, i);
38471 		}
38472 		public AggregationClauseContext(ParserRuleContext parent, int invokingState) {
38473 			super(parent, invokingState);
38474 		}
38475 		@Override public int getRuleIndex() { return RULE_aggregationClause; }
38476 		@Override
38477 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38478 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAggregationClause(this);
38479 			else return visitor.visitChildren(this);
38480 		}
38481 	}
38482 
38483 	public final AggregationClauseContext aggregationClause() throws RecognitionException {
38484 		AggregationClauseContext _localctx = new AggregationClauseContext(_ctx, getState());
38485 		enterRule(_localctx, 736, RULE_aggregationClause);
38486 		int _la;
38487 		try {
38488 			enterOuterAlt(_localctx, 1);
38489 			{
38490 			setState(5317);
38491 			selectClause();
38492 			setState(5329);
38493 			_errHandler.sync(this);
38494 			_la = _input.LA(1);
38495 			while (_la==UNION || _la==EXCEPT || _la==INTERSECT) {
38496 				{
38497 				{
38498 				setState(5324);
38499 				_errHandler.sync(this);
38500 				switch (_input.LA(1)) {
38501 				case UNION:
38502 					{
38503 					setState(5318);
38504 					match(UNION);
38505 					setState(5320);
38506 					_errHandler.sync(this);
38507 					_la = _input.LA(1);
38508 					if (_la==ALL) {
38509 						{
38510 						setState(5319);
38511 						match(ALL);
38512 						}
38513 					}
38514 
38515 					}
38516 					break;
38517 				case EXCEPT:
38518 					{
38519 					setState(5322);
38520 					match(EXCEPT);
38521 					}
38522 					break;
38523 				case INTERSECT:
38524 					{
38525 					setState(5323);
38526 					match(INTERSECT);
38527 					}
38528 					break;
38529 				default:
38530 					throw new NoViableAltException(this);
38531 				}
38532 				setState(5326);
38533 				selectClause();
38534 				}
38535 				}
38536 				setState(5331);
38537 				_errHandler.sync(this);
38538 				_la = _input.LA(1);
38539 			}
38540 			}
38541 		}
38542 		catch (RecognitionException re) {
38543 			_localctx.exception = re;
38544 			_errHandler.reportError(this, re);
38545 			_errHandler.recover(this, re);
38546 		}
38547 		finally {
38548 			exitRule();
38549 		}
38550 		return _localctx;
38551 	}
38552 
38553 	public static class SelectClauseContext extends ParserRuleContext {
38554 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
38555 		public ProjectionsContext projections() {
38556 			return getRuleContext(ProjectionsContext.class,0);
38557 		}
38558 		public SelectWithClauseContext selectWithClause() {
38559 			return getRuleContext(SelectWithClauseContext.class,0);
38560 		}
38561 		public DuplicateSpecificationContext duplicateSpecification() {
38562 			return getRuleContext(DuplicateSpecificationContext.class,0);
38563 		}
38564 		public IntoClauseContext intoClause() {
38565 			return getRuleContext(IntoClauseContext.class,0);
38566 		}
38567 		public FromClauseContext fromClause() {
38568 			return getRuleContext(FromClauseContext.class,0);
38569 		}
38570 		public WhereClauseContext whereClause() {
38571 			return getRuleContext(WhereClauseContext.class,0);
38572 		}
38573 		public GroupByClauseContext groupByClause() {
38574 			return getRuleContext(GroupByClauseContext.class,0);
38575 		}
38576 		public HavingClauseContext havingClause() {
38577 			return getRuleContext(HavingClauseContext.class,0);
38578 		}
38579 		public OrderByClauseContext orderByClause() {
38580 			return getRuleContext(OrderByClauseContext.class,0);
38581 		}
38582 		public ForClauseContext forClause() {
38583 			return getRuleContext(ForClauseContext.class,0);
38584 		}
38585 		public WithTempTableContext withTempTable() {
38586 			return getRuleContext(WithTempTableContext.class,0);
38587 		}
38588 		public WithTableHintContext withTableHint() {
38589 			return getRuleContext(WithTableHintContext.class,0);
38590 		}
38591 		public SelectClauseContext(ParserRuleContext parent, int invokingState) {
38592 			super(parent, invokingState);
38593 		}
38594 		@Override public int getRuleIndex() { return RULE_selectClause; }
38595 		@Override
38596 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38597 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSelectClause(this);
38598 			else return visitor.visitChildren(this);
38599 		}
38600 	}
38601 
38602 	public final SelectClauseContext selectClause() throws RecognitionException {
38603 		SelectClauseContext _localctx = new SelectClauseContext(_ctx, getState());
38604 		enterRule(_localctx, 738, RULE_selectClause);
38605 		int _la;
38606 		try {
38607 			enterOuterAlt(_localctx, 1);
38608 			{
38609 			setState(5333);
38610 			_errHandler.sync(this);
38611 			_la = _input.LA(1);
38612 			if (_la==WITH) {
38613 				{
38614 				setState(5332);
38615 				selectWithClause();
38616 				}
38617 			}
38618 
38619 			setState(5335);
38620 			match(SELECT);
38621 			setState(5337);
38622 			_errHandler.sync(this);
38623 			_la = _input.LA(1);
38624 			if (_la==DISTINCT || _la==ALL) {
38625 				{
38626 				setState(5336);
38627 				duplicateSpecification();
38628 				}
38629 			}
38630 
38631 			setState(5339);
38632 			projections();
38633 			setState(5341);
38634 			_errHandler.sync(this);
38635 			_la = _input.LA(1);
38636 			if (_la==INTO) {
38637 				{
38638 				setState(5340);
38639 				intoClause();
38640 				}
38641 			}
38642 
38643 			setState(5350);
38644 			_errHandler.sync(this);
38645 			_la = _input.LA(1);
38646 			if (_la==FROM) {
38647 				{
38648 				setState(5343);
38649 				fromClause();
38650 				setState(5345);
38651 				_errHandler.sync(this);
38652 				switch ( getInterpreter().adaptivePredict(_input,600,_ctx) ) {
38653 				case 1:
38654 					{
38655 					setState(5344);
38656 					withTempTable();
38657 					}
38658 					break;
38659 				}
38660 				setState(5348);
38661 				_errHandler.sync(this);
38662 				switch ( getInterpreter().adaptivePredict(_input,601,_ctx) ) {
38663 				case 1:
38664 					{
38665 					setState(5347);
38666 					withTableHint();
38667 					}
38668 					break;
38669 				}
38670 				}
38671 			}
38672 
38673 			setState(5353);
38674 			_errHandler.sync(this);
38675 			_la = _input.LA(1);
38676 			if (_la==WHERE) {
38677 				{
38678 				setState(5352);
38679 				whereClause();
38680 				}
38681 			}
38682 
38683 			setState(5356);
38684 			_errHandler.sync(this);
38685 			_la = _input.LA(1);
38686 			if (_la==GROUP) {
38687 				{
38688 				setState(5355);
38689 				groupByClause();
38690 				}
38691 			}
38692 
38693 			setState(5359);
38694 			_errHandler.sync(this);
38695 			_la = _input.LA(1);
38696 			if (_la==HAVING) {
38697 				{
38698 				setState(5358);
38699 				havingClause();
38700 				}
38701 			}
38702 
38703 			setState(5362);
38704 			_errHandler.sync(this);
38705 			_la = _input.LA(1);
38706 			if (_la==ORDER) {
38707 				{
38708 				setState(5361);
38709 				orderByClause();
38710 				}
38711 			}
38712 
38713 			setState(5365);
38714 			_errHandler.sync(this);
38715 			switch ( getInterpreter().adaptivePredict(_input,607,_ctx) ) {
38716 			case 1:
38717 				{
38718 				setState(5364);
38719 				forClause();
38720 				}
38721 				break;
38722 			}
38723 			}
38724 		}
38725 		catch (RecognitionException re) {
38726 			_localctx.exception = re;
38727 			_errHandler.reportError(this, re);
38728 			_errHandler.recover(this, re);
38729 		}
38730 		finally {
38731 			exitRule();
38732 		}
38733 		return _localctx;
38734 	}
38735 
38736 	public static class DuplicateSpecificationContext extends ParserRuleContext {
38737 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
38738 		public TerminalNode DISTINCT() { return getToken(SQLServerStatementParser.DISTINCT, 0); }
38739 		public DuplicateSpecificationContext(ParserRuleContext parent, int invokingState) {
38740 			super(parent, invokingState);
38741 		}
38742 		@Override public int getRuleIndex() { return RULE_duplicateSpecification; }
38743 		@Override
38744 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38745 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDuplicateSpecification(this);
38746 			else return visitor.visitChildren(this);
38747 		}
38748 	}
38749 
38750 	public final DuplicateSpecificationContext duplicateSpecification() throws RecognitionException {
38751 		DuplicateSpecificationContext _localctx = new DuplicateSpecificationContext(_ctx, getState());
38752 		enterRule(_localctx, 740, RULE_duplicateSpecification);
38753 		int _la;
38754 		try {
38755 			enterOuterAlt(_localctx, 1);
38756 			{
38757 			setState(5367);
38758 			_la = _input.LA(1);
38759 			if ( !(_la==DISTINCT || _la==ALL) ) {
38760 			_errHandler.recoverInline(this);
38761 			}
38762 			else {
38763 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
38764 				_errHandler.reportMatch(this);
38765 				consume();
38766 			}
38767 			}
38768 		}
38769 		catch (RecognitionException re) {
38770 			_localctx.exception = re;
38771 			_errHandler.reportError(this, re);
38772 			_errHandler.recover(this, re);
38773 		}
38774 		finally {
38775 			exitRule();
38776 		}
38777 		return _localctx;
38778 	}
38779 
38780 	public static class ProjectionsContext extends ParserRuleContext {
38781 		public List<ProjectionContext> projection() {
38782 			return getRuleContexts(ProjectionContext.class);
38783 		}
38784 		public ProjectionContext projection(int i) {
38785 			return getRuleContext(ProjectionContext.class,i);
38786 		}
38787 		public TopContext top() {
38788 			return getRuleContext(TopContext.class,0);
38789 		}
38790 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
38791 		public TerminalNode COMMA_(int i) {
38792 			return getToken(SQLServerStatementParser.COMMA_, i);
38793 		}
38794 		public ProjectionsContext(ParserRuleContext parent, int invokingState) {
38795 			super(parent, invokingState);
38796 		}
38797 		@Override public int getRuleIndex() { return RULE_projections; }
38798 		@Override
38799 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38800 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProjections(this);
38801 			else return visitor.visitChildren(this);
38802 		}
38803 	}
38804 
38805 	public final ProjectionsContext projections() throws RecognitionException {
38806 		ProjectionsContext _localctx = new ProjectionsContext(_ctx, getState());
38807 		enterRule(_localctx, 742, RULE_projections);
38808 		int _la;
38809 		try {
38810 			enterOuterAlt(_localctx, 1);
38811 			{
38812 			setState(5374);
38813 			_errHandler.sync(this);
38814 			switch ( getInterpreter().adaptivePredict(_input,609,_ctx) ) {
38815 			case 1:
38816 				{
38817 				setState(5369);
38818 				projection();
38819 				}
38820 				break;
38821 			case 2:
38822 				{
38823 				setState(5370);
38824 				top();
38825 				setState(5372);
38826 				_errHandler.sync(this);
38827 				switch ( getInterpreter().adaptivePredict(_input,608,_ctx) ) {
38828 				case 1:
38829 					{
38830 					setState(5371);
38831 					projection();
38832 					}
38833 					break;
38834 				}
38835 				}
38836 				break;
38837 			}
38838 			setState(5380);
38839 			_errHandler.sync(this);
38840 			_la = _input.LA(1);
38841 			while (_la==COMMA_) {
38842 				{
38843 				{
38844 				setState(5376);
38845 				match(COMMA_);
38846 				setState(5377);
38847 				projection();
38848 				}
38849 				}
38850 				setState(5382);
38851 				_errHandler.sync(this);
38852 				_la = _input.LA(1);
38853 			}
38854 			}
38855 		}
38856 		catch (RecognitionException re) {
38857 			_localctx.exception = re;
38858 			_errHandler.reportError(this, re);
38859 			_errHandler.recover(this, re);
38860 		}
38861 		finally {
38862 			exitRule();
38863 		}
38864 		return _localctx;
38865 	}
38866 
38867 	public static class ProjectionContext extends ParserRuleContext {
38868 		public QualifiedShorthandContext qualifiedShorthand() {
38869 			return getRuleContext(QualifiedShorthandContext.class,0);
38870 		}
38871 		public UnqualifiedShorthandContext unqualifiedShorthand() {
38872 			return getRuleContext(UnqualifiedShorthandContext.class,0);
38873 		}
38874 		public ColumnNameContext columnName() {
38875 			return getRuleContext(ColumnNameContext.class,0);
38876 		}
38877 		public ExprContext expr() {
38878 			return getRuleContext(ExprContext.class,0);
38879 		}
38880 		public AliasContext alias() {
38881 			return getRuleContext(AliasContext.class,0);
38882 		}
38883 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
38884 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
38885 		public ProjectionContext(ParserRuleContext parent, int invokingState) {
38886 			super(parent, invokingState);
38887 		}
38888 		@Override public int getRuleIndex() { return RULE_projection; }
38889 		@Override
38890 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
38891 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitProjection(this);
38892 			else return visitor.visitChildren(this);
38893 		}
38894 	}
38895 
38896 	public final ProjectionContext projection() throws RecognitionException {
38897 		ProjectionContext _localctx = new ProjectionContext(_ctx, getState());
38898 		enterRule(_localctx, 744, RULE_projection);
38899 		int _la;
38900 		try {
38901 			setState(5404);
38902 			_errHandler.sync(this);
38903 			switch ( getInterpreter().adaptivePredict(_input,616,_ctx) ) {
38904 			case 1:
38905 				enterOuterAlt(_localctx, 1);
38906 				{
38907 				setState(5383);
38908 				qualifiedShorthand();
38909 				}
38910 				break;
38911 			case 2:
38912 				enterOuterAlt(_localctx, 2);
38913 				{
38914 				setState(5384);
38915 				unqualifiedShorthand();
38916 				}
38917 				break;
38918 			case 3:
38919 				enterOuterAlt(_localctx, 3);
38920 				{
38921 				setState(5388);
38922 				_errHandler.sync(this);
38923 				switch ( getInterpreter().adaptivePredict(_input,611,_ctx) ) {
38924 				case 1:
38925 					{
38926 					setState(5385);
38927 					alias();
38928 					setState(5386);
38929 					match(EQ_);
38930 					}
38931 					break;
38932 				}
38933 				setState(5392);
38934 				_errHandler.sync(this);
38935 				switch ( getInterpreter().adaptivePredict(_input,612,_ctx) ) {
38936 				case 1:
38937 					{
38938 					setState(5390);
38939 					columnName();
38940 					}
38941 					break;
38942 				case 2:
38943 					{
38944 					setState(5391);
38945 					expr(0);
38946 					}
38947 					break;
38948 				}
38949 				}
38950 				break;
38951 			case 4:
38952 				enterOuterAlt(_localctx, 4);
38953 				{
38954 				setState(5396);
38955 				_errHandler.sync(this);
38956 				switch ( getInterpreter().adaptivePredict(_input,613,_ctx) ) {
38957 				case 1:
38958 					{
38959 					setState(5394);
38960 					columnName();
38961 					}
38962 					break;
38963 				case 2:
38964 					{
38965 					setState(5395);
38966 					expr(0);
38967 					}
38968 					break;
38969 				}
38970 				setState(5402);
38971 				_errHandler.sync(this);
38972 				switch ( getInterpreter().adaptivePredict(_input,615,_ctx) ) {
38973 				case 1:
38974 					{
38975 					setState(5399);
38976 					_errHandler.sync(this);
38977 					_la = _input.LA(1);
38978 					if (_la==AS) {
38979 						{
38980 						setState(5398);
38981 						match(AS);
38982 						}
38983 					}
38984 
38985 					setState(5401);
38986 					alias();
38987 					}
38988 					break;
38989 				}
38990 				}
38991 				break;
38992 			}
38993 		}
38994 		catch (RecognitionException re) {
38995 			_localctx.exception = re;
38996 			_errHandler.reportError(this, re);
38997 			_errHandler.recover(this, re);
38998 		}
38999 		finally {
39000 			exitRule();
39001 		}
39002 		return _localctx;
39003 	}
39004 
39005 	public static class TopContext extends ParserRuleContext {
39006 		public TerminalNode TOP() { return getToken(SQLServerStatementParser.TOP, 0); }
39007 		public TopNumContext topNum() {
39008 			return getRuleContext(TopNumContext.class,0);
39009 		}
39010 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
39011 		public TerminalNode LP_(int i) {
39012 			return getToken(SQLServerStatementParser.LP_, i);
39013 		}
39014 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
39015 		public TerminalNode RP_(int i) {
39016 			return getToken(SQLServerStatementParser.RP_, i);
39017 		}
39018 		public TerminalNode PERCENT() { return getToken(SQLServerStatementParser.PERCENT, 0); }
39019 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
39020 		public TerminalNode TIES() { return getToken(SQLServerStatementParser.TIES, 0); }
39021 		public TerminalNode ROW_NUMBER() { return getToken(SQLServerStatementParser.ROW_NUMBER, 0); }
39022 		public TerminalNode OVER() { return getToken(SQLServerStatementParser.OVER, 0); }
39023 		public OrderByClauseContext orderByClause() {
39024 			return getRuleContext(OrderByClauseContext.class,0);
39025 		}
39026 		public AliasContext alias() {
39027 			return getRuleContext(AliasContext.class,0);
39028 		}
39029 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
39030 		public TopContext(ParserRuleContext parent, int invokingState) {
39031 			super(parent, invokingState);
39032 		}
39033 		@Override public int getRuleIndex() { return RULE_top; }
39034 		@Override
39035 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39036 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTop(this);
39037 			else return visitor.visitChildren(this);
39038 		}
39039 	}
39040 
39041 	public final TopContext top() throws RecognitionException {
39042 		TopContext _localctx = new TopContext(_ctx, getState());
39043 		enterRule(_localctx, 746, RULE_top);
39044 		int _la;
39045 		try {
39046 			enterOuterAlt(_localctx, 1);
39047 			{
39048 			setState(5406);
39049 			match(TOP);
39050 			setState(5408);
39051 			_errHandler.sync(this);
39052 			_la = _input.LA(1);
39053 			if (_la==LP_) {
39054 				{
39055 				setState(5407);
39056 				match(LP_);
39057 				}
39058 			}
39059 
39060 			setState(5410);
39061 			topNum();
39062 			setState(5412);
39063 			_errHandler.sync(this);
39064 			switch ( getInterpreter().adaptivePredict(_input,618,_ctx) ) {
39065 			case 1:
39066 				{
39067 				setState(5411);
39068 				match(RP_);
39069 				}
39070 				break;
39071 			}
39072 			setState(5415);
39073 			_errHandler.sync(this);
39074 			_la = _input.LA(1);
39075 			if (_la==PERCENT) {
39076 				{
39077 				setState(5414);
39078 				match(PERCENT);
39079 				}
39080 			}
39081 
39082 			setState(5419);
39083 			_errHandler.sync(this);
39084 			switch ( getInterpreter().adaptivePredict(_input,620,_ctx) ) {
39085 			case 1:
39086 				{
39087 				setState(5417);
39088 				match(WITH);
39089 				setState(5418);
39090 				match(TIES);
39091 				}
39092 				break;
39093 			}
39094 			setState(5434);
39095 			_errHandler.sync(this);
39096 			switch ( getInterpreter().adaptivePredict(_input,623,_ctx) ) {
39097 			case 1:
39098 				{
39099 				setState(5421);
39100 				match(ROW_NUMBER);
39101 				setState(5422);
39102 				match(LP_);
39103 				setState(5423);
39104 				match(RP_);
39105 				setState(5424);
39106 				match(OVER);
39107 				setState(5425);
39108 				match(LP_);
39109 				setState(5426);
39110 				orderByClause();
39111 				setState(5427);
39112 				match(RP_);
39113 				setState(5432);
39114 				_errHandler.sync(this);
39115 				switch ( getInterpreter().adaptivePredict(_input,622,_ctx) ) {
39116 				case 1:
39117 					{
39118 					setState(5429);
39119 					_errHandler.sync(this);
39120 					_la = _input.LA(1);
39121 					if (_la==AS) {
39122 						{
39123 						setState(5428);
39124 						match(AS);
39125 						}
39126 					}
39127 
39128 					setState(5431);
39129 					alias();
39130 					}
39131 					break;
39132 				}
39133 				}
39134 				break;
39135 			}
39136 			}
39137 		}
39138 		catch (RecognitionException re) {
39139 			_localctx.exception = re;
39140 			_errHandler.reportError(this, re);
39141 			_errHandler.recover(this, re);
39142 		}
39143 		finally {
39144 			exitRule();
39145 		}
39146 		return _localctx;
39147 	}
39148 
39149 	public static class TopNumContext extends ParserRuleContext {
39150 		public NumberLiteralsContext numberLiterals() {
39151 			return getRuleContext(NumberLiteralsContext.class,0);
39152 		}
39153 		public ParameterMarkerContext parameterMarker() {
39154 			return getRuleContext(ParameterMarkerContext.class,0);
39155 		}
39156 		public TopNumContext(ParserRuleContext parent, int invokingState) {
39157 			super(parent, invokingState);
39158 		}
39159 		@Override public int getRuleIndex() { return RULE_topNum; }
39160 		@Override
39161 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39162 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTopNum(this);
39163 			else return visitor.visitChildren(this);
39164 		}
39165 	}
39166 
39167 	public final TopNumContext topNum() throws RecognitionException {
39168 		TopNumContext _localctx = new TopNumContext(_ctx, getState());
39169 		enterRule(_localctx, 748, RULE_topNum);
39170 		try {
39171 			setState(5438);
39172 			_errHandler.sync(this);
39173 			switch (_input.LA(1)) {
39174 			case PLUS_:
39175 			case MINUS_:
39176 			case NUMBER_:
39177 				enterOuterAlt(_localctx, 1);
39178 				{
39179 				setState(5436);
39180 				numberLiterals();
39181 				}
39182 				break;
39183 			case QUESTION_:
39184 				enterOuterAlt(_localctx, 2);
39185 				{
39186 				setState(5437);
39187 				parameterMarker();
39188 				}
39189 				break;
39190 			default:
39191 				throw new NoViableAltException(this);
39192 			}
39193 		}
39194 		catch (RecognitionException re) {
39195 			_localctx.exception = re;
39196 			_errHandler.reportError(this, re);
39197 			_errHandler.recover(this, re);
39198 		}
39199 		finally {
39200 			exitRule();
39201 		}
39202 		return _localctx;
39203 	}
39204 
39205 	public static class UnqualifiedShorthandContext extends ParserRuleContext {
39206 		public TerminalNode ASTERISK_() { return getToken(SQLServerStatementParser.ASTERISK_, 0); }
39207 		public UnqualifiedShorthandContext(ParserRuleContext parent, int invokingState) {
39208 			super(parent, invokingState);
39209 		}
39210 		@Override public int getRuleIndex() { return RULE_unqualifiedShorthand; }
39211 		@Override
39212 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39213 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUnqualifiedShorthand(this);
39214 			else return visitor.visitChildren(this);
39215 		}
39216 	}
39217 
39218 	public final UnqualifiedShorthandContext unqualifiedShorthand() throws RecognitionException {
39219 		UnqualifiedShorthandContext _localctx = new UnqualifiedShorthandContext(_ctx, getState());
39220 		enterRule(_localctx, 750, RULE_unqualifiedShorthand);
39221 		try {
39222 			enterOuterAlt(_localctx, 1);
39223 			{
39224 			setState(5440);
39225 			match(ASTERISK_);
39226 			}
39227 		}
39228 		catch (RecognitionException re) {
39229 			_localctx.exception = re;
39230 			_errHandler.reportError(this, re);
39231 			_errHandler.recover(this, re);
39232 		}
39233 		finally {
39234 			exitRule();
39235 		}
39236 		return _localctx;
39237 	}
39238 
39239 	public static class QualifiedShorthandContext extends ParserRuleContext {
39240 		public IdentifierContext identifier() {
39241 			return getRuleContext(IdentifierContext.class,0);
39242 		}
39243 		public TerminalNode DOT_ASTERISK_() { return getToken(SQLServerStatementParser.DOT_ASTERISK_, 0); }
39244 		public QualifiedShorthandContext(ParserRuleContext parent, int invokingState) {
39245 			super(parent, invokingState);
39246 		}
39247 		@Override public int getRuleIndex() { return RULE_qualifiedShorthand; }
39248 		@Override
39249 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39250 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQualifiedShorthand(this);
39251 			else return visitor.visitChildren(this);
39252 		}
39253 	}
39254 
39255 	public final QualifiedShorthandContext qualifiedShorthand() throws RecognitionException {
39256 		QualifiedShorthandContext _localctx = new QualifiedShorthandContext(_ctx, getState());
39257 		enterRule(_localctx, 752, RULE_qualifiedShorthand);
39258 		try {
39259 			enterOuterAlt(_localctx, 1);
39260 			{
39261 			setState(5442);
39262 			identifier();
39263 			setState(5443);
39264 			match(DOT_ASTERISK_);
39265 			}
39266 		}
39267 		catch (RecognitionException re) {
39268 			_localctx.exception = re;
39269 			_errHandler.reportError(this, re);
39270 			_errHandler.recover(this, re);
39271 		}
39272 		finally {
39273 			exitRule();
39274 		}
39275 		return _localctx;
39276 	}
39277 
39278 	public static class IntoClauseContext extends ParserRuleContext {
39279 		public TerminalNode INTO() { return getToken(SQLServerStatementParser.INTO, 0); }
39280 		public TableNameContext tableName() {
39281 			return getRuleContext(TableNameContext.class,0);
39282 		}
39283 		public IntoClauseContext(ParserRuleContext parent, int invokingState) {
39284 			super(parent, invokingState);
39285 		}
39286 		@Override public int getRuleIndex() { return RULE_intoClause; }
39287 		@Override
39288 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39289 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIntoClause(this);
39290 			else return visitor.visitChildren(this);
39291 		}
39292 	}
39293 
39294 	public final IntoClauseContext intoClause() throws RecognitionException {
39295 		IntoClauseContext _localctx = new IntoClauseContext(_ctx, getState());
39296 		enterRule(_localctx, 754, RULE_intoClause);
39297 		try {
39298 			enterOuterAlt(_localctx, 1);
39299 			{
39300 			setState(5445);
39301 			match(INTO);
39302 			setState(5446);
39303 			tableName();
39304 			}
39305 		}
39306 		catch (RecognitionException re) {
39307 			_localctx.exception = re;
39308 			_errHandler.reportError(this, re);
39309 			_errHandler.recover(this, re);
39310 		}
39311 		finally {
39312 			exitRule();
39313 		}
39314 		return _localctx;
39315 	}
39316 
39317 	public static class FromClauseContext extends ParserRuleContext {
39318 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
39319 		public TableReferencesContext tableReferences() {
39320 			return getRuleContext(TableReferencesContext.class,0);
39321 		}
39322 		public FromClauseContext(ParserRuleContext parent, int invokingState) {
39323 			super(parent, invokingState);
39324 		}
39325 		@Override public int getRuleIndex() { return RULE_fromClause; }
39326 		@Override
39327 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39328 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFromClause(this);
39329 			else return visitor.visitChildren(this);
39330 		}
39331 	}
39332 
39333 	public final FromClauseContext fromClause() throws RecognitionException {
39334 		FromClauseContext _localctx = new FromClauseContext(_ctx, getState());
39335 		enterRule(_localctx, 756, RULE_fromClause);
39336 		try {
39337 			enterOuterAlt(_localctx, 1);
39338 			{
39339 			setState(5448);
39340 			match(FROM);
39341 			setState(5449);
39342 			tableReferences();
39343 			}
39344 		}
39345 		catch (RecognitionException re) {
39346 			_localctx.exception = re;
39347 			_errHandler.reportError(this, re);
39348 			_errHandler.recover(this, re);
39349 		}
39350 		finally {
39351 			exitRule();
39352 		}
39353 		return _localctx;
39354 	}
39355 
39356 	public static class TableReferencesContext extends ParserRuleContext {
39357 		public List<TableReferenceContext> tableReference() {
39358 			return getRuleContexts(TableReferenceContext.class);
39359 		}
39360 		public TableReferenceContext tableReference(int i) {
39361 			return getRuleContext(TableReferenceContext.class,i);
39362 		}
39363 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
39364 		public TerminalNode COMMA_(int i) {
39365 			return getToken(SQLServerStatementParser.COMMA_, i);
39366 		}
39367 		public TableReferencesContext(ParserRuleContext parent, int invokingState) {
39368 			super(parent, invokingState);
39369 		}
39370 		@Override public int getRuleIndex() { return RULE_tableReferences; }
39371 		@Override
39372 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39373 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableReferences(this);
39374 			else return visitor.visitChildren(this);
39375 		}
39376 	}
39377 
39378 	public final TableReferencesContext tableReferences() throws RecognitionException {
39379 		TableReferencesContext _localctx = new TableReferencesContext(_ctx, getState());
39380 		enterRule(_localctx, 758, RULE_tableReferences);
39381 		int _la;
39382 		try {
39383 			enterOuterAlt(_localctx, 1);
39384 			{
39385 			setState(5451);
39386 			tableReference();
39387 			setState(5456);
39388 			_errHandler.sync(this);
39389 			_la = _input.LA(1);
39390 			while (_la==COMMA_) {
39391 				{
39392 				{
39393 				setState(5452);
39394 				match(COMMA_);
39395 				setState(5453);
39396 				tableReference();
39397 				}
39398 				}
39399 				setState(5458);
39400 				_errHandler.sync(this);
39401 				_la = _input.LA(1);
39402 			}
39403 			}
39404 		}
39405 		catch (RecognitionException re) {
39406 			_localctx.exception = re;
39407 			_errHandler.reportError(this, re);
39408 			_errHandler.recover(this, re);
39409 		}
39410 		finally {
39411 			exitRule();
39412 		}
39413 		return _localctx;
39414 	}
39415 
39416 	public static class TableReferenceContext extends ParserRuleContext {
39417 		public TableFactorContext tableFactor() {
39418 			return getRuleContext(TableFactorContext.class,0);
39419 		}
39420 		public List<JoinedTableContext> joinedTable() {
39421 			return getRuleContexts(JoinedTableContext.class);
39422 		}
39423 		public JoinedTableContext joinedTable(int i) {
39424 			return getRuleContext(JoinedTableContext.class,i);
39425 		}
39426 		public TableReferenceContext(ParserRuleContext parent, int invokingState) {
39427 			super(parent, invokingState);
39428 		}
39429 		@Override public int getRuleIndex() { return RULE_tableReference; }
39430 		@Override
39431 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39432 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableReference(this);
39433 			else return visitor.visitChildren(this);
39434 		}
39435 	}
39436 
39437 	public final TableReferenceContext tableReference() throws RecognitionException {
39438 		TableReferenceContext _localctx = new TableReferenceContext(_ctx, getState());
39439 		enterRule(_localctx, 760, RULE_tableReference);
39440 		int _la;
39441 		try {
39442 			enterOuterAlt(_localctx, 1);
39443 			{
39444 			setState(5459);
39445 			tableFactor();
39446 			setState(5463);
39447 			_errHandler.sync(this);
39448 			_la = _input.LA(1);
39449 			while (((((_la - 86)) & ~0x3f) == 0 && ((1L << (_la - 86)) & ((1L << (NATURAL - 86)) | (1L << (JOIN - 86)) | (1L << (FULL - 86)) | (1L << (INNER - 86)) | (1L << (OUTER - 86)) | (1L << (LEFT - 86)) | (1L << (RIGHT - 86)) | (1L << (CROSS - 86)))) != 0)) {
39450 				{
39451 				{
39452 				setState(5460);
39453 				joinedTable();
39454 				}
39455 				}
39456 				setState(5465);
39457 				_errHandler.sync(this);
39458 				_la = _input.LA(1);
39459 			}
39460 			}
39461 		}
39462 		catch (RecognitionException re) {
39463 			_localctx.exception = re;
39464 			_errHandler.reportError(this, re);
39465 			_errHandler.recover(this, re);
39466 		}
39467 		finally {
39468 			exitRule();
39469 		}
39470 		return _localctx;
39471 	}
39472 
39473 	public static class TableFactorContext extends ParserRuleContext {
39474 		public TableNameContext tableName() {
39475 			return getRuleContext(TableNameContext.class,0);
39476 		}
39477 		public AliasContext alias() {
39478 			return getRuleContext(AliasContext.class,0);
39479 		}
39480 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
39481 		public SubqueryContext subquery() {
39482 			return getRuleContext(SubqueryContext.class,0);
39483 		}
39484 		public ColumnNamesContext columnNames() {
39485 			return getRuleContext(ColumnNamesContext.class,0);
39486 		}
39487 		public ExprContext expr() {
39488 			return getRuleContext(ExprContext.class,0);
39489 		}
39490 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
39491 		public TableReferencesContext tableReferences() {
39492 			return getRuleContext(TableReferencesContext.class,0);
39493 		}
39494 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
39495 		public TableFactorContext(ParserRuleContext parent, int invokingState) {
39496 			super(parent, invokingState);
39497 		}
39498 		@Override public int getRuleIndex() { return RULE_tableFactor; }
39499 		@Override
39500 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39501 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTableFactor(this);
39502 			else return visitor.visitChildren(this);
39503 		}
39504 	}
39505 
39506 	public final TableFactorContext tableFactor() throws RecognitionException {
39507 		TableFactorContext _localctx = new TableFactorContext(_ctx, getState());
39508 		enterRule(_localctx, 762, RULE_tableFactor);
39509 		int _la;
39510 		try {
39511 			setState(5492);
39512 			_errHandler.sync(this);
39513 			switch ( getInterpreter().adaptivePredict(_input,633,_ctx) ) {
39514 			case 1:
39515 				enterOuterAlt(_localctx, 1);
39516 				{
39517 				setState(5466);
39518 				tableName();
39519 				setState(5471);
39520 				_errHandler.sync(this);
39521 				switch ( getInterpreter().adaptivePredict(_input,628,_ctx) ) {
39522 				case 1:
39523 					{
39524 					setState(5468);
39525 					_errHandler.sync(this);
39526 					_la = _input.LA(1);
39527 					if (_la==AS) {
39528 						{
39529 						setState(5467);
39530 						match(AS);
39531 						}
39532 					}
39533 
39534 					setState(5470);
39535 					alias();
39536 					}
39537 					break;
39538 				}
39539 				}
39540 				break;
39541 			case 2:
39542 				enterOuterAlt(_localctx, 2);
39543 				{
39544 				setState(5473);
39545 				subquery();
39546 				setState(5475);
39547 				_errHandler.sync(this);
39548 				_la = _input.LA(1);
39549 				if (_la==AS) {
39550 					{
39551 					setState(5474);
39552 					match(AS);
39553 					}
39554 				}
39555 
39556 				setState(5477);
39557 				alias();
39558 				setState(5479);
39559 				_errHandler.sync(this);
39560 				switch ( getInterpreter().adaptivePredict(_input,630,_ctx) ) {
39561 				case 1:
39562 					{
39563 					setState(5478);
39564 					columnNames();
39565 					}
39566 					break;
39567 				}
39568 				}
39569 				break;
39570 			case 3:
39571 				enterOuterAlt(_localctx, 3);
39572 				{
39573 				setState(5481);
39574 				expr(0);
39575 				setState(5486);
39576 				_errHandler.sync(this);
39577 				switch ( getInterpreter().adaptivePredict(_input,632,_ctx) ) {
39578 				case 1:
39579 					{
39580 					setState(5483);
39581 					_errHandler.sync(this);
39582 					_la = _input.LA(1);
39583 					if (_la==AS) {
39584 						{
39585 						setState(5482);
39586 						match(AS);
39587 						}
39588 					}
39589 
39590 					setState(5485);
39591 					alias();
39592 					}
39593 					break;
39594 				}
39595 				}
39596 				break;
39597 			case 4:
39598 				enterOuterAlt(_localctx, 4);
39599 				{
39600 				setState(5488);
39601 				match(LP_);
39602 				setState(5489);
39603 				tableReferences();
39604 				setState(5490);
39605 				match(RP_);
39606 				}
39607 				break;
39608 			}
39609 		}
39610 		catch (RecognitionException re) {
39611 			_localctx.exception = re;
39612 			_errHandler.reportError(this, re);
39613 			_errHandler.recover(this, re);
39614 		}
39615 		finally {
39616 			exitRule();
39617 		}
39618 		return _localctx;
39619 	}
39620 
39621 	public static class JoinedTableContext extends ParserRuleContext {
39622 		public TableFactorContext tableFactor() {
39623 			return getRuleContext(TableFactorContext.class,0);
39624 		}
39625 		public TerminalNode JOIN() { return getToken(SQLServerStatementParser.JOIN, 0); }
39626 		public TerminalNode NATURAL() { return getToken(SQLServerStatementParser.NATURAL, 0); }
39627 		public JoinSpecificationContext joinSpecification() {
39628 			return getRuleContext(JoinSpecificationContext.class,0);
39629 		}
39630 		public TerminalNode INNER() { return getToken(SQLServerStatementParser.INNER, 0); }
39631 		public TerminalNode CROSS() { return getToken(SQLServerStatementParser.CROSS, 0); }
39632 		public TerminalNode LEFT() { return getToken(SQLServerStatementParser.LEFT, 0); }
39633 		public TerminalNode RIGHT() { return getToken(SQLServerStatementParser.RIGHT, 0); }
39634 		public TerminalNode FULL() { return getToken(SQLServerStatementParser.FULL, 0); }
39635 		public TerminalNode OUTER() { return getToken(SQLServerStatementParser.OUTER, 0); }
39636 		public TerminalNode APPLY() { return getToken(SQLServerStatementParser.APPLY, 0); }
39637 		public JoinedTableContext(ParserRuleContext parent, int invokingState) {
39638 			super(parent, invokingState);
39639 		}
39640 		@Override public int getRuleIndex() { return RULE_joinedTable; }
39641 		@Override
39642 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39643 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJoinedTable(this);
39644 			else return visitor.visitChildren(this);
39645 		}
39646 	}
39647 
39648 	public final JoinedTableContext joinedTable() throws RecognitionException {
39649 		JoinedTableContext _localctx = new JoinedTableContext(_ctx, getState());
39650 		enterRule(_localctx, 764, RULE_joinedTable);
39651 		int _la;
39652 		try {
39653 			setState(5524);
39654 			_errHandler.sync(this);
39655 			switch ( getInterpreter().adaptivePredict(_input,641,_ctx) ) {
39656 			case 1:
39657 				enterOuterAlt(_localctx, 1);
39658 				{
39659 				setState(5495);
39660 				_errHandler.sync(this);
39661 				_la = _input.LA(1);
39662 				if (_la==NATURAL) {
39663 					{
39664 					setState(5494);
39665 					match(NATURAL);
39666 					}
39667 				}
39668 
39669 				{
39670 				setState(5498);
39671 				_errHandler.sync(this);
39672 				_la = _input.LA(1);
39673 				if (_la==INNER || _la==CROSS) {
39674 					{
39675 					setState(5497);
39676 					_la = _input.LA(1);
39677 					if ( !(_la==INNER || _la==CROSS) ) {
39678 					_errHandler.recoverInline(this);
39679 					}
39680 					else {
39681 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39682 						_errHandler.reportMatch(this);
39683 						consume();
39684 					}
39685 					}
39686 				}
39687 
39688 				setState(5500);
39689 				match(JOIN);
39690 				}
39691 				setState(5502);
39692 				tableFactor();
39693 				setState(5504);
39694 				_errHandler.sync(this);
39695 				_la = _input.LA(1);
39696 				if (_la==USING || _la==ON) {
39697 					{
39698 					setState(5503);
39699 					joinSpecification();
39700 					}
39701 				}
39702 
39703 				}
39704 				break;
39705 			case 2:
39706 				enterOuterAlt(_localctx, 2);
39707 				{
39708 				setState(5507);
39709 				_errHandler.sync(this);
39710 				_la = _input.LA(1);
39711 				if (_la==NATURAL) {
39712 					{
39713 					setState(5506);
39714 					match(NATURAL);
39715 					}
39716 				}
39717 
39718 				setState(5509);
39719 				_la = _input.LA(1);
39720 				if ( !(((((_la - 88)) & ~0x3f) == 0 && ((1L << (_la - 88)) & ((1L << (FULL - 88)) | (1L << (LEFT - 88)) | (1L << (RIGHT - 88)))) != 0)) ) {
39721 				_errHandler.recoverInline(this);
39722 				}
39723 				else {
39724 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39725 					_errHandler.reportMatch(this);
39726 					consume();
39727 				}
39728 				setState(5511);
39729 				_errHandler.sync(this);
39730 				_la = _input.LA(1);
39731 				if (_la==OUTER) {
39732 					{
39733 					setState(5510);
39734 					match(OUTER);
39735 					}
39736 				}
39737 
39738 				setState(5513);
39739 				match(JOIN);
39740 				setState(5514);
39741 				tableFactor();
39742 				setState(5516);
39743 				_errHandler.sync(this);
39744 				_la = _input.LA(1);
39745 				if (_la==USING || _la==ON) {
39746 					{
39747 					setState(5515);
39748 					joinSpecification();
39749 					}
39750 				}
39751 
39752 				}
39753 				break;
39754 			case 3:
39755 				enterOuterAlt(_localctx, 3);
39756 				{
39757 				setState(5518);
39758 				_la = _input.LA(1);
39759 				if ( !(_la==OUTER || _la==CROSS) ) {
39760 				_errHandler.recoverInline(this);
39761 				}
39762 				else {
39763 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
39764 					_errHandler.reportMatch(this);
39765 					consume();
39766 				}
39767 				setState(5519);
39768 				match(APPLY);
39769 				setState(5520);
39770 				tableFactor();
39771 				setState(5522);
39772 				_errHandler.sync(this);
39773 				_la = _input.LA(1);
39774 				if (_la==USING || _la==ON) {
39775 					{
39776 					setState(5521);
39777 					joinSpecification();
39778 					}
39779 				}
39780 
39781 				}
39782 				break;
39783 			}
39784 		}
39785 		catch (RecognitionException re) {
39786 			_localctx.exception = re;
39787 			_errHandler.reportError(this, re);
39788 			_errHandler.recover(this, re);
39789 		}
39790 		finally {
39791 			exitRule();
39792 		}
39793 		return _localctx;
39794 	}
39795 
39796 	public static class JoinSpecificationContext extends ParserRuleContext {
39797 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
39798 		public ExprContext expr() {
39799 			return getRuleContext(ExprContext.class,0);
39800 		}
39801 		public TerminalNode USING() { return getToken(SQLServerStatementParser.USING, 0); }
39802 		public ColumnNamesContext columnNames() {
39803 			return getRuleContext(ColumnNamesContext.class,0);
39804 		}
39805 		public JoinSpecificationContext(ParserRuleContext parent, int invokingState) {
39806 			super(parent, invokingState);
39807 		}
39808 		@Override public int getRuleIndex() { return RULE_joinSpecification; }
39809 		@Override
39810 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39811 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitJoinSpecification(this);
39812 			else return visitor.visitChildren(this);
39813 		}
39814 	}
39815 
39816 	public final JoinSpecificationContext joinSpecification() throws RecognitionException {
39817 		JoinSpecificationContext _localctx = new JoinSpecificationContext(_ctx, getState());
39818 		enterRule(_localctx, 766, RULE_joinSpecification);
39819 		try {
39820 			setState(5530);
39821 			_errHandler.sync(this);
39822 			switch (_input.LA(1)) {
39823 			case ON:
39824 				enterOuterAlt(_localctx, 1);
39825 				{
39826 				setState(5526);
39827 				match(ON);
39828 				setState(5527);
39829 				expr(0);
39830 				}
39831 				break;
39832 			case USING:
39833 				enterOuterAlt(_localctx, 2);
39834 				{
39835 				setState(5528);
39836 				match(USING);
39837 				setState(5529);
39838 				columnNames();
39839 				}
39840 				break;
39841 			default:
39842 				throw new NoViableAltException(this);
39843 			}
39844 		}
39845 		catch (RecognitionException re) {
39846 			_localctx.exception = re;
39847 			_errHandler.reportError(this, re);
39848 			_errHandler.recover(this, re);
39849 		}
39850 		finally {
39851 			exitRule();
39852 		}
39853 		return _localctx;
39854 	}
39855 
39856 	public static class WhereClauseContext extends ParserRuleContext {
39857 		public TerminalNode WHERE() { return getToken(SQLServerStatementParser.WHERE, 0); }
39858 		public ExprContext expr() {
39859 			return getRuleContext(ExprContext.class,0);
39860 		}
39861 		public WhereClauseContext(ParserRuleContext parent, int invokingState) {
39862 			super(parent, invokingState);
39863 		}
39864 		@Override public int getRuleIndex() { return RULE_whereClause; }
39865 		@Override
39866 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39867 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWhereClause(this);
39868 			else return visitor.visitChildren(this);
39869 		}
39870 	}
39871 
39872 	public final WhereClauseContext whereClause() throws RecognitionException {
39873 		WhereClauseContext _localctx = new WhereClauseContext(_ctx, getState());
39874 		enterRule(_localctx, 768, RULE_whereClause);
39875 		try {
39876 			enterOuterAlt(_localctx, 1);
39877 			{
39878 			setState(5532);
39879 			match(WHERE);
39880 			setState(5533);
39881 			expr(0);
39882 			}
39883 		}
39884 		catch (RecognitionException re) {
39885 			_localctx.exception = re;
39886 			_errHandler.reportError(this, re);
39887 			_errHandler.recover(this, re);
39888 		}
39889 		finally {
39890 			exitRule();
39891 		}
39892 		return _localctx;
39893 	}
39894 
39895 	public static class GroupByClauseContext extends ParserRuleContext {
39896 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
39897 		public TerminalNode BY() { return getToken(SQLServerStatementParser.BY, 0); }
39898 		public List<OrderByItemContext> orderByItem() {
39899 			return getRuleContexts(OrderByItemContext.class);
39900 		}
39901 		public OrderByItemContext orderByItem(int i) {
39902 			return getRuleContext(OrderByItemContext.class,i);
39903 		}
39904 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
39905 		public TerminalNode COMMA_(int i) {
39906 			return getToken(SQLServerStatementParser.COMMA_, i);
39907 		}
39908 		public GroupByClauseContext(ParserRuleContext parent, int invokingState) {
39909 			super(parent, invokingState);
39910 		}
39911 		@Override public int getRuleIndex() { return RULE_groupByClause; }
39912 		@Override
39913 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39914 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGroupByClause(this);
39915 			else return visitor.visitChildren(this);
39916 		}
39917 	}
39918 
39919 	public final GroupByClauseContext groupByClause() throws RecognitionException {
39920 		GroupByClauseContext _localctx = new GroupByClauseContext(_ctx, getState());
39921 		enterRule(_localctx, 770, RULE_groupByClause);
39922 		int _la;
39923 		try {
39924 			enterOuterAlt(_localctx, 1);
39925 			{
39926 			setState(5535);
39927 			match(GROUP);
39928 			setState(5536);
39929 			match(BY);
39930 			setState(5537);
39931 			orderByItem();
39932 			setState(5542);
39933 			_errHandler.sync(this);
39934 			_la = _input.LA(1);
39935 			while (_la==COMMA_) {
39936 				{
39937 				{
39938 				setState(5538);
39939 				match(COMMA_);
39940 				setState(5539);
39941 				orderByItem();
39942 				}
39943 				}
39944 				setState(5544);
39945 				_errHandler.sync(this);
39946 				_la = _input.LA(1);
39947 			}
39948 			}
39949 		}
39950 		catch (RecognitionException re) {
39951 			_localctx.exception = re;
39952 			_errHandler.reportError(this, re);
39953 			_errHandler.recover(this, re);
39954 		}
39955 		finally {
39956 			exitRule();
39957 		}
39958 		return _localctx;
39959 	}
39960 
39961 	public static class HavingClauseContext extends ParserRuleContext {
39962 		public TerminalNode HAVING() { return getToken(SQLServerStatementParser.HAVING, 0); }
39963 		public ExprContext expr() {
39964 			return getRuleContext(ExprContext.class,0);
39965 		}
39966 		public HavingClauseContext(ParserRuleContext parent, int invokingState) {
39967 			super(parent, invokingState);
39968 		}
39969 		@Override public int getRuleIndex() { return RULE_havingClause; }
39970 		@Override
39971 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
39972 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHavingClause(this);
39973 			else return visitor.visitChildren(this);
39974 		}
39975 	}
39976 
39977 	public final HavingClauseContext havingClause() throws RecognitionException {
39978 		HavingClauseContext _localctx = new HavingClauseContext(_ctx, getState());
39979 		enterRule(_localctx, 772, RULE_havingClause);
39980 		try {
39981 			enterOuterAlt(_localctx, 1);
39982 			{
39983 			setState(5545);
39984 			match(HAVING);
39985 			setState(5546);
39986 			expr(0);
39987 			}
39988 		}
39989 		catch (RecognitionException re) {
39990 			_localctx.exception = re;
39991 			_errHandler.reportError(this, re);
39992 			_errHandler.recover(this, re);
39993 		}
39994 		finally {
39995 			exitRule();
39996 		}
39997 		return _localctx;
39998 	}
39999 
40000 	public static class SubqueryContext extends ParserRuleContext {
40001 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
40002 		public AggregationClauseContext aggregationClause() {
40003 			return getRuleContext(AggregationClauseContext.class,0);
40004 		}
40005 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
40006 		public SubqueryContext(ParserRuleContext parent, int invokingState) {
40007 			super(parent, invokingState);
40008 		}
40009 		@Override public int getRuleIndex() { return RULE_subquery; }
40010 		@Override
40011 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40012 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSubquery(this);
40013 			else return visitor.visitChildren(this);
40014 		}
40015 	}
40016 
40017 	public final SubqueryContext subquery() throws RecognitionException {
40018 		SubqueryContext _localctx = new SubqueryContext(_ctx, getState());
40019 		enterRule(_localctx, 774, RULE_subquery);
40020 		try {
40021 			enterOuterAlt(_localctx, 1);
40022 			{
40023 			setState(5548);
40024 			match(LP_);
40025 			setState(5549);
40026 			aggregationClause();
40027 			setState(5550);
40028 			match(RP_);
40029 			}
40030 		}
40031 		catch (RecognitionException re) {
40032 			_localctx.exception = re;
40033 			_errHandler.reportError(this, re);
40034 			_errHandler.recover(this, re);
40035 		}
40036 		finally {
40037 			exitRule();
40038 		}
40039 		return _localctx;
40040 	}
40041 
40042 	public static class WithTempTableContext extends ParserRuleContext {
40043 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
40044 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
40045 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
40046 		public List<ColumnNameContext> columnName() {
40047 			return getRuleContexts(ColumnNameContext.class);
40048 		}
40049 		public ColumnNameContext columnName(int i) {
40050 			return getRuleContext(ColumnNameContext.class,i);
40051 		}
40052 		public List<DataTypeContext> dataType() {
40053 			return getRuleContexts(DataTypeContext.class);
40054 		}
40055 		public DataTypeContext dataType(int i) {
40056 			return getRuleContext(DataTypeContext.class,i);
40057 		}
40058 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40059 		public TerminalNode COMMA_(int i) {
40060 			return getToken(SQLServerStatementParser.COMMA_, i);
40061 		}
40062 		public WithTempTableContext(ParserRuleContext parent, int invokingState) {
40063 			super(parent, invokingState);
40064 		}
40065 		@Override public int getRuleIndex() { return RULE_withTempTable; }
40066 		@Override
40067 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40068 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithTempTable(this);
40069 			else return visitor.visitChildren(this);
40070 		}
40071 	}
40072 
40073 	public final WithTempTableContext withTempTable() throws RecognitionException {
40074 		WithTempTableContext _localctx = new WithTempTableContext(_ctx, getState());
40075 		enterRule(_localctx, 776, RULE_withTempTable);
40076 		int _la;
40077 		try {
40078 			enterOuterAlt(_localctx, 1);
40079 			{
40080 			setState(5552);
40081 			match(WITH);
40082 			setState(5553);
40083 			match(LP_);
40084 			{
40085 			setState(5554);
40086 			columnName();
40087 			setState(5555);
40088 			dataType();
40089 			}
40090 			setState(5563);
40091 			_errHandler.sync(this);
40092 			_la = _input.LA(1);
40093 			while (_la==COMMA_) {
40094 				{
40095 				{
40096 				setState(5557);
40097 				match(COMMA_);
40098 				setState(5558);
40099 				columnName();
40100 				setState(5559);
40101 				dataType();
40102 				}
40103 				}
40104 				setState(5565);
40105 				_errHandler.sync(this);
40106 				_la = _input.LA(1);
40107 			}
40108 			setState(5566);
40109 			match(RP_);
40110 			}
40111 		}
40112 		catch (RecognitionException re) {
40113 			_localctx.exception = re;
40114 			_errHandler.reportError(this, re);
40115 			_errHandler.recover(this, re);
40116 		}
40117 		finally {
40118 			exitRule();
40119 		}
40120 		return _localctx;
40121 	}
40122 
40123 	public static class WithClauseContext extends ParserRuleContext {
40124 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
40125 		public CteClauseSetContext cteClauseSet() {
40126 			return getRuleContext(CteClauseSetContext.class,0);
40127 		}
40128 		public WithClauseContext(ParserRuleContext parent, int invokingState) {
40129 			super(parent, invokingState);
40130 		}
40131 		@Override public int getRuleIndex() { return RULE_withClause; }
40132 		@Override
40133 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40134 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWithClause(this);
40135 			else return visitor.visitChildren(this);
40136 		}
40137 	}
40138 
40139 	public final WithClauseContext withClause() throws RecognitionException {
40140 		WithClauseContext _localctx = new WithClauseContext(_ctx, getState());
40141 		enterRule(_localctx, 778, RULE_withClause);
40142 		try {
40143 			enterOuterAlt(_localctx, 1);
40144 			{
40145 			setState(5568);
40146 			match(WITH);
40147 			setState(5569);
40148 			cteClauseSet();
40149 			}
40150 		}
40151 		catch (RecognitionException re) {
40152 			_localctx.exception = re;
40153 			_errHandler.reportError(this, re);
40154 			_errHandler.recover(this, re);
40155 		}
40156 		finally {
40157 			exitRule();
40158 		}
40159 		return _localctx;
40160 	}
40161 
40162 	public static class CteClauseSetContext extends ParserRuleContext {
40163 		public List<CteClauseContext> cteClause() {
40164 			return getRuleContexts(CteClauseContext.class);
40165 		}
40166 		public CteClauseContext cteClause(int i) {
40167 			return getRuleContext(CteClauseContext.class,i);
40168 		}
40169 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40170 		public TerminalNode COMMA_(int i) {
40171 			return getToken(SQLServerStatementParser.COMMA_, i);
40172 		}
40173 		public CteClauseSetContext(ParserRuleContext parent, int invokingState) {
40174 			super(parent, invokingState);
40175 		}
40176 		@Override public int getRuleIndex() { return RULE_cteClauseSet; }
40177 		@Override
40178 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40179 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCteClauseSet(this);
40180 			else return visitor.visitChildren(this);
40181 		}
40182 	}
40183 
40184 	public final CteClauseSetContext cteClauseSet() throws RecognitionException {
40185 		CteClauseSetContext _localctx = new CteClauseSetContext(_ctx, getState());
40186 		enterRule(_localctx, 780, RULE_cteClauseSet);
40187 		int _la;
40188 		try {
40189 			enterOuterAlt(_localctx, 1);
40190 			{
40191 			setState(5571);
40192 			cteClause();
40193 			setState(5576);
40194 			_errHandler.sync(this);
40195 			_la = _input.LA(1);
40196 			while (_la==COMMA_) {
40197 				{
40198 				{
40199 				setState(5572);
40200 				match(COMMA_);
40201 				setState(5573);
40202 				cteClause();
40203 				}
40204 				}
40205 				setState(5578);
40206 				_errHandler.sync(this);
40207 				_la = _input.LA(1);
40208 			}
40209 			}
40210 		}
40211 		catch (RecognitionException re) {
40212 			_localctx.exception = re;
40213 			_errHandler.reportError(this, re);
40214 			_errHandler.recover(this, re);
40215 		}
40216 		finally {
40217 			exitRule();
40218 		}
40219 		return _localctx;
40220 	}
40221 
40222 	public static class CteClauseContext extends ParserRuleContext {
40223 		public IdentifierContext identifier() {
40224 			return getRuleContext(IdentifierContext.class,0);
40225 		}
40226 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
40227 		public SubqueryContext subquery() {
40228 			return getRuleContext(SubqueryContext.class,0);
40229 		}
40230 		public ColumnNamesContext columnNames() {
40231 			return getRuleContext(ColumnNamesContext.class,0);
40232 		}
40233 		public CteClauseContext(ParserRuleContext parent, int invokingState) {
40234 			super(parent, invokingState);
40235 		}
40236 		@Override public int getRuleIndex() { return RULE_cteClause; }
40237 		@Override
40238 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40239 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCteClause(this);
40240 			else return visitor.visitChildren(this);
40241 		}
40242 	}
40243 
40244 	public final CteClauseContext cteClause() throws RecognitionException {
40245 		CteClauseContext _localctx = new CteClauseContext(_ctx, getState());
40246 		enterRule(_localctx, 782, RULE_cteClause);
40247 		int _la;
40248 		try {
40249 			enterOuterAlt(_localctx, 1);
40250 			{
40251 			setState(5579);
40252 			identifier();
40253 			setState(5581);
40254 			_errHandler.sync(this);
40255 			_la = _input.LA(1);
40256 			if (_la==LP_) {
40257 				{
40258 				setState(5580);
40259 				columnNames();
40260 				}
40261 			}
40262 
40263 			setState(5583);
40264 			match(AS);
40265 			setState(5584);
40266 			subquery();
40267 			}
40268 		}
40269 		catch (RecognitionException re) {
40270 			_localctx.exception = re;
40271 			_errHandler.reportError(this, re);
40272 			_errHandler.recover(this, re);
40273 		}
40274 		finally {
40275 			exitRule();
40276 		}
40277 		return _localctx;
40278 	}
40279 
40280 	public static class OutputClauseContext extends ParserRuleContext {
40281 		public TerminalNode OUTPUT() { return getToken(SQLServerStatementParser.OUTPUT, 0); }
40282 		public OutputWithColumnsContext outputWithColumns() {
40283 			return getRuleContext(OutputWithColumnsContext.class,0);
40284 		}
40285 		public OutputWithAateriskContext outputWithAaterisk() {
40286 			return getRuleContext(OutputWithAateriskContext.class,0);
40287 		}
40288 		public TerminalNode INTO() { return getToken(SQLServerStatementParser.INTO, 0); }
40289 		public OutputTableNameContext outputTableName() {
40290 			return getRuleContext(OutputTableNameContext.class,0);
40291 		}
40292 		public ColumnNamesContext columnNames() {
40293 			return getRuleContext(ColumnNamesContext.class,0);
40294 		}
40295 		public OutputClauseContext(ParserRuleContext parent, int invokingState) {
40296 			super(parent, invokingState);
40297 		}
40298 		@Override public int getRuleIndex() { return RULE_outputClause; }
40299 		@Override
40300 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40301 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputClause(this);
40302 			else return visitor.visitChildren(this);
40303 		}
40304 	}
40305 
40306 	public final OutputClauseContext outputClause() throws RecognitionException {
40307 		OutputClauseContext _localctx = new OutputClauseContext(_ctx, getState());
40308 		enterRule(_localctx, 784, RULE_outputClause);
40309 		int _la;
40310 		try {
40311 			enterOuterAlt(_localctx, 1);
40312 			{
40313 			setState(5586);
40314 			match(OUTPUT);
40315 			setState(5589);
40316 			_errHandler.sync(this);
40317 			switch ( getInterpreter().adaptivePredict(_input,647,_ctx) ) {
40318 			case 1:
40319 				{
40320 				setState(5587);
40321 				outputWithColumns();
40322 				}
40323 				break;
40324 			case 2:
40325 				{
40326 				setState(5588);
40327 				outputWithAaterisk();
40328 				}
40329 				break;
40330 			}
40331 			setState(5596);
40332 			_errHandler.sync(this);
40333 			_la = _input.LA(1);
40334 			if (_la==INTO) {
40335 				{
40336 				setState(5591);
40337 				match(INTO);
40338 				setState(5592);
40339 				outputTableName();
40340 				setState(5594);
40341 				_errHandler.sync(this);
40342 				_la = _input.LA(1);
40343 				if (_la==LP_) {
40344 					{
40345 					setState(5593);
40346 					columnNames();
40347 					}
40348 				}
40349 
40350 				}
40351 			}
40352 
40353 			}
40354 		}
40355 		catch (RecognitionException re) {
40356 			_localctx.exception = re;
40357 			_errHandler.reportError(this, re);
40358 			_errHandler.recover(this, re);
40359 		}
40360 		finally {
40361 			exitRule();
40362 		}
40363 		return _localctx;
40364 	}
40365 
40366 	public static class OutputWithColumnsContext extends ParserRuleContext {
40367 		public List<OutputWithColumnContext> outputWithColumn() {
40368 			return getRuleContexts(OutputWithColumnContext.class);
40369 		}
40370 		public OutputWithColumnContext outputWithColumn(int i) {
40371 			return getRuleContext(OutputWithColumnContext.class,i);
40372 		}
40373 		public List<ScalarExpressionContext> scalarExpression() {
40374 			return getRuleContexts(ScalarExpressionContext.class);
40375 		}
40376 		public ScalarExpressionContext scalarExpression(int i) {
40377 			return getRuleContext(ScalarExpressionContext.class,i);
40378 		}
40379 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
40380 		public TerminalNode COMMA_(int i) {
40381 			return getToken(SQLServerStatementParser.COMMA_, i);
40382 		}
40383 		public OutputWithColumnsContext(ParserRuleContext parent, int invokingState) {
40384 			super(parent, invokingState);
40385 		}
40386 		@Override public int getRuleIndex() { return RULE_outputWithColumns; }
40387 		@Override
40388 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40389 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputWithColumns(this);
40390 			else return visitor.visitChildren(this);
40391 		}
40392 	}
40393 
40394 	public final OutputWithColumnsContext outputWithColumns() throws RecognitionException {
40395 		OutputWithColumnsContext _localctx = new OutputWithColumnsContext(_ctx, getState());
40396 		enterRule(_localctx, 786, RULE_outputWithColumns);
40397 		int _la;
40398 		try {
40399 			enterOuterAlt(_localctx, 1);
40400 			{
40401 			setState(5600);
40402 			_errHandler.sync(this);
40403 			switch ( getInterpreter().adaptivePredict(_input,650,_ctx) ) {
40404 			case 1:
40405 				{
40406 				setState(5598);
40407 				outputWithColumn();
40408 				}
40409 				break;
40410 			case 2:
40411 				{
40412 				setState(5599);
40413 				scalarExpression();
40414 				}
40415 				break;
40416 			}
40417 			setState(5609);
40418 			_errHandler.sync(this);
40419 			_la = _input.LA(1);
40420 			while (_la==COMMA_) {
40421 				{
40422 				{
40423 				setState(5602);
40424 				match(COMMA_);
40425 				setState(5605);
40426 				_errHandler.sync(this);
40427 				switch ( getInterpreter().adaptivePredict(_input,651,_ctx) ) {
40428 				case 1:
40429 					{
40430 					setState(5603);
40431 					outputWithColumn();
40432 					}
40433 					break;
40434 				case 2:
40435 					{
40436 					setState(5604);
40437 					scalarExpression();
40438 					}
40439 					break;
40440 				}
40441 				}
40442 				}
40443 				setState(5611);
40444 				_errHandler.sync(this);
40445 				_la = _input.LA(1);
40446 			}
40447 			}
40448 		}
40449 		catch (RecognitionException re) {
40450 			_localctx.exception = re;
40451 			_errHandler.reportError(this, re);
40452 			_errHandler.recover(this, re);
40453 		}
40454 		finally {
40455 			exitRule();
40456 		}
40457 		return _localctx;
40458 	}
40459 
40460 	public static class ScalarExpressionContext extends ParserRuleContext {
40461 		public ExprContext expr() {
40462 			return getRuleContext(ExprContext.class,0);
40463 		}
40464 		public AliasContext alias() {
40465 			return getRuleContext(AliasContext.class,0);
40466 		}
40467 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
40468 		public ScalarExpressionContext(ParserRuleContext parent, int invokingState) {
40469 			super(parent, invokingState);
40470 		}
40471 		@Override public int getRuleIndex() { return RULE_scalarExpression; }
40472 		@Override
40473 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40474 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitScalarExpression(this);
40475 			else return visitor.visitChildren(this);
40476 		}
40477 	}
40478 
40479 	public final ScalarExpressionContext scalarExpression() throws RecognitionException {
40480 		ScalarExpressionContext _localctx = new ScalarExpressionContext(_ctx, getState());
40481 		enterRule(_localctx, 788, RULE_scalarExpression);
40482 		int _la;
40483 		try {
40484 			enterOuterAlt(_localctx, 1);
40485 			{
40486 			setState(5612);
40487 			expr(0);
40488 			setState(5617);
40489 			_errHandler.sync(this);
40490 			switch ( getInterpreter().adaptivePredict(_input,654,_ctx) ) {
40491 			case 1:
40492 				{
40493 				setState(5614);
40494 				_errHandler.sync(this);
40495 				_la = _input.LA(1);
40496 				if (_la==AS) {
40497 					{
40498 					setState(5613);
40499 					match(AS);
40500 					}
40501 				}
40502 
40503 				setState(5616);
40504 				alias();
40505 				}
40506 				break;
40507 			}
40508 			}
40509 		}
40510 		catch (RecognitionException re) {
40511 			_localctx.exception = re;
40512 			_errHandler.reportError(this, re);
40513 			_errHandler.recover(this, re);
40514 		}
40515 		finally {
40516 			exitRule();
40517 		}
40518 		return _localctx;
40519 	}
40520 
40521 	public static class OutputWithColumnContext extends ParserRuleContext {
40522 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
40523 		public NameContext name() {
40524 			return getRuleContext(NameContext.class,0);
40525 		}
40526 		public TerminalNode INSERTED() { return getToken(SQLServerStatementParser.INSERTED, 0); }
40527 		public TerminalNode DELETED() { return getToken(SQLServerStatementParser.DELETED, 0); }
40528 		public AliasContext alias() {
40529 			return getRuleContext(AliasContext.class,0);
40530 		}
40531 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
40532 		public OutputWithColumnContext(ParserRuleContext parent, int invokingState) {
40533 			super(parent, invokingState);
40534 		}
40535 		@Override public int getRuleIndex() { return RULE_outputWithColumn; }
40536 		@Override
40537 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40538 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputWithColumn(this);
40539 			else return visitor.visitChildren(this);
40540 		}
40541 	}
40542 
40543 	public final OutputWithColumnContext outputWithColumn() throws RecognitionException {
40544 		OutputWithColumnContext _localctx = new OutputWithColumnContext(_ctx, getState());
40545 		enterRule(_localctx, 790, RULE_outputWithColumn);
40546 		int _la;
40547 		try {
40548 			enterOuterAlt(_localctx, 1);
40549 			{
40550 			setState(5619);
40551 			_la = _input.LA(1);
40552 			if ( !(_la==INSERTED || _la==DELETED) ) {
40553 			_errHandler.recoverInline(this);
40554 			}
40555 			else {
40556 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40557 				_errHandler.reportMatch(this);
40558 				consume();
40559 			}
40560 			setState(5620);
40561 			match(DOT_);
40562 			setState(5621);
40563 			name();
40564 			setState(5626);
40565 			_errHandler.sync(this);
40566 			switch ( getInterpreter().adaptivePredict(_input,656,_ctx) ) {
40567 			case 1:
40568 				{
40569 				setState(5623);
40570 				_errHandler.sync(this);
40571 				_la = _input.LA(1);
40572 				if (_la==AS) {
40573 					{
40574 					setState(5622);
40575 					match(AS);
40576 					}
40577 				}
40578 
40579 				setState(5625);
40580 				alias();
40581 				}
40582 				break;
40583 			}
40584 			}
40585 		}
40586 		catch (RecognitionException re) {
40587 			_localctx.exception = re;
40588 			_errHandler.reportError(this, re);
40589 			_errHandler.recover(this, re);
40590 		}
40591 		finally {
40592 			exitRule();
40593 		}
40594 		return _localctx;
40595 	}
40596 
40597 	public static class OutputWithAateriskContext extends ParserRuleContext {
40598 		public TerminalNode DOT_ASTERISK_() { return getToken(SQLServerStatementParser.DOT_ASTERISK_, 0); }
40599 		public TerminalNode INSERTED() { return getToken(SQLServerStatementParser.INSERTED, 0); }
40600 		public TerminalNode DELETED() { return getToken(SQLServerStatementParser.DELETED, 0); }
40601 		public OutputWithAateriskContext(ParserRuleContext parent, int invokingState) {
40602 			super(parent, invokingState);
40603 		}
40604 		@Override public int getRuleIndex() { return RULE_outputWithAaterisk; }
40605 		@Override
40606 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40607 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputWithAaterisk(this);
40608 			else return visitor.visitChildren(this);
40609 		}
40610 	}
40611 
40612 	public final OutputWithAateriskContext outputWithAaterisk() throws RecognitionException {
40613 		OutputWithAateriskContext _localctx = new OutputWithAateriskContext(_ctx, getState());
40614 		enterRule(_localctx, 792, RULE_outputWithAaterisk);
40615 		int _la;
40616 		try {
40617 			enterOuterAlt(_localctx, 1);
40618 			{
40619 			setState(5628);
40620 			_la = _input.LA(1);
40621 			if ( !(_la==INSERTED || _la==DELETED) ) {
40622 			_errHandler.recoverInline(this);
40623 			}
40624 			else {
40625 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40626 				_errHandler.reportMatch(this);
40627 				consume();
40628 			}
40629 			setState(5629);
40630 			match(DOT_ASTERISK_);
40631 			}
40632 		}
40633 		catch (RecognitionException re) {
40634 			_localctx.exception = re;
40635 			_errHandler.reportError(this, re);
40636 			_errHandler.recover(this, re);
40637 		}
40638 		finally {
40639 			exitRule();
40640 		}
40641 		return _localctx;
40642 	}
40643 
40644 	public static class OutputTableNameContext extends ParserRuleContext {
40645 		public TableNameContext tableName() {
40646 			return getRuleContext(TableNameContext.class,0);
40647 		}
40648 		public OutputTableNameContext(ParserRuleContext parent, int invokingState) {
40649 			super(parent, invokingState);
40650 		}
40651 		@Override public int getRuleIndex() { return RULE_outputTableName; }
40652 		@Override
40653 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40654 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOutputTableName(this);
40655 			else return visitor.visitChildren(this);
40656 		}
40657 	}
40658 
40659 	public final OutputTableNameContext outputTableName() throws RecognitionException {
40660 		OutputTableNameContext _localctx = new OutputTableNameContext(_ctx, getState());
40661 		enterRule(_localctx, 794, RULE_outputTableName);
40662 		try {
40663 			enterOuterAlt(_localctx, 1);
40664 			{
40665 			setState(5631);
40666 			tableName();
40667 			}
40668 		}
40669 		catch (RecognitionException re) {
40670 			_localctx.exception = re;
40671 			_errHandler.reportError(this, re);
40672 			_errHandler.recover(this, re);
40673 		}
40674 		finally {
40675 			exitRule();
40676 		}
40677 		return _localctx;
40678 	}
40679 
40680 	public static class QueryHintContext extends ParserRuleContext {
40681 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
40682 		public TerminalNode HASH() { return getToken(SQLServerStatementParser.HASH, 0); }
40683 		public TerminalNode ORDER() { return getToken(SQLServerStatementParser.ORDER, 0); }
40684 		public TerminalNode UNION() { return getToken(SQLServerStatementParser.UNION, 0); }
40685 		public TerminalNode CONCAT() { return getToken(SQLServerStatementParser.CONCAT, 0); }
40686 		public TerminalNode MERGE() { return getToken(SQLServerStatementParser.MERGE, 0); }
40687 		public TerminalNode JOIN() { return getToken(SQLServerStatementParser.JOIN, 0); }
40688 		public TerminalNode LOOP() { return getToken(SQLServerStatementParser.LOOP, 0); }
40689 		public TerminalNode EXPAND() { return getToken(SQLServerStatementParser.EXPAND, 0); }
40690 		public TerminalNode VIEWS() { return getToken(SQLServerStatementParser.VIEWS, 0); }
40691 		public TerminalNode FAST() { return getToken(SQLServerStatementParser.FAST, 0); }
40692 		public TerminalNode INT_NUM_() { return getToken(SQLServerStatementParser.INT_NUM_, 0); }
40693 		public TerminalNode FORCE() { return getToken(SQLServerStatementParser.FORCE, 0); }
40694 		public TerminalNode EXTERNALPUSHDOWN() { return getToken(SQLServerStatementParser.EXTERNALPUSHDOWN, 0); }
40695 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
40696 		public TerminalNode SCALEOUTEXECUTION() { return getToken(SQLServerStatementParser.SCALEOUTEXECUTION, 0); }
40697 		public TerminalNode IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX() { return getToken(SQLServerStatementParser.IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX, 0); }
40698 		public TerminalNode KEEP() { return getToken(SQLServerStatementParser.KEEP, 0); }
40699 		public TerminalNode PLAN() { return getToken(SQLServerStatementParser.PLAN, 0); }
40700 		public TerminalNode KEEPFIXED() { return getToken(SQLServerStatementParser.KEEPFIXED, 0); }
40701 		public TerminalNode MAX_GRANT_PERCENT() { return getToken(SQLServerStatementParser.MAX_GRANT_PERCENT, 0); }
40702 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
40703 		public TerminalNode EQ_(int i) {
40704 			return getToken(SQLServerStatementParser.EQ_, i);
40705 		}
40706 		public TerminalNode DECIMAL_NUM_() { return getToken(SQLServerStatementParser.DECIMAL_NUM_, 0); }
40707 		public TerminalNode MIN_GRANT_PERCENT() { return getToken(SQLServerStatementParser.MIN_GRANT_PERCENT, 0); }
40708 		public TerminalNode MAXDOP() { return getToken(SQLServerStatementParser.MAXDOP, 0); }
40709 		public TerminalNode MAXRECURSION() { return getToken(SQLServerStatementParser.MAXRECURSION, 0); }
40710 		public TerminalNode NO_PERFORMANCE_SPOOL() { return getToken(SQLServerStatementParser.NO_PERFORMANCE_SPOOL, 0); }
40711 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
40712 		public TerminalNode LP_(int i) {
40713 			return getToken(SQLServerStatementParser.LP_, i);
40714 		}
40715 		public TerminalNode OPTIMIZE() { return getToken(SQLServerStatementParser.OPTIMIZE, 0); }
40716 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
40717 		public VariableNameContext variableName() {
40718 			return getRuleContext(VariableNameContext.class,0);
40719 		}
40720 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
40721 		public TerminalNode RP_(int i) {
40722 			return getToken(SQLServerStatementParser.RP_, i);
40723 		}
40724 		public List<TerminalNode> UNKNOWN() { return getTokens(SQLServerStatementParser.UNKNOWN); }
40725 		public TerminalNode UNKNOWN(int i) {
40726 			return getToken(SQLServerStatementParser.UNKNOWN, i);
40727 		}
40728 		public List<LiteralsContext> literals() {
40729 			return getRuleContexts(LiteralsContext.class);
40730 		}
40731 		public LiteralsContext literals(int i) {
40732 			return getRuleContext(LiteralsContext.class,i);
40733 		}
40734 		public TerminalNode PARAMETERIZATION() { return getToken(SQLServerStatementParser.PARAMETERIZATION, 0); }
40735 		public TerminalNode SIMPLE() { return getToken(SQLServerStatementParser.SIMPLE, 0); }
40736 		public TerminalNode FORCED() { return getToken(SQLServerStatementParser.FORCED, 0); }
40737 		public TerminalNode QUERYTRACEON() { return getToken(SQLServerStatementParser.QUERYTRACEON, 0); }
40738 		public TerminalNode RECOMPILE() { return getToken(SQLServerStatementParser.RECOMPILE, 0); }
40739 		public TerminalNode ROBUST() { return getToken(SQLServerStatementParser.ROBUST, 0); }
40740 		public TerminalNode USE() { return getToken(SQLServerStatementParser.USE, 0); }
40741 		public TerminalNode HINT() { return getToken(SQLServerStatementParser.HINT, 0); }
40742 		public List<UseHitNameContext> useHitName() {
40743 			return getRuleContexts(UseHitNameContext.class);
40744 		}
40745 		public UseHitNameContext useHitName(int i) {
40746 			return getRuleContext(UseHitNameContext.class,i);
40747 		}
40748 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
40749 		public QueryHintContext(ParserRuleContext parent, int invokingState) {
40750 			super(parent, invokingState);
40751 		}
40752 		@Override public int getRuleIndex() { return RULE_queryHint; }
40753 		@Override
40754 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
40755 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitQueryHint(this);
40756 			else return visitor.visitChildren(this);
40757 		}
40758 	}
40759 
40760 	public final QueryHintContext queryHint() throws RecognitionException {
40761 		QueryHintContext _localctx = new QueryHintContext(_ctx, getState());
40762 		enterRule(_localctx, 796, RULE_queryHint);
40763 		int _la;
40764 		try {
40765 			setState(5704);
40766 			_errHandler.sync(this);
40767 			switch ( getInterpreter().adaptivePredict(_input,660,_ctx) ) {
40768 			case 1:
40769 				enterOuterAlt(_localctx, 1);
40770 				{
40771 				setState(5633);
40772 				_la = _input.LA(1);
40773 				if ( !(_la==ORDER || _la==HASH) ) {
40774 				_errHandler.recoverInline(this);
40775 				}
40776 				else {
40777 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40778 					_errHandler.reportMatch(this);
40779 					consume();
40780 				}
40781 				setState(5634);
40782 				match(GROUP);
40783 				}
40784 				break;
40785 			case 2:
40786 				enterOuterAlt(_localctx, 2);
40787 				{
40788 				setState(5635);
40789 				_la = _input.LA(1);
40790 				if ( !(_la==MERGE || _la==HASH || _la==CONCAT) ) {
40791 				_errHandler.recoverInline(this);
40792 				}
40793 				else {
40794 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40795 					_errHandler.reportMatch(this);
40796 					consume();
40797 				}
40798 				setState(5636);
40799 				match(UNION);
40800 				}
40801 				break;
40802 			case 3:
40803 				enterOuterAlt(_localctx, 3);
40804 				{
40805 				setState(5637);
40806 				_la = _input.LA(1);
40807 				if ( !(_la==MERGE || _la==LOOP || _la==HASH) ) {
40808 				_errHandler.recoverInline(this);
40809 				}
40810 				else {
40811 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40812 					_errHandler.reportMatch(this);
40813 					consume();
40814 				}
40815 				setState(5638);
40816 				match(JOIN);
40817 				}
40818 				break;
40819 			case 4:
40820 				enterOuterAlt(_localctx, 4);
40821 				{
40822 				setState(5639);
40823 				match(EXPAND);
40824 				setState(5640);
40825 				match(VIEWS);
40826 				}
40827 				break;
40828 			case 5:
40829 				enterOuterAlt(_localctx, 5);
40830 				{
40831 				setState(5641);
40832 				match(FAST);
40833 				setState(5642);
40834 				match(INT_NUM_);
40835 				}
40836 				break;
40837 			case 6:
40838 				enterOuterAlt(_localctx, 6);
40839 				{
40840 				setState(5643);
40841 				match(FORCE);
40842 				setState(5644);
40843 				match(ORDER);
40844 				}
40845 				break;
40846 			case 7:
40847 				enterOuterAlt(_localctx, 7);
40848 				{
40849 				setState(5645);
40850 				_la = _input.LA(1);
40851 				if ( !(_la==DISABLE || _la==FORCE) ) {
40852 				_errHandler.recoverInline(this);
40853 				}
40854 				else {
40855 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40856 					_errHandler.reportMatch(this);
40857 					consume();
40858 				}
40859 				setState(5646);
40860 				match(EXTERNALPUSHDOWN);
40861 				}
40862 				break;
40863 			case 8:
40864 				enterOuterAlt(_localctx, 8);
40865 				{
40866 				setState(5647);
40867 				_la = _input.LA(1);
40868 				if ( !(_la==DISABLE || _la==FORCE) ) {
40869 				_errHandler.recoverInline(this);
40870 				}
40871 				else {
40872 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
40873 					_errHandler.reportMatch(this);
40874 					consume();
40875 				}
40876 				setState(5648);
40877 				match(SCALEOUTEXECUTION);
40878 				}
40879 				break;
40880 			case 9:
40881 				enterOuterAlt(_localctx, 9);
40882 				{
40883 				setState(5649);
40884 				match(IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX);
40885 				}
40886 				break;
40887 			case 10:
40888 				enterOuterAlt(_localctx, 10);
40889 				{
40890 				setState(5650);
40891 				match(KEEP);
40892 				setState(5651);
40893 				match(PLAN);
40894 				}
40895 				break;
40896 			case 11:
40897 				enterOuterAlt(_localctx, 11);
40898 				{
40899 				setState(5652);
40900 				match(KEEPFIXED);
40901 				setState(5653);
40902 				match(PLAN);
40903 				}
40904 				break;
40905 			case 12:
40906 				enterOuterAlt(_localctx, 12);
40907 				{
40908 				setState(5654);
40909 				match(MAX_GRANT_PERCENT);
40910 				setState(5655);
40911 				match(EQ_);
40912 				setState(5656);
40913 				match(DECIMAL_NUM_);
40914 				}
40915 				break;
40916 			case 13:
40917 				enterOuterAlt(_localctx, 13);
40918 				{
40919 				setState(5657);
40920 				match(MIN_GRANT_PERCENT);
40921 				setState(5658);
40922 				match(EQ_);
40923 				setState(5659);
40924 				match(DECIMAL_NUM_);
40925 				}
40926 				break;
40927 			case 14:
40928 				enterOuterAlt(_localctx, 14);
40929 				{
40930 				setState(5660);
40931 				match(MAXDOP);
40932 				setState(5661);
40933 				match(INT_NUM_);
40934 				}
40935 				break;
40936 			case 15:
40937 				enterOuterAlt(_localctx, 15);
40938 				{
40939 				setState(5662);
40940 				match(MAXRECURSION);
40941 				setState(5663);
40942 				match(INT_NUM_);
40943 				}
40944 				break;
40945 			case 16:
40946 				enterOuterAlt(_localctx, 16);
40947 				{
40948 				setState(5664);
40949 				match(NO_PERFORMANCE_SPOOL);
40950 				}
40951 				break;
40952 			case 17:
40953 				enterOuterAlt(_localctx, 17);
40954 				{
40955 				setState(5665);
40956 				match(LP_);
40957 				setState(5666);
40958 				match(OPTIMIZE);
40959 				setState(5667);
40960 				match(FOR);
40961 				setState(5668);
40962 				match(LP_);
40963 				setState(5669);
40964 				variableName();
40965 				setState(5675);
40966 				_errHandler.sync(this);
40967 				_la = _input.LA(1);
40968 				while (_la==EQ_ || _la==UNKNOWN) {
40969 					{
40970 					setState(5673);
40971 					_errHandler.sync(this);
40972 					switch (_input.LA(1)) {
40973 					case UNKNOWN:
40974 						{
40975 						setState(5670);
40976 						match(UNKNOWN);
40977 						}
40978 						break;
40979 					case EQ_:
40980 						{
40981 						setState(5671);
40982 						match(EQ_);
40983 						setState(5672);
40984 						literals();
40985 						}
40986 						break;
40987 					default:
40988 						throw new NoViableAltException(this);
40989 					}
40990 					}
40991 					setState(5677);
40992 					_errHandler.sync(this);
40993 					_la = _input.LA(1);
40994 				}
40995 				setState(5678);
40996 				match(RP_);
40997 				setState(5679);
40998 				match(RP_);
40999 				}
41000 				break;
41001 			case 18:
41002 				enterOuterAlt(_localctx, 18);
41003 				{
41004 				setState(5681);
41005 				match(OPTIMIZE);
41006 				setState(5682);
41007 				match(FOR);
41008 				setState(5683);
41009 				match(UNKNOWN);
41010 				}
41011 				break;
41012 			case 19:
41013 				enterOuterAlt(_localctx, 19);
41014 				{
41015 				setState(5684);
41016 				match(PARAMETERIZATION);
41017 				setState(5685);
41018 				_la = _input.LA(1);
41019 				if ( !(_la==SIMPLE || _la==FORCED) ) {
41020 				_errHandler.recoverInline(this);
41021 				}
41022 				else {
41023 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
41024 					_errHandler.reportMatch(this);
41025 					consume();
41026 				}
41027 				}
41028 				break;
41029 			case 20:
41030 				enterOuterAlt(_localctx, 20);
41031 				{
41032 				setState(5686);
41033 				match(QUERYTRACEON);
41034 				setState(5687);
41035 				match(INT_NUM_);
41036 				}
41037 				break;
41038 			case 21:
41039 				enterOuterAlt(_localctx, 21);
41040 				{
41041 				setState(5688);
41042 				match(RECOMPILE);
41043 				}
41044 				break;
41045 			case 22:
41046 				enterOuterAlt(_localctx, 22);
41047 				{
41048 				setState(5689);
41049 				match(ROBUST);
41050 				setState(5690);
41051 				match(PLAN);
41052 				}
41053 				break;
41054 			case 23:
41055 				enterOuterAlt(_localctx, 23);
41056 				{
41057 				setState(5691);
41058 				match(USE);
41059 				setState(5692);
41060 				match(HINT);
41061 				setState(5693);
41062 				match(LP_);
41063 				setState(5697);
41064 				_errHandler.sync(this);
41065 				_la = _input.LA(1);
41066 				while (_la==SQ_) {
41067 					{
41068 					{
41069 					setState(5694);
41070 					useHitName();
41071 					}
41072 					}
41073 					setState(5699);
41074 					_errHandler.sync(this);
41075 					_la = _input.LA(1);
41076 				}
41077 				setState(5700);
41078 				match(RP_);
41079 				}
41080 				break;
41081 			case 24:
41082 				enterOuterAlt(_localctx, 24);
41083 				{
41084 				setState(5701);
41085 				match(USE);
41086 				setState(5702);
41087 				match(PLAN);
41088 				setState(5703);
41089 				match(NCHAR_TEXT);
41090 				}
41091 				break;
41092 			}
41093 		}
41094 		catch (RecognitionException re) {
41095 			_localctx.exception = re;
41096 			_errHandler.reportError(this, re);
41097 			_errHandler.recover(this, re);
41098 		}
41099 		finally {
41100 			exitRule();
41101 		}
41102 		return _localctx;
41103 	}
41104 
41105 	public static class UseHitNameContext extends ParserRuleContext {
41106 		public List<TerminalNode> SQ_() { return getTokens(SQLServerStatementParser.SQ_); }
41107 		public TerminalNode SQ_(int i) {
41108 			return getToken(SQLServerStatementParser.SQ_, i);
41109 		}
41110 		public TerminalNode ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS() { return getToken(SQLServerStatementParser.ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS, 0); }
41111 		public TerminalNode ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES() { return getToken(SQLServerStatementParser.ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES, 0); }
41112 		public TerminalNode DISABLE_BATCH_MODE_ADAPTIVE_JOINS() { return getToken(SQLServerStatementParser.DISABLE_BATCH_MODE_ADAPTIVE_JOINS, 0); }
41113 		public TerminalNode DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK() { return getToken(SQLServerStatementParser.DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK, 0); }
41114 		public TerminalNode DISABLE_DEFERRED_COMPILATION_TV() { return getToken(SQLServerStatementParser.DISABLE_DEFERRED_COMPILATION_TV, 0); }
41115 		public TerminalNode DISABLE_INTERLEAVED_EXECUTION_TVF() { return getToken(SQLServerStatementParser.DISABLE_INTERLEAVED_EXECUTION_TVF, 0); }
41116 		public TerminalNode DISABLE_OPTIMIZED_NESTED_LOOP() { return getToken(SQLServerStatementParser.DISABLE_OPTIMIZED_NESTED_LOOP, 0); }
41117 		public TerminalNode DISABLE_OPTIMIZER_ROWGOAL() { return getToken(SQLServerStatementParser.DISABLE_OPTIMIZER_ROWGOAL, 0); }
41118 		public TerminalNode DISABLE_PARAMETER_SNIFFING() { return getToken(SQLServerStatementParser.DISABLE_PARAMETER_SNIFFING, 0); }
41119 		public TerminalNode DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK() { return getToken(SQLServerStatementParser.DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK, 0); }
41120 		public TerminalNode DISABLE_TSQL_SCALAR_UDF_INLINING() { return getToken(SQLServerStatementParser.DISABLE_TSQL_SCALAR_UDF_INLINING, 0); }
41121 		public TerminalNode DISALLOW_BATCH_MODE() { return getToken(SQLServerStatementParser.DISALLOW_BATCH_MODE, 0); }
41122 		public TerminalNode ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS() { return getToken(SQLServerStatementParser.ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS, 0); }
41123 		public TerminalNode ENABLE_QUERY_OPTIMIZER_HOTFIXES() { return getToken(SQLServerStatementParser.ENABLE_QUERY_OPTIMIZER_HOTFIXES, 0); }
41124 		public TerminalNode FORCE_DEFAULT_CARDINALITY_ESTIMATION() { return getToken(SQLServerStatementParser.FORCE_DEFAULT_CARDINALITY_ESTIMATION, 0); }
41125 		public TerminalNode FORCE_LEGACY_CARDINALITY_ESTIMATION() { return getToken(SQLServerStatementParser.FORCE_LEGACY_CARDINALITY_ESTIMATION, 0); }
41126 		public TerminalNode QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n() { return getToken(SQLServerStatementParser.QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n, 0); }
41127 		public TerminalNode QUERY_PLAN_PROFILE() { return getToken(SQLServerStatementParser.QUERY_PLAN_PROFILE, 0); }
41128 		public UseHitNameContext(ParserRuleContext parent, int invokingState) {
41129 			super(parent, invokingState);
41130 		}
41131 		@Override public int getRuleIndex() { return RULE_useHitName; }
41132 		@Override
41133 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41134 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUseHitName(this);
41135 			else return visitor.visitChildren(this);
41136 		}
41137 	}
41138 
41139 	public final UseHitNameContext useHitName() throws RecognitionException {
41140 		UseHitNameContext _localctx = new UseHitNameContext(_ctx, getState());
41141 		enterRule(_localctx, 798, RULE_useHitName);
41142 		try {
41143 			setState(5760);
41144 			_errHandler.sync(this);
41145 			switch ( getInterpreter().adaptivePredict(_input,661,_ctx) ) {
41146 			case 1:
41147 				enterOuterAlt(_localctx, 1);
41148 				{
41149 				setState(5706);
41150 				match(SQ_);
41151 				setState(5707);
41152 				match(ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS);
41153 				setState(5708);
41154 				match(SQ_);
41155 				}
41156 				break;
41157 			case 2:
41158 				enterOuterAlt(_localctx, 2);
41159 				{
41160 				setState(5709);
41161 				match(SQ_);
41162 				setState(5710);
41163 				match(ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES);
41164 				setState(5711);
41165 				match(SQ_);
41166 				}
41167 				break;
41168 			case 3:
41169 				enterOuterAlt(_localctx, 3);
41170 				{
41171 				setState(5712);
41172 				match(SQ_);
41173 				setState(5713);
41174 				match(DISABLE_BATCH_MODE_ADAPTIVE_JOINS);
41175 				setState(5714);
41176 				match(SQ_);
41177 				}
41178 				break;
41179 			case 4:
41180 				enterOuterAlt(_localctx, 4);
41181 				{
41182 				setState(5715);
41183 				match(SQ_);
41184 				setState(5716);
41185 				match(DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK);
41186 				setState(5717);
41187 				match(SQ_);
41188 				}
41189 				break;
41190 			case 5:
41191 				enterOuterAlt(_localctx, 5);
41192 				{
41193 				setState(5718);
41194 				match(SQ_);
41195 				setState(5719);
41196 				match(DISABLE_DEFERRED_COMPILATION_TV);
41197 				setState(5720);
41198 				match(SQ_);
41199 				}
41200 				break;
41201 			case 6:
41202 				enterOuterAlt(_localctx, 6);
41203 				{
41204 				setState(5721);
41205 				match(SQ_);
41206 				setState(5722);
41207 				match(DISABLE_INTERLEAVED_EXECUTION_TVF);
41208 				setState(5723);
41209 				match(SQ_);
41210 				}
41211 				break;
41212 			case 7:
41213 				enterOuterAlt(_localctx, 7);
41214 				{
41215 				setState(5724);
41216 				match(SQ_);
41217 				setState(5725);
41218 				match(DISABLE_OPTIMIZED_NESTED_LOOP);
41219 				setState(5726);
41220 				match(SQ_);
41221 				}
41222 				break;
41223 			case 8:
41224 				enterOuterAlt(_localctx, 8);
41225 				{
41226 				setState(5727);
41227 				match(SQ_);
41228 				setState(5728);
41229 				match(DISABLE_OPTIMIZER_ROWGOAL);
41230 				setState(5729);
41231 				match(SQ_);
41232 				}
41233 				break;
41234 			case 9:
41235 				enterOuterAlt(_localctx, 9);
41236 				{
41237 				setState(5730);
41238 				match(SQ_);
41239 				setState(5731);
41240 				match(DISABLE_PARAMETER_SNIFFING);
41241 				setState(5732);
41242 				match(SQ_);
41243 				}
41244 				break;
41245 			case 10:
41246 				enterOuterAlt(_localctx, 10);
41247 				{
41248 				setState(5733);
41249 				match(SQ_);
41250 				setState(5734);
41251 				match(DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK);
41252 				setState(5735);
41253 				match(SQ_);
41254 				}
41255 				break;
41256 			case 11:
41257 				enterOuterAlt(_localctx, 11);
41258 				{
41259 				setState(5736);
41260 				match(SQ_);
41261 				setState(5737);
41262 				match(DISABLE_TSQL_SCALAR_UDF_INLINING);
41263 				setState(5738);
41264 				match(SQ_);
41265 				}
41266 				break;
41267 			case 12:
41268 				enterOuterAlt(_localctx, 12);
41269 				{
41270 				setState(5739);
41271 				match(SQ_);
41272 				setState(5740);
41273 				match(DISALLOW_BATCH_MODE);
41274 				setState(5741);
41275 				match(SQ_);
41276 				}
41277 				break;
41278 			case 13:
41279 				enterOuterAlt(_localctx, 13);
41280 				{
41281 				setState(5742);
41282 				match(SQ_);
41283 				setState(5743);
41284 				match(ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS);
41285 				setState(5744);
41286 				match(SQ_);
41287 				}
41288 				break;
41289 			case 14:
41290 				enterOuterAlt(_localctx, 14);
41291 				{
41292 				setState(5745);
41293 				match(SQ_);
41294 				setState(5746);
41295 				match(ENABLE_QUERY_OPTIMIZER_HOTFIXES);
41296 				setState(5747);
41297 				match(SQ_);
41298 				}
41299 				break;
41300 			case 15:
41301 				enterOuterAlt(_localctx, 15);
41302 				{
41303 				setState(5748);
41304 				match(SQ_);
41305 				setState(5749);
41306 				match(FORCE_DEFAULT_CARDINALITY_ESTIMATION);
41307 				setState(5750);
41308 				match(SQ_);
41309 				}
41310 				break;
41311 			case 16:
41312 				enterOuterAlt(_localctx, 16);
41313 				{
41314 				setState(5751);
41315 				match(SQ_);
41316 				setState(5752);
41317 				match(FORCE_LEGACY_CARDINALITY_ESTIMATION);
41318 				setState(5753);
41319 				match(SQ_);
41320 				}
41321 				break;
41322 			case 17:
41323 				enterOuterAlt(_localctx, 17);
41324 				{
41325 				setState(5754);
41326 				match(SQ_);
41327 				setState(5755);
41328 				match(QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n);
41329 				setState(5756);
41330 				match(SQ_);
41331 				}
41332 				break;
41333 			case 18:
41334 				enterOuterAlt(_localctx, 18);
41335 				{
41336 				setState(5757);
41337 				match(SQ_);
41338 				setState(5758);
41339 				match(QUERY_PLAN_PROFILE);
41340 				setState(5759);
41341 				match(SQ_);
41342 				}
41343 				break;
41344 			}
41345 		}
41346 		catch (RecognitionException re) {
41347 			_localctx.exception = re;
41348 			_errHandler.reportError(this, re);
41349 			_errHandler.recover(this, re);
41350 		}
41351 		finally {
41352 			exitRule();
41353 		}
41354 		return _localctx;
41355 	}
41356 
41357 	public static class ForClauseContext extends ParserRuleContext {
41358 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
41359 		public TerminalNode BROWSE() { return getToken(SQLServerStatementParser.BROWSE, 0); }
41360 		public ForXmlClauseContext forXmlClause() {
41361 			return getRuleContext(ForXmlClauseContext.class,0);
41362 		}
41363 		public ForJsonClauseContext forJsonClause() {
41364 			return getRuleContext(ForJsonClauseContext.class,0);
41365 		}
41366 		public ForClauseContext(ParserRuleContext parent, int invokingState) {
41367 			super(parent, invokingState);
41368 		}
41369 		@Override public int getRuleIndex() { return RULE_forClause; }
41370 		@Override
41371 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41372 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForClause(this);
41373 			else return visitor.visitChildren(this);
41374 		}
41375 	}
41376 
41377 	public final ForClauseContext forClause() throws RecognitionException {
41378 		ForClauseContext _localctx = new ForClauseContext(_ctx, getState());
41379 		enterRule(_localctx, 800, RULE_forClause);
41380 		try {
41381 			enterOuterAlt(_localctx, 1);
41382 			{
41383 			setState(5762);
41384 			match(FOR);
41385 			setState(5766);
41386 			_errHandler.sync(this);
41387 			switch (_input.LA(1)) {
41388 			case BROWSE:
41389 				{
41390 				setState(5763);
41391 				match(BROWSE);
41392 				}
41393 				break;
41394 			case XML:
41395 				{
41396 				setState(5764);
41397 				forXmlClause();
41398 				}
41399 				break;
41400 			case JSON:
41401 				{
41402 				setState(5765);
41403 				forJsonClause();
41404 				}
41405 				break;
41406 			default:
41407 				throw new NoViableAltException(this);
41408 			}
41409 			}
41410 		}
41411 		catch (RecognitionException re) {
41412 			_localctx.exception = re;
41413 			_errHandler.reportError(this, re);
41414 			_errHandler.recover(this, re);
41415 		}
41416 		finally {
41417 			exitRule();
41418 		}
41419 		return _localctx;
41420 	}
41421 
41422 	public static class ForXmlClauseContext extends ParserRuleContext {
41423 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
41424 		public TerminalNode EXPLICIT() { return getToken(SQLServerStatementParser.EXPLICIT, 0); }
41425 		public TerminalNode PATH() { return getToken(SQLServerStatementParser.PATH, 0); }
41426 		public TerminalNode RAW() { return getToken(SQLServerStatementParser.RAW, 0); }
41427 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
41428 		public CommonDirectivesForXmlContext commonDirectivesForXml() {
41429 			return getRuleContext(CommonDirectivesForXmlContext.class,0);
41430 		}
41431 		public List<TerminalNode> LP_() { return getTokens(SQLServerStatementParser.LP_); }
41432 		public TerminalNode LP_(int i) {
41433 			return getToken(SQLServerStatementParser.LP_, i);
41434 		}
41435 		public List<StringLiteralsContext> stringLiterals() {
41436 			return getRuleContexts(StringLiteralsContext.class);
41437 		}
41438 		public StringLiteralsContext stringLiterals(int i) {
41439 			return getRuleContext(StringLiteralsContext.class,i);
41440 		}
41441 		public List<TerminalNode> RP_() { return getTokens(SQLServerStatementParser.RP_); }
41442 		public TerminalNode RP_(int i) {
41443 			return getToken(SQLServerStatementParser.RP_, i);
41444 		}
41445 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41446 		public TerminalNode COMMA_(int i) {
41447 			return getToken(SQLServerStatementParser.COMMA_, i);
41448 		}
41449 		public TerminalNode ELEMENTS() { return getToken(SQLServerStatementParser.ELEMENTS, 0); }
41450 		public TerminalNode XMLDATA() { return getToken(SQLServerStatementParser.XMLDATA, 0); }
41451 		public TerminalNode XMLSCHEMA() { return getToken(SQLServerStatementParser.XMLSCHEMA, 0); }
41452 		public TerminalNode XSINIL() { return getToken(SQLServerStatementParser.XSINIL, 0); }
41453 		public TerminalNode ABSENT() { return getToken(SQLServerStatementParser.ABSENT, 0); }
41454 		public ForXmlClauseContext(ParserRuleContext parent, int invokingState) {
41455 			super(parent, invokingState);
41456 		}
41457 		@Override public int getRuleIndex() { return RULE_forXmlClause; }
41458 		@Override
41459 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41460 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForXmlClause(this);
41461 			else return visitor.visitChildren(this);
41462 		}
41463 	}
41464 
41465 	public final ForXmlClauseContext forXmlClause() throws RecognitionException {
41466 		ForXmlClauseContext _localctx = new ForXmlClauseContext(_ctx, getState());
41467 		enterRule(_localctx, 802, RULE_forXmlClause);
41468 		int _la;
41469 		try {
41470 			enterOuterAlt(_localctx, 1);
41471 			{
41472 			setState(5768);
41473 			match(XML);
41474 			setState(5827);
41475 			_errHandler.sync(this);
41476 			switch (_input.LA(1)) {
41477 			case AUTO:
41478 			case RAW:
41479 				{
41480 				setState(5777);
41481 				_errHandler.sync(this);
41482 				switch (_input.LA(1)) {
41483 				case RAW:
41484 					{
41485 					setState(5769);
41486 					match(RAW);
41487 					setState(5774);
41488 					_errHandler.sync(this);
41489 					_la = _input.LA(1);
41490 					if (_la==LP_) {
41491 						{
41492 						setState(5770);
41493 						match(LP_);
41494 						setState(5771);
41495 						stringLiterals();
41496 						setState(5772);
41497 						match(RP_);
41498 						}
41499 					}
41500 
41501 					}
41502 					break;
41503 				case AUTO:
41504 					{
41505 					setState(5776);
41506 					match(AUTO);
41507 					}
41508 					break;
41509 				default:
41510 					throw new NoViableAltException(this);
41511 				}
41512 				setState(5800);
41513 				_errHandler.sync(this);
41514 				switch ( getInterpreter().adaptivePredict(_input,670,_ctx) ) {
41515 				case 1:
41516 					{
41517 					setState(5779);
41518 					commonDirectivesForXml();
41519 					setState(5791);
41520 					_errHandler.sync(this);
41521 					switch ( getInterpreter().adaptivePredict(_input,667,_ctx) ) {
41522 					case 1:
41523 						{
41524 						setState(5780);
41525 						match(COMMA_);
41526 						setState(5789);
41527 						_errHandler.sync(this);
41528 						switch (_input.LA(1)) {
41529 						case XMLDATA:
41530 							{
41531 							setState(5781);
41532 							match(XMLDATA);
41533 							}
41534 							break;
41535 						case XMLSCHEMA:
41536 							{
41537 							setState(5782);
41538 							match(XMLSCHEMA);
41539 							setState(5787);
41540 							_errHandler.sync(this);
41541 							_la = _input.LA(1);
41542 							if (_la==LP_) {
41543 								{
41544 								setState(5783);
41545 								match(LP_);
41546 								setState(5784);
41547 								stringLiterals();
41548 								setState(5785);
41549 								match(RP_);
41550 								}
41551 							}
41552 
41553 							}
41554 							break;
41555 						default:
41556 							throw new NoViableAltException(this);
41557 						}
41558 						}
41559 						break;
41560 					}
41561 					setState(5798);
41562 					_errHandler.sync(this);
41563 					_la = _input.LA(1);
41564 					if (_la==COMMA_) {
41565 						{
41566 						setState(5793);
41567 						match(COMMA_);
41568 						setState(5794);
41569 						match(ELEMENTS);
41570 						setState(5796);
41571 						_errHandler.sync(this);
41572 						_la = _input.LA(1);
41573 						if (_la==XSINIL || _la==ABSENT) {
41574 							{
41575 							setState(5795);
41576 							_la = _input.LA(1);
41577 							if ( !(_la==XSINIL || _la==ABSENT) ) {
41578 							_errHandler.recoverInline(this);
41579 							}
41580 							else {
41581 								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
41582 								_errHandler.reportMatch(this);
41583 								consume();
41584 							}
41585 							}
41586 						}
41587 
41588 						}
41589 					}
41590 
41591 					}
41592 					break;
41593 				}
41594 				}
41595 				break;
41596 			case EXPLICIT:
41597 				{
41598 				setState(5802);
41599 				match(EXPLICIT);
41600 				setState(5808);
41601 				_errHandler.sync(this);
41602 				switch ( getInterpreter().adaptivePredict(_input,672,_ctx) ) {
41603 				case 1:
41604 					{
41605 					setState(5803);
41606 					commonDirectivesForXml();
41607 					setState(5806);
41608 					_errHandler.sync(this);
41609 					_la = _input.LA(1);
41610 					if (_la==COMMA_) {
41611 						{
41612 						setState(5804);
41613 						match(COMMA_);
41614 						setState(5805);
41615 						match(XMLDATA);
41616 						}
41617 					}
41618 
41619 					}
41620 					break;
41621 				}
41622 				}
41623 				break;
41624 			case PATH:
41625 				{
41626 				setState(5810);
41627 				match(PATH);
41628 				setState(5815);
41629 				_errHandler.sync(this);
41630 				_la = _input.LA(1);
41631 				if (_la==LP_) {
41632 					{
41633 					setState(5811);
41634 					match(LP_);
41635 					setState(5812);
41636 					stringLiterals();
41637 					setState(5813);
41638 					match(RP_);
41639 					}
41640 				}
41641 
41642 				setState(5825);
41643 				_errHandler.sync(this);
41644 				switch ( getInterpreter().adaptivePredict(_input,676,_ctx) ) {
41645 				case 1:
41646 					{
41647 					setState(5817);
41648 					commonDirectivesForXml();
41649 					setState(5823);
41650 					_errHandler.sync(this);
41651 					_la = _input.LA(1);
41652 					if (_la==COMMA_) {
41653 						{
41654 						setState(5818);
41655 						match(COMMA_);
41656 						setState(5819);
41657 						match(ELEMENTS);
41658 						setState(5821);
41659 						_errHandler.sync(this);
41660 						_la = _input.LA(1);
41661 						if (_la==XSINIL || _la==ABSENT) {
41662 							{
41663 							setState(5820);
41664 							_la = _input.LA(1);
41665 							if ( !(_la==XSINIL || _la==ABSENT) ) {
41666 							_errHandler.recoverInline(this);
41667 							}
41668 							else {
41669 								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
41670 								_errHandler.reportMatch(this);
41671 								consume();
41672 							}
41673 							}
41674 						}
41675 
41676 						}
41677 					}
41678 
41679 					}
41680 					break;
41681 				}
41682 				}
41683 				break;
41684 			default:
41685 				throw new NoViableAltException(this);
41686 			}
41687 			}
41688 		}
41689 		catch (RecognitionException re) {
41690 			_localctx.exception = re;
41691 			_errHandler.reportError(this, re);
41692 			_errHandler.recover(this, re);
41693 		}
41694 		finally {
41695 			exitRule();
41696 		}
41697 		return _localctx;
41698 	}
41699 
41700 	public static class CommonDirectivesForXmlContext extends ParserRuleContext {
41701 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41702 		public TerminalNode COMMA_(int i) {
41703 			return getToken(SQLServerStatementParser.COMMA_, i);
41704 		}
41705 		public TerminalNode BINARY() { return getToken(SQLServerStatementParser.BINARY, 0); }
41706 		public TerminalNode BASE64() { return getToken(SQLServerStatementParser.BASE64, 0); }
41707 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
41708 		public TerminalNode ROOT() { return getToken(SQLServerStatementParser.ROOT, 0); }
41709 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
41710 		public StringLiteralsContext stringLiterals() {
41711 			return getRuleContext(StringLiteralsContext.class,0);
41712 		}
41713 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
41714 		public CommonDirectivesForXmlContext(ParserRuleContext parent, int invokingState) {
41715 			super(parent, invokingState);
41716 		}
41717 		@Override public int getRuleIndex() { return RULE_commonDirectivesForXml; }
41718 		@Override
41719 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41720 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCommonDirectivesForXml(this);
41721 			else return visitor.visitChildren(this);
41722 		}
41723 	}
41724 
41725 	public final CommonDirectivesForXmlContext commonDirectivesForXml() throws RecognitionException {
41726 		CommonDirectivesForXmlContext _localctx = new CommonDirectivesForXmlContext(_ctx, getState());
41727 		enterRule(_localctx, 804, RULE_commonDirectivesForXml);
41728 		int _la;
41729 		try {
41730 			enterOuterAlt(_localctx, 1);
41731 			{
41732 			setState(5832);
41733 			_errHandler.sync(this);
41734 			switch ( getInterpreter().adaptivePredict(_input,678,_ctx) ) {
41735 			case 1:
41736 				{
41737 				setState(5829);
41738 				match(COMMA_);
41739 				setState(5830);
41740 				match(BINARY);
41741 				setState(5831);
41742 				match(BASE64);
41743 				}
41744 				break;
41745 			}
41746 			setState(5836);
41747 			_errHandler.sync(this);
41748 			switch ( getInterpreter().adaptivePredict(_input,679,_ctx) ) {
41749 			case 1:
41750 				{
41751 				setState(5834);
41752 				match(COMMA_);
41753 				setState(5835);
41754 				match(TYPE);
41755 				}
41756 				break;
41757 			}
41758 			setState(5846);
41759 			_errHandler.sync(this);
41760 			switch ( getInterpreter().adaptivePredict(_input,681,_ctx) ) {
41761 			case 1:
41762 				{
41763 				setState(5838);
41764 				match(COMMA_);
41765 				setState(5839);
41766 				match(ROOT);
41767 				setState(5844);
41768 				_errHandler.sync(this);
41769 				_la = _input.LA(1);
41770 				if (_la==LP_) {
41771 					{
41772 					setState(5840);
41773 					match(LP_);
41774 					setState(5841);
41775 					stringLiterals();
41776 					setState(5842);
41777 					match(RP_);
41778 					}
41779 				}
41780 
41781 				}
41782 				break;
41783 			}
41784 			}
41785 		}
41786 		catch (RecognitionException re) {
41787 			_localctx.exception = re;
41788 			_errHandler.reportError(this, re);
41789 			_errHandler.recover(this, re);
41790 		}
41791 		finally {
41792 			exitRule();
41793 		}
41794 		return _localctx;
41795 	}
41796 
41797 	public static class ForJsonClauseContext extends ParserRuleContext {
41798 		public TerminalNode JSON() { return getToken(SQLServerStatementParser.JSON, 0); }
41799 		public TerminalNode AUTO() { return getToken(SQLServerStatementParser.AUTO, 0); }
41800 		public TerminalNode PATH() { return getToken(SQLServerStatementParser.PATH, 0); }
41801 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41802 		public TerminalNode COMMA_(int i) {
41803 			return getToken(SQLServerStatementParser.COMMA_, i);
41804 		}
41805 		public TerminalNode ROOT() { return getToken(SQLServerStatementParser.ROOT, 0); }
41806 		public TerminalNode INCLUDE_NULL_VALUES() { return getToken(SQLServerStatementParser.INCLUDE_NULL_VALUES, 0); }
41807 		public TerminalNode WITHOUT_ARRAY_WRAPPER() { return getToken(SQLServerStatementParser.WITHOUT_ARRAY_WRAPPER, 0); }
41808 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
41809 		public StringLiteralsContext stringLiterals() {
41810 			return getRuleContext(StringLiteralsContext.class,0);
41811 		}
41812 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
41813 		public ForJsonClauseContext(ParserRuleContext parent, int invokingState) {
41814 			super(parent, invokingState);
41815 		}
41816 		@Override public int getRuleIndex() { return RULE_forJsonClause; }
41817 		@Override
41818 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41819 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitForJsonClause(this);
41820 			else return visitor.visitChildren(this);
41821 		}
41822 	}
41823 
41824 	public final ForJsonClauseContext forJsonClause() throws RecognitionException {
41825 		ForJsonClauseContext _localctx = new ForJsonClauseContext(_ctx, getState());
41826 		enterRule(_localctx, 806, RULE_forJsonClause);
41827 		int _la;
41828 		try {
41829 			enterOuterAlt(_localctx, 1);
41830 			{
41831 			setState(5848);
41832 			match(JSON);
41833 			{
41834 			setState(5849);
41835 			_la = _input.LA(1);
41836 			if ( !(_la==AUTO || _la==PATH) ) {
41837 			_errHandler.recoverInline(this);
41838 			}
41839 			else {
41840 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
41841 				_errHandler.reportMatch(this);
41842 				consume();
41843 			}
41844 			setState(5868);
41845 			_errHandler.sync(this);
41846 			switch ( getInterpreter().adaptivePredict(_input,686,_ctx) ) {
41847 			case 1:
41848 				{
41849 				setState(5858);
41850 				_errHandler.sync(this);
41851 				switch ( getInterpreter().adaptivePredict(_input,683,_ctx) ) {
41852 				case 1:
41853 					{
41854 					setState(5850);
41855 					match(COMMA_);
41856 					setState(5851);
41857 					match(ROOT);
41858 					setState(5856);
41859 					_errHandler.sync(this);
41860 					_la = _input.LA(1);
41861 					if (_la==LP_) {
41862 						{
41863 						setState(5852);
41864 						match(LP_);
41865 						setState(5853);
41866 						stringLiterals();
41867 						setState(5854);
41868 						match(RP_);
41869 						}
41870 					}
41871 
41872 					}
41873 					break;
41874 				}
41875 				setState(5862);
41876 				_errHandler.sync(this);
41877 				switch ( getInterpreter().adaptivePredict(_input,684,_ctx) ) {
41878 				case 1:
41879 					{
41880 					setState(5860);
41881 					match(COMMA_);
41882 					setState(5861);
41883 					match(INCLUDE_NULL_VALUES);
41884 					}
41885 					break;
41886 				}
41887 				setState(5866);
41888 				_errHandler.sync(this);
41889 				_la = _input.LA(1);
41890 				if (_la==COMMA_) {
41891 					{
41892 					setState(5864);
41893 					match(COMMA_);
41894 					setState(5865);
41895 					match(WITHOUT_ARRAY_WRAPPER);
41896 					}
41897 				}
41898 
41899 				}
41900 				break;
41901 			}
41902 			}
41903 			}
41904 		}
41905 		catch (RecognitionException re) {
41906 			_localctx.exception = re;
41907 			_errHandler.reportError(this, re);
41908 			_errHandler.recover(this, re);
41909 		}
41910 		finally {
41911 			exitRule();
41912 		}
41913 		return _localctx;
41914 	}
41915 
41916 	public static class SelectWithClauseContext extends ParserRuleContext {
41917 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
41918 		public XmlNamespacesClauseContext xmlNamespacesClause() {
41919 			return getRuleContext(XmlNamespacesClauseContext.class,0);
41920 		}
41921 		public CteClauseSetContext cteClauseSet() {
41922 			return getRuleContext(CteClauseSetContext.class,0);
41923 		}
41924 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
41925 		public SelectWithClauseContext(ParserRuleContext parent, int invokingState) {
41926 			super(parent, invokingState);
41927 		}
41928 		@Override public int getRuleIndex() { return RULE_selectWithClause; }
41929 		@Override
41930 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
41931 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSelectWithClause(this);
41932 			else return visitor.visitChildren(this);
41933 		}
41934 	}
41935 
41936 	public final SelectWithClauseContext selectWithClause() throws RecognitionException {
41937 		SelectWithClauseContext _localctx = new SelectWithClauseContext(_ctx, getState());
41938 		enterRule(_localctx, 808, RULE_selectWithClause);
41939 		int _la;
41940 		try {
41941 			enterOuterAlt(_localctx, 1);
41942 			{
41943 			setState(5870);
41944 			match(WITH);
41945 			setState(5875);
41946 			_errHandler.sync(this);
41947 			_la = _input.LA(1);
41948 			if (_la==XMLNAMESPACES) {
41949 				{
41950 				setState(5871);
41951 				xmlNamespacesClause();
41952 				setState(5873);
41953 				_errHandler.sync(this);
41954 				_la = _input.LA(1);
41955 				if (_la==COMMA_) {
41956 					{
41957 					setState(5872);
41958 					match(COMMA_);
41959 					}
41960 				}
41961 
41962 				}
41963 			}
41964 
41965 			setState(5878);
41966 			_errHandler.sync(this);
41967 			_la = _input.LA(1);
41968 			if (((((_la - 53)) & ~0x3f) == 0 && ((1L << (_la - 53)) & ((1L << (TRUNCATE - 53)) | (1L << (SCHEMA - 53)) | (1L << (COLUMNS - 53)) | (1L << (PRECISION - 53)) | (1L << (FUNCTION - 53)) | (1L << (TRIGGER - 53)) | (1L << (CAST - 53)) | (1L << (TRIM - 53)) | (1L << (SUBSTRING - 53)) | (1L << (RIGHT - 53)) | (1L << (OFF - 53)))) != 0) || ((((_la - 118)) & ~0x3f) == 0 && ((1L << (_la - 118)) & ((1L << (GROUP - 118)) | (1L << (LIMIT - 118)) | (1L << (OFFSET - 118)) | (1L << (SAVEPOINT - 118)) | (1L << (BOOLEAN - 118)) | (1L << (ARRAY - 118)) | (1L << (DATE - 118)) | (1L << (TIMESTAMP - 118)) | (1L << (LOCALTIME - 118)) | (1L << (LOCALTIMESTAMP - 118)) | (1L << (YEAR - 118)) | (1L << (QUARTER - 118)) | (1L << (MONTH - 118)) | (1L << (WEEK - 118)) | (1L << (DAY - 118)) | (1L << (SECOND - 118)) | (1L << (MICROSECOND - 118)) | (1L << (MAX - 118)) | (1L << (MIN - 118)) | (1L << (SUM - 118)) | (1L << (COUNT - 118)) | (1L << (AVG - 118)) | (1L << (ENABLE - 118)) | (1L << (DISABLE - 118)) | (1L << (INSTANCE - 118)) | (1L << (DO - 118)) | (1L << (DEFINER - 118)) | (1L << (SQL - 118)) | (1L << (CASCADED - 118)) | (1L << (LOCAL - 118)) | (1L << (NEXT - 118)) | (1L << (NAME - 118)) | (1L << (INTEGER - 118)) | (1L << (TYPE - 118)))) != 0) || ((((_la - 184)) & ~0x3f) == 0 && ((1L << (_la - 184)) & ((1L << (TEXT - 184)) | (1L << (VIEWS - 184)) | (1L << (READ_ONLY - 184)) | (1L << (DATABASE - 184)) | (1L << (RETURNS - 184)) | (1L << (DATEPART - 184)) | (1L << (PASSWORD - 184)) | (1L << (BINARY - 184)) | (1L << (HIDDEN_ - 184)) | (1L << (MOD - 184)) | (1L << (PARTITION - 184)) | (1L << (PARTITIONS - 184)))) != 0) || ((((_la - 248)) & ~0x3f) == 0 && ((1L << (_la - 248)) & ((1L << (TOP - 248)) | (1L << (ROW - 248)) | (1L << (ROWS - 248)) | (1L << (XOR - 248)) | (1L << (ALWAYS - 248)) | (1L << (USER - 248)) | (1L << (ROLE - 248)) | (1L << (START - 248)) | (1L << (ALGORITHM - 248)) | (1L << (AUTO - 248)) | (1L << (BLOCKERS - 248)) | (1L << (CLUSTERED - 248)) | (1L << (NONCLUSTERED - 248)) | (1L << (COLUMNSTORE - 248)) | (1L << (CONTENT - 248)) | (1L << (YEARS - 248)) | (1L << (MONTHS - 248)) | (1L << (WEEKS - 248)) | (1L << (DAYS - 248)) | (1L << (MINUTES - 248)) | (1L << (DENY - 248)) | (1L << (DETERMINISTIC - 248)) | (1L << (DISTRIBUTION - 248)) | (1L << (DOCUMENT - 248)) | (1L << (DURABILITY - 248)) | (1L << (ENCRYPTED - 248)) | (1L << (FILESTREAM - 248)) | (1L << (FILETABLE - 248)) | (1L << (FILLFACTOR - 248)) | (1L << (FOLLOWING - 248)) | (1L << (HASH - 248)) | (1L << (HEAP - 248)) | (1L << (INBOUND - 248)) | (1L << (OUTBOUND - 248)) | (1L << (UNBOUNDED - 248)) | (1L << (INFINITE - 248)) | (1L << (LOGIN - 248)) | (1L << (MASKED - 248)) | (1L << (MAXDOP - 248)) | (1L << (MOVE - 248)) | (1L << (NOCHECK - 248)) | (1L << (OBJECT - 248)) | (1L << (ONLINE - 248)) | (1L << (OVER - 248)) | (1L << (PAGE - 248)) | (1L << (PAUSED - 248)) | (1L << (PERIOD - 248)) | (1L << (PERSISTED - 248)) | (1L << (PRECEDING - 248)))) != 0) || ((((_la - 312)) & ~0x3f) == 0 && ((1L << (_la - 312)) & ((1L << (RANDOMIZED - 312)) | (1L << (RANGE - 312)) | (1L << (REBUILD - 312)) | (1L << (REPLICATE - 312)) | (1L << (REPLICATION - 312)) | (1L << (RESUMABLE - 312)) | (1L << (ROWGUIDCOL - 312)) | (1L << (SAVE - 312)) | (1L << (SELF - 312)) | (1L << (SPARSE - 312)) | (1L << (SWITCH - 312)) | (1L << (TRAN - 312)) | (1L << (TRANCOUNT - 312)) | (1L << (CONTROL - 312)) | (1L << (CONCAT - 312)) | (1L << (TAKE - 312)) | (1L << (OWNERSHIP - 312)) | (1L << (DEFINITION - 312)) | (1L << (APPLICATION - 312)) | (1L << (ASSEMBLY - 312)) | (1L << (SYMMETRIC - 312)) | (1L << (ASYMMETRIC - 312)) | (1L << (SERVER - 312)) | (1L << (RECEIVE - 312)) | (1L << (CHANGE - 312)) | (1L << (TRACE - 312)) | (1L << (TRACKING - 312)) | (1L << (RESOURCES - 312)) | (1L << (SETTINGS - 312)) | (1L << (STATE - 312)) | (1L << (AVAILABILITY - 312)) | (1L << (CREDENTIAL - 312)) | (1L << (ENDPOINT - 312)) | (1L << (EVENT - 312)) | (1L << (NOTIFICATION - 312)) | (1L << (LINKED - 312)) | (1L << (AUDIT - 312)) | (1L << (DDL - 312)) | (1L << (XML - 312)) | (1L << (IMPERSONATE - 312)) | (1L << (SECURABLES - 312)) | (1L << (AUTHENTICATE - 312)) | (1L << (EXTERNAL - 312)) | (1L << (ACCESS - 312)) | (1L << (ADMINISTER - 312)) | (1L << (BULK - 312)) | (1L << (OPERATIONS - 312)) | (1L << (UNSAFE - 312)) | (1L << (SHUTDOWN - 312)) | (1L << (SCOPED - 312)) | (1L << (CONFIGURATION - 312)) | (1L << (DATASPACE - 312)) | (1L << (SERVICE - 312)) | (1L << (CERTIFICATE - 312)) | (1L << (CONTRACT - 312)) | (1L << (ENCRYPTION - 312)) | (1L << (MASTER - 312)))) != 0) || ((((_la - 376)) & ~0x3f) == 0 && ((1L << (_la - 376)) & ((1L << (DATA - 376)) | (1L << (SOURCE - 376)) | (1L << (FILE - 376)) | (1L << (FORMAT - 376)) | (1L << (LIBRARY - 376)) | (1L << (FULLTEXT - 376)) | (1L << (MASK - 376)) | (1L << (UNMASK - 376)) | (1L << (MESSAGE - 376)) | (1L << (REMOTE - 376)) | (1L << (BINDING - 376)) | (1L << (ROUTE - 376)) | (1L << (SECURITY - 376)) | (1L << (POLICY - 376)) | (1L << (AGGREGATE - 376)) | (1L << (QUEUE - 376)) | (1L << (RULE - 376)) | (1L << (SYNONYM - 376)) | (1L << (COLLECTION - 376)) | (1L << (SCRIPT - 376)) | (1L << (KILL - 376)) | (1L << (BACKUP - 376)) | (1L << (LOG - 376)) | (1L << (SHOWPLAN - 376)) | (1L << (SUBSCRIBE - 376)) | (1L << (QUERY - 376)) | (1L << (NOTIFICATIONS - 376)) | (1L << (CHECKPOINT - 376)) | (1L << (SEQUENCE - 376)) | (1L << (ABORT_AFTER_WAIT - 376)) | (1L << (ALLOW_PAGE_LOCKS - 376)) | (1L << (ALLOW_ROW_LOCKS - 376)) | (1L << (ALL_SPARSE_COLUMNS - 376)) | (1L << (BUCKET_COUNT - 376)) | (1L << (COLUMNSTORE_ARCHIVE - 376)) | (1L << (COLUMN_ENCRYPTION_KEY - 376)) | (1L << (COLUMN_SET - 376)) | (1L << (COMPRESSION_DELAY - 376)) | (1L << (DATABASE_DEAULT - 376)) | (1L << (DATA_COMPRESSION - 376)) | (1L << (DATA_CONSISTENCY_CHECK - 376)) | (1L << (ENCRYPTION_TYPE - 376)) | (1L << (SYSTEM_TIME - 376)) | (1L << (SYSTEM_VERSIONING - 376)) | (1L << (TEXTIMAGE_ON - 376)) | (1L << (WAIT_AT_LOW_PRIORITY - 376)) | (1L << (STATISTICS_INCREMENTAL - 376)) | (1L << (STATISTICS_NORECOMPUTE - 376)) | (1L << (ROUND_ROBIN - 376)) | (1L << (SCHEMA_AND_DATA - 376)) | (1L << (SCHEMA_ONLY - 376)) | (1L << (SORT_IN_TEMPDB - 376)) | (1L << (IGNORE_DUP_KEY - 376)) | (1L << (IMPLICIT_TRANSACTIONS - 376)) | (1L << (MAX_DURATION - 376)) | (1L << (MEMORY_OPTIMIZED - 376)) | (1L << (MIGRATION_STATE - 376)) | (1L << (PAD_INDEX - 376)) | (1L << (REMOTE_DATA_ARCHIVE - 376)) | (1L << (FILESTREAM_ON - 376)) | (1L << (FILETABLE_COLLATE_FILENAME - 376)) | (1L << (FILETABLE_DIRECTORY - 376)) | (1L << (FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME - 376)) | (1L << (FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME - 376)))) != 0) || ((((_la - 440)) & ~0x3f) == 0 && ((1L << (_la - 440)) & ((1L << (FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME - 440)) | (1L << (FILTER_PREDICATE - 440)) | (1L << (HISTORY_RETENTION_PERIOD - 440)) | (1L << (HISTORY_TABLE - 440)) | (1L << (LOCK_ESCALATION - 440)) | (1L << (DROP_EXISTING - 440)) | (1L << (ROW_NUMBER - 440)) | (1L << (FIRST - 440)) | (1L << (DATETIME2 - 440)) | (1L << (OUTPUT - 440)) | (1L << (INSERTED - 440)) | (1L << (DELETED - 440)))) != 0) || ((((_la - 505)) & ~0x3f) == 0 && ((1L << (_la - 505)) & ((1L << (FILENAME - 505)) | (1L << (SIZE - 505)) | (1L << (MAXSIZE - 505)) | (1L << (FILEGROWTH - 505)) | (1L << (UNLIMITED - 505)) | (1L << (KB - 505)) | (1L << (MB - 505)) | (1L << (GB - 505)) | (1L << (TB - 505)) | (1L << (CONTAINS - 505)) | (1L << (MEMORY_OPTIMIZED_DATA - 505)) | (1L << (FILEGROUP - 505)) | (1L << (NON_TRANSACTED_ACCESS - 505)) | (1L << (DB_CHAINING - 505)) | (1L << (TRUSTWORTHY - 505)) | (1L << (FORWARD_ONLY - 505)) | (1L << (KEYSET - 505)) | (1L << (FAST_FORWARD - 505)) | (1L << (SCROLL_LOCKS - 505)) | (1L << (OPTIMISTIC - 505)) | (1L << (TYPE_WARNING - 505)) | (1L << (SCHEMABINDING - 505)) | (1L << (CALLER - 505)) | (1L << (INPUT - 505)) | (1L << (OWNER - 505)) | (1L << (SNAPSHOT - 505)) | (1L << (REPEATABLE - 505)) | (1L << (SERIALIZABLE - 505)) | (1L << (NATIVE_COMPILATION - 505)) | (1L << (VIEW_METADATA - 505)) | (1L << (INSTEAD - 505)) | (1L << (APPEND - 505)) | (1L << (INCREMENT - 505)) | (1L << (CACHE - 505)) | (1L << (MINVALUE - 505)) | (1L << (MAXVALUE - 505)) | (1L << (RESTART - 505)) | (1L << (LOB_COMPACTION - 505)) | (1L << (COMPRESS_ALL_ROW_GROUPS - 505)) | (1L << (REORGANIZE - 505)) | (1L << (RESUME - 505)) | (1L << (PAUSE - 505)) | (1L << (ABORT - 505)))) != 0) || ((((_la - 571)) & ~0x3f) == 0 && ((1L << (_la - 571)) & ((1L << (ACCELERATED_DATABASE_RECOVERY - 571)) | (1L << (PERSISTENT_VERSION_STORE_FILEGROUP - 571)) | (1L << (IMMEDIATE - 571)) | (1L << (NO_WAIT - 571)) | (1L << (TARGET_RECOVERY_TIME - 571)) | (1L << (SECONDS - 571)) | (1L << (HONOR_BROKER_PRIORITY - 571)) | (1L << (ERROR_BROKER_CONVERSATIONS - 571)) | (1L << (NEW_BROKER - 571)) | (1L << (DISABLE_BROKER - 571)) | (1L << (ENABLE_BROKER - 571)) | (1L << (MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT - 571)) | (1L << (READ_COMMITTED_SNAPSHOT - 571)) | (1L << (ALLOW_SNAPSHOT_ISOLATION - 571)) | (1L << (RECURSIVE_TRIGGERS - 571)) | (1L << (QUOTED_IDENTIFIER - 571)) | (1L << (NUMERIC_ROUNDABORT - 571)) | (1L << (CONCAT_NULL_YIELDS_NULL - 571)) | (1L << (COMPATIBILITY_LEVEL - 571)) | (1L << (ARITHABORT - 571)) | (1L << (ANSI_WARNINGS - 571)) | (1L << (ANSI_PADDING - 571)) | (1L << (ANSI_NULLS - 571)) | (1L << (ANSI_NULL_DEFAULT - 571)) | (1L << (PAGE_VERIFY - 571)) | (1L << (CHECKSUM - 571)) | (1L << (TORN_PAGE_DETECTION - 571)) | (1L << (BULK_LOGGED - 571)) | (1L << (RECOVERY - 571)) | (1L << (TOTAL_EXECUTION_CPU_TIME_MS - 571)) | (1L << (TOTAL_COMPILE_CPU_TIME_MS - 571)) | (1L << (STALE_CAPTURE_POLICY_THRESHOLD - 571)) | (1L << (EXECUTION_COUNT - 571)) | (1L << (QUERY_CAPTURE_POLICY - 571)) | (1L << (WAIT_STATS_CAPTURE_MODE - 571)) | (1L << (MAX_PLANS_PER_QUERY - 571)) | (1L << (QUERY_CAPTURE_MODE - 571)) | (1L << (SIZE_BASED_CLEANUP_MODE - 571)) | (1L << (INTERVAL_LENGTH_MINUTES - 571)) | (1L << (MAX_STORAGE_SIZE_MB - 571)) | (1L << (DATA_FLUSH_INTERVAL_SECONDS - 571)) | (1L << (CLEANUP_POLICY - 571)) | (1L << (CUSTOM - 571)) | (1L << (STALE_QUERY_THRESHOLD_DAYS - 571)) | (1L << (OPERATION_MODE - 571)) | (1L << (QUERY_STORE - 571)) | (1L << (CURSOR_DEFAULT - 571)) | (1L << (GLOBAL - 571)) | (1L << (CURSOR_CLOSE_ON_COMMIT - 571)) | (1L << (HOURS - 571)) | (1L << (CHANGE_RETENTION - 571)) | (1L << (AUTO_CLEANUP - 571)) | (1L << (CHANGE_TRACKING - 571)) | (1L << (AUTOMATIC_TUNING - 571)) | (1L << (FORCE_LAST_GOOD_PLAN - 571)) | (1L << (AUTO_UPDATE_STATISTICS_ASYNC - 571)) | (1L << (AUTO_UPDATE_STATISTICS - 571)) | (1L << (AUTO_SHRINK - 571)) | (1L << (AUTO_CREATE_STATISTICS - 571)) | (1L << (INCREMENTAL - 571)) | (1L << (AUTO_CLOSE - 571)) | (1L << (DATA_RETENTION - 571)) | (1L << (TEMPORAL_HISTORY_RETENTION - 571)) | (1L << (EDITION - 571)))) != 0) || ((((_la - 635)) & ~0x3f) == 0 && ((1L << (_la - 635)) & ((1L << (MIXED_PAGE_ALLOCATION - 635)) | (1L << (DISABLED - 635)) | (1L << (ALLOWED - 635)) | (1L << (HADR - 635)) | (1L << (MULTI_USER - 635)) | (1L << (RESTRICTED_USER - 635)) | (1L << (SINGLE_USER - 635)) | (1L << (OFFLINE - 635)) | (1L << (EMERGENCY - 635)) | (1L << (SUSPEND - 635)) | (1L << (DATE_CORRELATION_OPTIMIZATION - 635)) | (1L << (ELASTIC_POOL - 635)) | (1L << (SERVICE_OBJECTIVE - 635)) | (1L << (DATABASE_NAME - 635)) | (1L << (ALLOW_CONNECTIONS - 635)) | (1L << (GEO - 635)) | (1L << (NAMED - 635)) | (1L << (DATEFIRST - 635)) | (1L << (BACKUP_STORAGE_REDUNDANCY - 635)) | (1L << (FORCE_FAILOVER_ALLOW_DATA_LOSS - 635)) | (1L << (SECONDARY - 635)) | (1L << (FAILOVER - 635)) | (1L << (DEFAULT_FULLTEXT_LANGUAGE - 635)) | (1L << (DEFAULT_LANGUAGE - 635)) | (1L << (INLINE - 635)) | (1L << (NESTED_TRIGGERS - 635)) | (1L << (TRANSFORM_NOISE_WORDS - 635)) | (1L << (TWO_DIGIT_YEAR_CUTOFF - 635)) | (1L << (PERSISTENT_LOG_BUFFER - 635)) | (1L << (DIRECTORY_NAME - 635)) | (1L << (DATEFORMAT - 635)) | (1L << (DELAYED_DURABILITY - 635)) | (1L << (AUTHORIZATION - 635)) | (1L << (TRANSFER - 635)) | (1L << (PROVIDER - 635)) | (1L << (SID - 635)) | (1L << (SEARCH - 635)) | (1L << (MEMBER - 635)))) != 0) || ((((_la - 707)) & ~0x3f) == 0 && ((1L << (_la - 707)) & ((1L << (JSON - 707)) | (1L << (IDENTIFIER_ - 707)) | (1L << (DELIMITED_IDENTIFIER_ - 707)))) != 0)) {
41969 				{
41970 				setState(5877);
41971 				cteClauseSet();
41972 				}
41973 			}
41974 
41975 			}
41976 		}
41977 		catch (RecognitionException re) {
41978 			_localctx.exception = re;
41979 			_errHandler.reportError(this, re);
41980 			_errHandler.recover(this, re);
41981 		}
41982 		finally {
41983 			exitRule();
41984 		}
41985 		return _localctx;
41986 	}
41987 
41988 	public static class XmlNamespacesClauseContext extends ParserRuleContext {
41989 		public TerminalNode XMLNAMESPACES() { return getToken(SQLServerStatementParser.XMLNAMESPACES, 0); }
41990 		public TerminalNode LP_() { return getToken(SQLServerStatementParser.LP_, 0); }
41991 		public List<XmlNamespaceDeclarationItemContext> xmlNamespaceDeclarationItem() {
41992 			return getRuleContexts(XmlNamespaceDeclarationItemContext.class);
41993 		}
41994 		public XmlNamespaceDeclarationItemContext xmlNamespaceDeclarationItem(int i) {
41995 			return getRuleContext(XmlNamespaceDeclarationItemContext.class,i);
41996 		}
41997 		public TerminalNode RP_() { return getToken(SQLServerStatementParser.RP_, 0); }
41998 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
41999 		public TerminalNode COMMA_(int i) {
42000 			return getToken(SQLServerStatementParser.COMMA_, i);
42001 		}
42002 		public XmlNamespacesClauseContext(ParserRuleContext parent, int invokingState) {
42003 			super(parent, invokingState);
42004 		}
42005 		@Override public int getRuleIndex() { return RULE_xmlNamespacesClause; }
42006 		@Override
42007 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42008 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespacesClause(this);
42009 			else return visitor.visitChildren(this);
42010 		}
42011 	}
42012 
42013 	public final XmlNamespacesClauseContext xmlNamespacesClause() throws RecognitionException {
42014 		XmlNamespacesClauseContext _localctx = new XmlNamespacesClauseContext(_ctx, getState());
42015 		enterRule(_localctx, 810, RULE_xmlNamespacesClause);
42016 		int _la;
42017 		try {
42018 			enterOuterAlt(_localctx, 1);
42019 			{
42020 			setState(5880);
42021 			match(XMLNAMESPACES);
42022 			setState(5881);
42023 			match(LP_);
42024 			setState(5882);
42025 			xmlNamespaceDeclarationItem();
42026 			setState(5887);
42027 			_errHandler.sync(this);
42028 			_la = _input.LA(1);
42029 			while (_la==COMMA_) {
42030 				{
42031 				{
42032 				setState(5883);
42033 				match(COMMA_);
42034 				setState(5884);
42035 				xmlNamespaceDeclarationItem();
42036 				}
42037 				}
42038 				setState(5889);
42039 				_errHandler.sync(this);
42040 				_la = _input.LA(1);
42041 			}
42042 			setState(5890);
42043 			match(RP_);
42044 			}
42045 		}
42046 		catch (RecognitionException re) {
42047 			_localctx.exception = re;
42048 			_errHandler.reportError(this, re);
42049 			_errHandler.recover(this, re);
42050 		}
42051 		finally {
42052 			exitRule();
42053 		}
42054 		return _localctx;
42055 	}
42056 
42057 	public static class XmlNamespaceDeclarationItemContext extends ParserRuleContext {
42058 		public XmlNamespaceUriContext xmlNamespaceUri() {
42059 			return getRuleContext(XmlNamespaceUriContext.class,0);
42060 		}
42061 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
42062 		public XmlNamespacePrefixContext xmlNamespacePrefix() {
42063 			return getRuleContext(XmlNamespacePrefixContext.class,0);
42064 		}
42065 		public XmlDefaultNamespaceDeclarationItemContext xmlDefaultNamespaceDeclarationItem() {
42066 			return getRuleContext(XmlDefaultNamespaceDeclarationItemContext.class,0);
42067 		}
42068 		public XmlNamespaceDeclarationItemContext(ParserRuleContext parent, int invokingState) {
42069 			super(parent, invokingState);
42070 		}
42071 		@Override public int getRuleIndex() { return RULE_xmlNamespaceDeclarationItem; }
42072 		@Override
42073 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42074 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespaceDeclarationItem(this);
42075 			else return visitor.visitChildren(this);
42076 		}
42077 	}
42078 
42079 	public final XmlNamespaceDeclarationItemContext xmlNamespaceDeclarationItem() throws RecognitionException {
42080 		XmlNamespaceDeclarationItemContext _localctx = new XmlNamespaceDeclarationItemContext(_ctx, getState());
42081 		enterRule(_localctx, 812, RULE_xmlNamespaceDeclarationItem);
42082 		try {
42083 			setState(5897);
42084 			_errHandler.sync(this);
42085 			switch (_input.LA(1)) {
42086 			case STRING_:
42087 			case NCHAR_TEXT:
42088 				enterOuterAlt(_localctx, 1);
42089 				{
42090 				setState(5892);
42091 				xmlNamespaceUri();
42092 				setState(5893);
42093 				match(AS);
42094 				setState(5894);
42095 				xmlNamespacePrefix();
42096 				}
42097 				break;
42098 			case DEFAULT:
42099 				enterOuterAlt(_localctx, 2);
42100 				{
42101 				setState(5896);
42102 				xmlDefaultNamespaceDeclarationItem();
42103 				}
42104 				break;
42105 			default:
42106 				throw new NoViableAltException(this);
42107 			}
42108 		}
42109 		catch (RecognitionException re) {
42110 			_localctx.exception = re;
42111 			_errHandler.reportError(this, re);
42112 			_errHandler.recover(this, re);
42113 		}
42114 		finally {
42115 			exitRule();
42116 		}
42117 		return _localctx;
42118 	}
42119 
42120 	public static class XmlNamespaceUriContext extends ParserRuleContext {
42121 		public StringLiteralsContext stringLiterals() {
42122 			return getRuleContext(StringLiteralsContext.class,0);
42123 		}
42124 		public XmlNamespaceUriContext(ParserRuleContext parent, int invokingState) {
42125 			super(parent, invokingState);
42126 		}
42127 		@Override public int getRuleIndex() { return RULE_xmlNamespaceUri; }
42128 		@Override
42129 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42130 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespaceUri(this);
42131 			else return visitor.visitChildren(this);
42132 		}
42133 	}
42134 
42135 	public final XmlNamespaceUriContext xmlNamespaceUri() throws RecognitionException {
42136 		XmlNamespaceUriContext _localctx = new XmlNamespaceUriContext(_ctx, getState());
42137 		enterRule(_localctx, 814, RULE_xmlNamespaceUri);
42138 		try {
42139 			enterOuterAlt(_localctx, 1);
42140 			{
42141 			setState(5899);
42142 			stringLiterals();
42143 			}
42144 		}
42145 		catch (RecognitionException re) {
42146 			_localctx.exception = re;
42147 			_errHandler.reportError(this, re);
42148 			_errHandler.recover(this, re);
42149 		}
42150 		finally {
42151 			exitRule();
42152 		}
42153 		return _localctx;
42154 	}
42155 
42156 	public static class XmlNamespacePrefixContext extends ParserRuleContext {
42157 		public IdentifierContext identifier() {
42158 			return getRuleContext(IdentifierContext.class,0);
42159 		}
42160 		public XmlNamespacePrefixContext(ParserRuleContext parent, int invokingState) {
42161 			super(parent, invokingState);
42162 		}
42163 		@Override public int getRuleIndex() { return RULE_xmlNamespacePrefix; }
42164 		@Override
42165 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42166 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlNamespacePrefix(this);
42167 			else return visitor.visitChildren(this);
42168 		}
42169 	}
42170 
42171 	public final XmlNamespacePrefixContext xmlNamespacePrefix() throws RecognitionException {
42172 		XmlNamespacePrefixContext _localctx = new XmlNamespacePrefixContext(_ctx, getState());
42173 		enterRule(_localctx, 816, RULE_xmlNamespacePrefix);
42174 		try {
42175 			enterOuterAlt(_localctx, 1);
42176 			{
42177 			setState(5901);
42178 			identifier();
42179 			}
42180 		}
42181 		catch (RecognitionException re) {
42182 			_localctx.exception = re;
42183 			_errHandler.reportError(this, re);
42184 			_errHandler.recover(this, re);
42185 		}
42186 		finally {
42187 			exitRule();
42188 		}
42189 		return _localctx;
42190 	}
42191 
42192 	public static class XmlDefaultNamespaceDeclarationItemContext extends ParserRuleContext {
42193 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
42194 		public XmlNamespaceUriContext xmlNamespaceUri() {
42195 			return getRuleContext(XmlNamespaceUriContext.class,0);
42196 		}
42197 		public XmlDefaultNamespaceDeclarationItemContext(ParserRuleContext parent, int invokingState) {
42198 			super(parent, invokingState);
42199 		}
42200 		@Override public int getRuleIndex() { return RULE_xmlDefaultNamespaceDeclarationItem; }
42201 		@Override
42202 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42203 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlDefaultNamespaceDeclarationItem(this);
42204 			else return visitor.visitChildren(this);
42205 		}
42206 	}
42207 
42208 	public final XmlDefaultNamespaceDeclarationItemContext xmlDefaultNamespaceDeclarationItem() throws RecognitionException {
42209 		XmlDefaultNamespaceDeclarationItemContext _localctx = new XmlDefaultNamespaceDeclarationItemContext(_ctx, getState());
42210 		enterRule(_localctx, 818, RULE_xmlDefaultNamespaceDeclarationItem);
42211 		try {
42212 			enterOuterAlt(_localctx, 1);
42213 			{
42214 			setState(5903);
42215 			match(DEFAULT);
42216 			setState(5904);
42217 			xmlNamespaceUri();
42218 			}
42219 		}
42220 		catch (RecognitionException re) {
42221 			_localctx.exception = re;
42222 			_errHandler.reportError(this, re);
42223 			_errHandler.recover(this, re);
42224 		}
42225 		finally {
42226 			exitRule();
42227 		}
42228 		return _localctx;
42229 	}
42230 
42231 	public static class GrantContext extends ParserRuleContext {
42232 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
42233 		public GrantClassPrivilegesClauseContext grantClassPrivilegesClause() {
42234 			return getRuleContext(GrantClassPrivilegesClauseContext.class,0);
42235 		}
42236 		public GrantClassTypePrivilegesClauseContext grantClassTypePrivilegesClause() {
42237 			return getRuleContext(GrantClassTypePrivilegesClauseContext.class,0);
42238 		}
42239 		public GrantContext(ParserRuleContext parent, int invokingState) {
42240 			super(parent, invokingState);
42241 		}
42242 		@Override public int getRuleIndex() { return RULE_grant; }
42243 		@Override
42244 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42245 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGrant(this);
42246 			else return visitor.visitChildren(this);
42247 		}
42248 	}
42249 
42250 	public final GrantContext grant() throws RecognitionException {
42251 		GrantContext _localctx = new GrantContext(_ctx, getState());
42252 		enterRule(_localctx, 820, RULE_grant);
42253 		try {
42254 			enterOuterAlt(_localctx, 1);
42255 			{
42256 			setState(5906);
42257 			match(GRANT);
42258 			setState(5909);
42259 			_errHandler.sync(this);
42260 			switch ( getInterpreter().adaptivePredict(_input,692,_ctx) ) {
42261 			case 1:
42262 				{
42263 				setState(5907);
42264 				grantClassPrivilegesClause();
42265 				}
42266 				break;
42267 			case 2:
42268 				{
42269 				setState(5908);
42270 				grantClassTypePrivilegesClause();
42271 				}
42272 				break;
42273 			}
42274 			}
42275 		}
42276 		catch (RecognitionException re) {
42277 			_localctx.exception = re;
42278 			_errHandler.reportError(this, re);
42279 			_errHandler.recover(this, re);
42280 		}
42281 		finally {
42282 			exitRule();
42283 		}
42284 		return _localctx;
42285 	}
42286 
42287 	public static class GrantClassPrivilegesClauseContext extends ParserRuleContext {
42288 		public ClassPrivilegesContext classPrivileges() {
42289 			return getRuleContext(ClassPrivilegesContext.class,0);
42290 		}
42291 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
42292 		public List<PrincipalContext> principal() {
42293 			return getRuleContexts(PrincipalContext.class);
42294 		}
42295 		public PrincipalContext principal(int i) {
42296 			return getRuleContext(PrincipalContext.class,i);
42297 		}
42298 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
42299 		public OnClassClauseContext onClassClause() {
42300 			return getRuleContext(OnClassClauseContext.class,0);
42301 		}
42302 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
42303 		public TerminalNode COMMA_(int i) {
42304 			return getToken(SQLServerStatementParser.COMMA_, i);
42305 		}
42306 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
42307 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
42308 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
42309 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
42310 		public GrantClassPrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
42311 			super(parent, invokingState);
42312 		}
42313 		@Override public int getRuleIndex() { return RULE_grantClassPrivilegesClause; }
42314 		@Override
42315 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42316 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGrantClassPrivilegesClause(this);
42317 			else return visitor.visitChildren(this);
42318 		}
42319 	}
42320 
42321 	public final GrantClassPrivilegesClauseContext grantClassPrivilegesClause() throws RecognitionException {
42322 		GrantClassPrivilegesClauseContext _localctx = new GrantClassPrivilegesClauseContext(_ctx, getState());
42323 		enterRule(_localctx, 822, RULE_grantClassPrivilegesClause);
42324 		int _la;
42325 		try {
42326 			enterOuterAlt(_localctx, 1);
42327 			{
42328 			setState(5911);
42329 			classPrivileges();
42330 			setState(5914);
42331 			_errHandler.sync(this);
42332 			_la = _input.LA(1);
42333 			if (_la==ON) {
42334 				{
42335 				setState(5912);
42336 				match(ON);
42337 				setState(5913);
42338 				onClassClause();
42339 				}
42340 			}
42341 
42342 			setState(5916);
42343 			match(TO);
42344 			setState(5917);
42345 			principal();
42346 			setState(5922);
42347 			_errHandler.sync(this);
42348 			_la = _input.LA(1);
42349 			while (_la==COMMA_) {
42350 				{
42351 				{
42352 				setState(5918);
42353 				match(COMMA_);
42354 				setState(5919);
42355 				principal();
42356 				}
42357 				}
42358 				setState(5924);
42359 				_errHandler.sync(this);
42360 				_la = _input.LA(1);
42361 			}
42362 			setState(5928);
42363 			_errHandler.sync(this);
42364 			_la = _input.LA(1);
42365 			if (_la==WITH) {
42366 				{
42367 				setState(5925);
42368 				match(WITH);
42369 				setState(5926);
42370 				match(GRANT);
42371 				setState(5927);
42372 				match(OPTION);
42373 				}
42374 			}
42375 
42376 			setState(5932);
42377 			_errHandler.sync(this);
42378 			_la = _input.LA(1);
42379 			if (_la==AS) {
42380 				{
42381 				setState(5930);
42382 				match(AS);
42383 				setState(5931);
42384 				principal();
42385 				}
42386 			}
42387 
42388 			}
42389 		}
42390 		catch (RecognitionException re) {
42391 			_localctx.exception = re;
42392 			_errHandler.reportError(this, re);
42393 			_errHandler.recover(this, re);
42394 		}
42395 		finally {
42396 			exitRule();
42397 		}
42398 		return _localctx;
42399 	}
42400 
42401 	public static class GrantClassTypePrivilegesClauseContext extends ParserRuleContext {
42402 		public ClassTypePrivilegesContext classTypePrivileges() {
42403 			return getRuleContext(ClassTypePrivilegesContext.class,0);
42404 		}
42405 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
42406 		public List<PrincipalContext> principal() {
42407 			return getRuleContexts(PrincipalContext.class);
42408 		}
42409 		public PrincipalContext principal(int i) {
42410 			return getRuleContext(PrincipalContext.class,i);
42411 		}
42412 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
42413 		public OnClassTypeClauseContext onClassTypeClause() {
42414 			return getRuleContext(OnClassTypeClauseContext.class,0);
42415 		}
42416 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
42417 		public TerminalNode COMMA_(int i) {
42418 			return getToken(SQLServerStatementParser.COMMA_, i);
42419 		}
42420 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
42421 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
42422 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
42423 		public GrantClassTypePrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
42424 			super(parent, invokingState);
42425 		}
42426 		@Override public int getRuleIndex() { return RULE_grantClassTypePrivilegesClause; }
42427 		@Override
42428 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42429 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitGrantClassTypePrivilegesClause(this);
42430 			else return visitor.visitChildren(this);
42431 		}
42432 	}
42433 
42434 	public final GrantClassTypePrivilegesClauseContext grantClassTypePrivilegesClause() throws RecognitionException {
42435 		GrantClassTypePrivilegesClauseContext _localctx = new GrantClassTypePrivilegesClauseContext(_ctx, getState());
42436 		enterRule(_localctx, 824, RULE_grantClassTypePrivilegesClause);
42437 		int _la;
42438 		try {
42439 			enterOuterAlt(_localctx, 1);
42440 			{
42441 			setState(5934);
42442 			classTypePrivileges();
42443 			setState(5937);
42444 			_errHandler.sync(this);
42445 			_la = _input.LA(1);
42446 			if (_la==ON) {
42447 				{
42448 				setState(5935);
42449 				match(ON);
42450 				setState(5936);
42451 				onClassTypeClause();
42452 				}
42453 			}
42454 
42455 			setState(5939);
42456 			match(TO);
42457 			setState(5940);
42458 			principal();
42459 			setState(5945);
42460 			_errHandler.sync(this);
42461 			_la = _input.LA(1);
42462 			while (_la==COMMA_) {
42463 				{
42464 				{
42465 				setState(5941);
42466 				match(COMMA_);
42467 				setState(5942);
42468 				principal();
42469 				}
42470 				}
42471 				setState(5947);
42472 				_errHandler.sync(this);
42473 				_la = _input.LA(1);
42474 			}
42475 			setState(5951);
42476 			_errHandler.sync(this);
42477 			_la = _input.LA(1);
42478 			if (_la==WITH) {
42479 				{
42480 				setState(5948);
42481 				match(WITH);
42482 				setState(5949);
42483 				match(GRANT);
42484 				setState(5950);
42485 				match(OPTION);
42486 				}
42487 			}
42488 
42489 			}
42490 		}
42491 		catch (RecognitionException re) {
42492 			_localctx.exception = re;
42493 			_errHandler.reportError(this, re);
42494 			_errHandler.recover(this, re);
42495 		}
42496 		finally {
42497 			exitRule();
42498 		}
42499 		return _localctx;
42500 	}
42501 
42502 	public static class ClassPrivilegesContext extends ParserRuleContext {
42503 		public List<PrivilegeTypeContext> privilegeType() {
42504 			return getRuleContexts(PrivilegeTypeContext.class);
42505 		}
42506 		public PrivilegeTypeContext privilegeType(int i) {
42507 			return getRuleContext(PrivilegeTypeContext.class,i);
42508 		}
42509 		public List<ColumnNamesContext> columnNames() {
42510 			return getRuleContexts(ColumnNamesContext.class);
42511 		}
42512 		public ColumnNamesContext columnNames(int i) {
42513 			return getRuleContext(ColumnNamesContext.class,i);
42514 		}
42515 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
42516 		public TerminalNode COMMA_(int i) {
42517 			return getToken(SQLServerStatementParser.COMMA_, i);
42518 		}
42519 		public ClassPrivilegesContext(ParserRuleContext parent, int invokingState) {
42520 			super(parent, invokingState);
42521 		}
42522 		@Override public int getRuleIndex() { return RULE_classPrivileges; }
42523 		@Override
42524 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42525 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassPrivileges(this);
42526 			else return visitor.visitChildren(this);
42527 		}
42528 	}
42529 
42530 	public final ClassPrivilegesContext classPrivileges() throws RecognitionException {
42531 		ClassPrivilegesContext _localctx = new ClassPrivilegesContext(_ctx, getState());
42532 		enterRule(_localctx, 826, RULE_classPrivileges);
42533 		int _la;
42534 		try {
42535 			enterOuterAlt(_localctx, 1);
42536 			{
42537 			setState(5953);
42538 			privilegeType();
42539 			setState(5955);
42540 			_errHandler.sync(this);
42541 			_la = _input.LA(1);
42542 			if (_la==LP_) {
42543 				{
42544 				setState(5954);
42545 				columnNames();
42546 				}
42547 			}
42548 
42549 			setState(5964);
42550 			_errHandler.sync(this);
42551 			_la = _input.LA(1);
42552 			while (_la==COMMA_) {
42553 				{
42554 				{
42555 				setState(5957);
42556 				match(COMMA_);
42557 				setState(5958);
42558 				privilegeType();
42559 				setState(5960);
42560 				_errHandler.sync(this);
42561 				_la = _input.LA(1);
42562 				if (_la==LP_) {
42563 					{
42564 					setState(5959);
42565 					columnNames();
42566 					}
42567 				}
42568 
42569 				}
42570 				}
42571 				setState(5966);
42572 				_errHandler.sync(this);
42573 				_la = _input.LA(1);
42574 			}
42575 			}
42576 		}
42577 		catch (RecognitionException re) {
42578 			_localctx.exception = re;
42579 			_errHandler.reportError(this, re);
42580 			_errHandler.recover(this, re);
42581 		}
42582 		finally {
42583 			exitRule();
42584 		}
42585 		return _localctx;
42586 	}
42587 
42588 	public static class OnClassClauseContext extends ParserRuleContext {
42589 		public SecurableContext securable() {
42590 			return getRuleContext(SecurableContext.class,0);
42591 		}
42592 		public ClassItemContext classItem() {
42593 			return getRuleContext(ClassItemContext.class,0);
42594 		}
42595 		public List<TerminalNode> COLON_() { return getTokens(SQLServerStatementParser.COLON_); }
42596 		public TerminalNode COLON_(int i) {
42597 			return getToken(SQLServerStatementParser.COLON_, i);
42598 		}
42599 		public OnClassClauseContext(ParserRuleContext parent, int invokingState) {
42600 			super(parent, invokingState);
42601 		}
42602 		@Override public int getRuleIndex() { return RULE_onClassClause; }
42603 		@Override
42604 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42605 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnClassClause(this);
42606 			else return visitor.visitChildren(this);
42607 		}
42608 	}
42609 
42610 	public final OnClassClauseContext onClassClause() throws RecognitionException {
42611 		OnClassClauseContext _localctx = new OnClassClauseContext(_ctx, getState());
42612 		enterRule(_localctx, 828, RULE_onClassClause);
42613 		try {
42614 			enterOuterAlt(_localctx, 1);
42615 			{
42616 			setState(5971);
42617 			_errHandler.sync(this);
42618 			switch ( getInterpreter().adaptivePredict(_input,703,_ctx) ) {
42619 			case 1:
42620 				{
42621 				setState(5967);
42622 				classItem();
42623 				setState(5968);
42624 				match(COLON_);
42625 				setState(5969);
42626 				match(COLON_);
42627 				}
42628 				break;
42629 			}
42630 			setState(5973);
42631 			securable();
42632 			}
42633 		}
42634 		catch (RecognitionException re) {
42635 			_localctx.exception = re;
42636 			_errHandler.reportError(this, re);
42637 			_errHandler.recover(this, re);
42638 		}
42639 		finally {
42640 			exitRule();
42641 		}
42642 		return _localctx;
42643 	}
42644 
42645 	public static class ClassTypePrivilegesContext extends ParserRuleContext {
42646 		public List<PrivilegeTypeContext> privilegeType() {
42647 			return getRuleContexts(PrivilegeTypeContext.class);
42648 		}
42649 		public PrivilegeTypeContext privilegeType(int i) {
42650 			return getRuleContext(PrivilegeTypeContext.class,i);
42651 		}
42652 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
42653 		public TerminalNode COMMA_(int i) {
42654 			return getToken(SQLServerStatementParser.COMMA_, i);
42655 		}
42656 		public ClassTypePrivilegesContext(ParserRuleContext parent, int invokingState) {
42657 			super(parent, invokingState);
42658 		}
42659 		@Override public int getRuleIndex() { return RULE_classTypePrivileges; }
42660 		@Override
42661 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42662 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassTypePrivileges(this);
42663 			else return visitor.visitChildren(this);
42664 		}
42665 	}
42666 
42667 	public final ClassTypePrivilegesContext classTypePrivileges() throws RecognitionException {
42668 		ClassTypePrivilegesContext _localctx = new ClassTypePrivilegesContext(_ctx, getState());
42669 		enterRule(_localctx, 830, RULE_classTypePrivileges);
42670 		int _la;
42671 		try {
42672 			enterOuterAlt(_localctx, 1);
42673 			{
42674 			setState(5975);
42675 			privilegeType();
42676 			setState(5980);
42677 			_errHandler.sync(this);
42678 			_la = _input.LA(1);
42679 			while (_la==COMMA_) {
42680 				{
42681 				{
42682 				setState(5976);
42683 				match(COMMA_);
42684 				setState(5977);
42685 				privilegeType();
42686 				}
42687 				}
42688 				setState(5982);
42689 				_errHandler.sync(this);
42690 				_la = _input.LA(1);
42691 			}
42692 			}
42693 		}
42694 		catch (RecognitionException re) {
42695 			_localctx.exception = re;
42696 			_errHandler.reportError(this, re);
42697 			_errHandler.recover(this, re);
42698 		}
42699 		finally {
42700 			exitRule();
42701 		}
42702 		return _localctx;
42703 	}
42704 
42705 	public static class OnClassTypeClauseContext extends ParserRuleContext {
42706 		public SecurableContext securable() {
42707 			return getRuleContext(SecurableContext.class,0);
42708 		}
42709 		public ClassTypeContext classType() {
42710 			return getRuleContext(ClassTypeContext.class,0);
42711 		}
42712 		public List<TerminalNode> COLON_() { return getTokens(SQLServerStatementParser.COLON_); }
42713 		public TerminalNode COLON_(int i) {
42714 			return getToken(SQLServerStatementParser.COLON_, i);
42715 		}
42716 		public OnClassTypeClauseContext(ParserRuleContext parent, int invokingState) {
42717 			super(parent, invokingState);
42718 		}
42719 		@Override public int getRuleIndex() { return RULE_onClassTypeClause; }
42720 		@Override
42721 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42722 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOnClassTypeClause(this);
42723 			else return visitor.visitChildren(this);
42724 		}
42725 	}
42726 
42727 	public final OnClassTypeClauseContext onClassTypeClause() throws RecognitionException {
42728 		OnClassTypeClauseContext _localctx = new OnClassTypeClauseContext(_ctx, getState());
42729 		enterRule(_localctx, 832, RULE_onClassTypeClause);
42730 		try {
42731 			enterOuterAlt(_localctx, 1);
42732 			{
42733 			setState(5987);
42734 			_errHandler.sync(this);
42735 			switch ( getInterpreter().adaptivePredict(_input,705,_ctx) ) {
42736 			case 1:
42737 				{
42738 				setState(5983);
42739 				classType();
42740 				setState(5984);
42741 				match(COLON_);
42742 				setState(5985);
42743 				match(COLON_);
42744 				}
42745 				break;
42746 			}
42747 			setState(5989);
42748 			securable();
42749 			}
42750 		}
42751 		catch (RecognitionException re) {
42752 			_localctx.exception = re;
42753 			_errHandler.reportError(this, re);
42754 			_errHandler.recover(this, re);
42755 		}
42756 		finally {
42757 			exitRule();
42758 		}
42759 		return _localctx;
42760 	}
42761 
42762 	public static class SecurableContext extends ParserRuleContext {
42763 		public NameContext name() {
42764 			return getRuleContext(NameContext.class,0);
42765 		}
42766 		public OwnerContext owner() {
42767 			return getRuleContext(OwnerContext.class,0);
42768 		}
42769 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
42770 		public SecurableContext(ParserRuleContext parent, int invokingState) {
42771 			super(parent, invokingState);
42772 		}
42773 		@Override public int getRuleIndex() { return RULE_securable; }
42774 		@Override
42775 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42776 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSecurable(this);
42777 			else return visitor.visitChildren(this);
42778 		}
42779 	}
42780 
42781 	public final SecurableContext securable() throws RecognitionException {
42782 		SecurableContext _localctx = new SecurableContext(_ctx, getState());
42783 		enterRule(_localctx, 834, RULE_securable);
42784 		try {
42785 			enterOuterAlt(_localctx, 1);
42786 			{
42787 			setState(5994);
42788 			_errHandler.sync(this);
42789 			switch ( getInterpreter().adaptivePredict(_input,706,_ctx) ) {
42790 			case 1:
42791 				{
42792 				setState(5991);
42793 				owner();
42794 				setState(5992);
42795 				match(DOT_);
42796 				}
42797 				break;
42798 			}
42799 			setState(5996);
42800 			name();
42801 			}
42802 		}
42803 		catch (RecognitionException re) {
42804 			_localctx.exception = re;
42805 			_errHandler.reportError(this, re);
42806 			_errHandler.recover(this, re);
42807 		}
42808 		finally {
42809 			exitRule();
42810 		}
42811 		return _localctx;
42812 	}
42813 
42814 	public static class PrincipalContext extends ParserRuleContext {
42815 		public UserNameContext userName() {
42816 			return getRuleContext(UserNameContext.class,0);
42817 		}
42818 		public PrincipalContext(ParserRuleContext parent, int invokingState) {
42819 			super(parent, invokingState);
42820 		}
42821 		@Override public int getRuleIndex() { return RULE_principal; }
42822 		@Override
42823 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42824 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrincipal(this);
42825 			else return visitor.visitChildren(this);
42826 		}
42827 	}
42828 
42829 	public final PrincipalContext principal() throws RecognitionException {
42830 		PrincipalContext _localctx = new PrincipalContext(_ctx, getState());
42831 		enterRule(_localctx, 836, RULE_principal);
42832 		try {
42833 			enterOuterAlt(_localctx, 1);
42834 			{
42835 			setState(5998);
42836 			userName();
42837 			}
42838 		}
42839 		catch (RecognitionException re) {
42840 			_localctx.exception = re;
42841 			_errHandler.reportError(this, re);
42842 			_errHandler.recover(this, re);
42843 		}
42844 		finally {
42845 			exitRule();
42846 		}
42847 		return _localctx;
42848 	}
42849 
42850 	public static class RevokeContext extends ParserRuleContext {
42851 		public TerminalNode REVOKE() { return getToken(SQLServerStatementParser.REVOKE, 0); }
42852 		public RevokeClassPrivilegesClauseContext revokeClassPrivilegesClause() {
42853 			return getRuleContext(RevokeClassPrivilegesClauseContext.class,0);
42854 		}
42855 		public RevokeClassTypePrivilegesClauseContext revokeClassTypePrivilegesClause() {
42856 			return getRuleContext(RevokeClassTypePrivilegesClauseContext.class,0);
42857 		}
42858 		public OptionForClauseContext optionForClause() {
42859 			return getRuleContext(OptionForClauseContext.class,0);
42860 		}
42861 		public RevokeContext(ParserRuleContext parent, int invokingState) {
42862 			super(parent, invokingState);
42863 		}
42864 		@Override public int getRuleIndex() { return RULE_revoke; }
42865 		@Override
42866 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42867 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevoke(this);
42868 			else return visitor.visitChildren(this);
42869 		}
42870 	}
42871 
42872 	public final RevokeContext revoke() throws RecognitionException {
42873 		RevokeContext _localctx = new RevokeContext(_ctx, getState());
42874 		enterRule(_localctx, 838, RULE_revoke);
42875 		int _la;
42876 		try {
42877 			enterOuterAlt(_localctx, 1);
42878 			{
42879 			setState(6000);
42880 			match(REVOKE);
42881 			setState(6006);
42882 			_errHandler.sync(this);
42883 			switch ( getInterpreter().adaptivePredict(_input,708,_ctx) ) {
42884 			case 1:
42885 				{
42886 				setState(6002);
42887 				_errHandler.sync(this);
42888 				_la = _input.LA(1);
42889 				if (_la==GRANT) {
42890 					{
42891 					setState(6001);
42892 					optionForClause();
42893 					}
42894 				}
42895 
42896 				setState(6004);
42897 				revokeClassPrivilegesClause();
42898 				}
42899 				break;
42900 			case 2:
42901 				{
42902 				setState(6005);
42903 				revokeClassTypePrivilegesClause();
42904 				}
42905 				break;
42906 			}
42907 			}
42908 		}
42909 		catch (RecognitionException re) {
42910 			_localctx.exception = re;
42911 			_errHandler.reportError(this, re);
42912 			_errHandler.recover(this, re);
42913 		}
42914 		finally {
42915 			exitRule();
42916 		}
42917 		return _localctx;
42918 	}
42919 
42920 	public static class RevokeClassPrivilegesClauseContext extends ParserRuleContext {
42921 		public ClassPrivilegesContext classPrivileges() {
42922 			return getRuleContext(ClassPrivilegesContext.class,0);
42923 		}
42924 		public List<PrincipalContext> principal() {
42925 			return getRuleContexts(PrincipalContext.class);
42926 		}
42927 		public PrincipalContext principal(int i) {
42928 			return getRuleContext(PrincipalContext.class,i);
42929 		}
42930 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
42931 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
42932 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
42933 		public OnClassClauseContext onClassClause() {
42934 			return getRuleContext(OnClassClauseContext.class,0);
42935 		}
42936 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
42937 		public TerminalNode COMMA_(int i) {
42938 			return getToken(SQLServerStatementParser.COMMA_, i);
42939 		}
42940 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
42941 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
42942 		public RevokeClassPrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
42943 			super(parent, invokingState);
42944 		}
42945 		@Override public int getRuleIndex() { return RULE_revokeClassPrivilegesClause; }
42946 		@Override
42947 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
42948 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevokeClassPrivilegesClause(this);
42949 			else return visitor.visitChildren(this);
42950 		}
42951 	}
42952 
42953 	public final RevokeClassPrivilegesClauseContext revokeClassPrivilegesClause() throws RecognitionException {
42954 		RevokeClassPrivilegesClauseContext _localctx = new RevokeClassPrivilegesClauseContext(_ctx, getState());
42955 		enterRule(_localctx, 840, RULE_revokeClassPrivilegesClause);
42956 		int _la;
42957 		try {
42958 			enterOuterAlt(_localctx, 1);
42959 			{
42960 			setState(6008);
42961 			classPrivileges();
42962 			setState(6011);
42963 			_errHandler.sync(this);
42964 			_la = _input.LA(1);
42965 			if (_la==ON) {
42966 				{
42967 				setState(6009);
42968 				match(ON);
42969 				setState(6010);
42970 				onClassClause();
42971 				}
42972 			}
42973 
42974 			setState(6013);
42975 			_la = _input.LA(1);
42976 			if ( !(_la==FROM || _la==TO) ) {
42977 			_errHandler.recoverInline(this);
42978 			}
42979 			else {
42980 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
42981 				_errHandler.reportMatch(this);
42982 				consume();
42983 			}
42984 			setState(6014);
42985 			principal();
42986 			setState(6019);
42987 			_errHandler.sync(this);
42988 			_la = _input.LA(1);
42989 			while (_la==COMMA_) {
42990 				{
42991 				{
42992 				setState(6015);
42993 				match(COMMA_);
42994 				setState(6016);
42995 				principal();
42996 				}
42997 				}
42998 				setState(6021);
42999 				_errHandler.sync(this);
43000 				_la = _input.LA(1);
43001 			}
43002 			setState(6023);
43003 			_errHandler.sync(this);
43004 			_la = _input.LA(1);
43005 			if (_la==CASCADE) {
43006 				{
43007 				setState(6022);
43008 				match(CASCADE);
43009 				}
43010 			}
43011 
43012 			setState(6027);
43013 			_errHandler.sync(this);
43014 			_la = _input.LA(1);
43015 			if (_la==AS) {
43016 				{
43017 				setState(6025);
43018 				match(AS);
43019 				setState(6026);
43020 				principal();
43021 				}
43022 			}
43023 
43024 			}
43025 		}
43026 		catch (RecognitionException re) {
43027 			_localctx.exception = re;
43028 			_errHandler.reportError(this, re);
43029 			_errHandler.recover(this, re);
43030 		}
43031 		finally {
43032 			exitRule();
43033 		}
43034 		return _localctx;
43035 	}
43036 
43037 	public static class RevokeClassTypePrivilegesClauseContext extends ParserRuleContext {
43038 		public ClassTypePrivilegesContext classTypePrivileges() {
43039 			return getRuleContext(ClassTypePrivilegesContext.class,0);
43040 		}
43041 		public List<PrincipalContext> principal() {
43042 			return getRuleContexts(PrincipalContext.class);
43043 		}
43044 		public PrincipalContext principal(int i) {
43045 			return getRuleContext(PrincipalContext.class,i);
43046 		}
43047 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
43048 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
43049 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
43050 		public OnClassTypeClauseContext onClassTypeClause() {
43051 			return getRuleContext(OnClassTypeClauseContext.class,0);
43052 		}
43053 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
43054 		public TerminalNode COMMA_(int i) {
43055 			return getToken(SQLServerStatementParser.COMMA_, i);
43056 		}
43057 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
43058 		public RevokeClassTypePrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
43059 			super(parent, invokingState);
43060 		}
43061 		@Override public int getRuleIndex() { return RULE_revokeClassTypePrivilegesClause; }
43062 		@Override
43063 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43064 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevokeClassTypePrivilegesClause(this);
43065 			else return visitor.visitChildren(this);
43066 		}
43067 	}
43068 
43069 	public final RevokeClassTypePrivilegesClauseContext revokeClassTypePrivilegesClause() throws RecognitionException {
43070 		RevokeClassTypePrivilegesClauseContext _localctx = new RevokeClassTypePrivilegesClauseContext(_ctx, getState());
43071 		enterRule(_localctx, 842, RULE_revokeClassTypePrivilegesClause);
43072 		int _la;
43073 		try {
43074 			enterOuterAlt(_localctx, 1);
43075 			{
43076 			setState(6029);
43077 			classTypePrivileges();
43078 			setState(6032);
43079 			_errHandler.sync(this);
43080 			_la = _input.LA(1);
43081 			if (_la==ON) {
43082 				{
43083 				setState(6030);
43084 				match(ON);
43085 				setState(6031);
43086 				onClassTypeClause();
43087 				}
43088 			}
43089 
43090 			setState(6034);
43091 			_la = _input.LA(1);
43092 			if ( !(_la==FROM || _la==TO) ) {
43093 			_errHandler.recoverInline(this);
43094 			}
43095 			else {
43096 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
43097 				_errHandler.reportMatch(this);
43098 				consume();
43099 			}
43100 			setState(6035);
43101 			principal();
43102 			setState(6040);
43103 			_errHandler.sync(this);
43104 			_la = _input.LA(1);
43105 			while (_la==COMMA_) {
43106 				{
43107 				{
43108 				setState(6036);
43109 				match(COMMA_);
43110 				setState(6037);
43111 				principal();
43112 				}
43113 				}
43114 				setState(6042);
43115 				_errHandler.sync(this);
43116 				_la = _input.LA(1);
43117 			}
43118 			setState(6044);
43119 			_errHandler.sync(this);
43120 			_la = _input.LA(1);
43121 			if (_la==CASCADE) {
43122 				{
43123 				setState(6043);
43124 				match(CASCADE);
43125 				}
43126 			}
43127 
43128 			}
43129 		}
43130 		catch (RecognitionException re) {
43131 			_localctx.exception = re;
43132 			_errHandler.reportError(this, re);
43133 			_errHandler.recover(this, re);
43134 		}
43135 		finally {
43136 			exitRule();
43137 		}
43138 		return _localctx;
43139 	}
43140 
43141 	public static class DenyContext extends ParserRuleContext {
43142 		public TerminalNode DENY() { return getToken(SQLServerStatementParser.DENY, 0); }
43143 		public DenyClassPrivilegesClauseContext denyClassPrivilegesClause() {
43144 			return getRuleContext(DenyClassPrivilegesClauseContext.class,0);
43145 		}
43146 		public DenyClassTypePrivilegesClauseContext denyClassTypePrivilegesClause() {
43147 			return getRuleContext(DenyClassTypePrivilegesClauseContext.class,0);
43148 		}
43149 		public DenyContext(ParserRuleContext parent, int invokingState) {
43150 			super(parent, invokingState);
43151 		}
43152 		@Override public int getRuleIndex() { return RULE_deny; }
43153 		@Override
43154 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43155 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDeny(this);
43156 			else return visitor.visitChildren(this);
43157 		}
43158 	}
43159 
43160 	public final DenyContext deny() throws RecognitionException {
43161 		DenyContext _localctx = new DenyContext(_ctx, getState());
43162 		enterRule(_localctx, 844, RULE_deny);
43163 		try {
43164 			enterOuterAlt(_localctx, 1);
43165 			{
43166 			setState(6046);
43167 			match(DENY);
43168 			setState(6049);
43169 			_errHandler.sync(this);
43170 			switch ( getInterpreter().adaptivePredict(_input,716,_ctx) ) {
43171 			case 1:
43172 				{
43173 				setState(6047);
43174 				denyClassPrivilegesClause();
43175 				}
43176 				break;
43177 			case 2:
43178 				{
43179 				setState(6048);
43180 				denyClassTypePrivilegesClause();
43181 				}
43182 				break;
43183 			}
43184 			}
43185 		}
43186 		catch (RecognitionException re) {
43187 			_localctx.exception = re;
43188 			_errHandler.reportError(this, re);
43189 			_errHandler.recover(this, re);
43190 		}
43191 		finally {
43192 			exitRule();
43193 		}
43194 		return _localctx;
43195 	}
43196 
43197 	public static class DenyClassPrivilegesClauseContext extends ParserRuleContext {
43198 		public ClassPrivilegesContext classPrivileges() {
43199 			return getRuleContext(ClassPrivilegesContext.class,0);
43200 		}
43201 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
43202 		public List<PrincipalContext> principal() {
43203 			return getRuleContexts(PrincipalContext.class);
43204 		}
43205 		public PrincipalContext principal(int i) {
43206 			return getRuleContext(PrincipalContext.class,i);
43207 		}
43208 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
43209 		public OnClassClauseContext onClassClause() {
43210 			return getRuleContext(OnClassClauseContext.class,0);
43211 		}
43212 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
43213 		public TerminalNode COMMA_(int i) {
43214 			return getToken(SQLServerStatementParser.COMMA_, i);
43215 		}
43216 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
43217 		public TerminalNode AS() { return getToken(SQLServerStatementParser.AS, 0); }
43218 		public DenyClassPrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
43219 			super(parent, invokingState);
43220 		}
43221 		@Override public int getRuleIndex() { return RULE_denyClassPrivilegesClause; }
43222 		@Override
43223 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43224 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDenyClassPrivilegesClause(this);
43225 			else return visitor.visitChildren(this);
43226 		}
43227 	}
43228 
43229 	public final DenyClassPrivilegesClauseContext denyClassPrivilegesClause() throws RecognitionException {
43230 		DenyClassPrivilegesClauseContext _localctx = new DenyClassPrivilegesClauseContext(_ctx, getState());
43231 		enterRule(_localctx, 846, RULE_denyClassPrivilegesClause);
43232 		int _la;
43233 		try {
43234 			enterOuterAlt(_localctx, 1);
43235 			{
43236 			setState(6051);
43237 			classPrivileges();
43238 			setState(6054);
43239 			_errHandler.sync(this);
43240 			_la = _input.LA(1);
43241 			if (_la==ON) {
43242 				{
43243 				setState(6052);
43244 				match(ON);
43245 				setState(6053);
43246 				onClassClause();
43247 				}
43248 			}
43249 
43250 			setState(6056);
43251 			match(TO);
43252 			setState(6057);
43253 			principal();
43254 			setState(6062);
43255 			_errHandler.sync(this);
43256 			_la = _input.LA(1);
43257 			while (_la==COMMA_) {
43258 				{
43259 				{
43260 				setState(6058);
43261 				match(COMMA_);
43262 				setState(6059);
43263 				principal();
43264 				}
43265 				}
43266 				setState(6064);
43267 				_errHandler.sync(this);
43268 				_la = _input.LA(1);
43269 			}
43270 			setState(6066);
43271 			_errHandler.sync(this);
43272 			_la = _input.LA(1);
43273 			if (_la==CASCADE) {
43274 				{
43275 				setState(6065);
43276 				match(CASCADE);
43277 				}
43278 			}
43279 
43280 			setState(6070);
43281 			_errHandler.sync(this);
43282 			_la = _input.LA(1);
43283 			if (_la==AS) {
43284 				{
43285 				setState(6068);
43286 				match(AS);
43287 				setState(6069);
43288 				principal();
43289 				}
43290 			}
43291 
43292 			}
43293 		}
43294 		catch (RecognitionException re) {
43295 			_localctx.exception = re;
43296 			_errHandler.reportError(this, re);
43297 			_errHandler.recover(this, re);
43298 		}
43299 		finally {
43300 			exitRule();
43301 		}
43302 		return _localctx;
43303 	}
43304 
43305 	public static class DenyClassTypePrivilegesClauseContext extends ParserRuleContext {
43306 		public ClassTypePrivilegesContext classTypePrivileges() {
43307 			return getRuleContext(ClassTypePrivilegesContext.class,0);
43308 		}
43309 		public TerminalNode TO() { return getToken(SQLServerStatementParser.TO, 0); }
43310 		public List<PrincipalContext> principal() {
43311 			return getRuleContexts(PrincipalContext.class);
43312 		}
43313 		public PrincipalContext principal(int i) {
43314 			return getRuleContext(PrincipalContext.class,i);
43315 		}
43316 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
43317 		public OnClassTypeClauseContext onClassTypeClause() {
43318 			return getRuleContext(OnClassTypeClauseContext.class,0);
43319 		}
43320 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
43321 		public TerminalNode COMMA_(int i) {
43322 			return getToken(SQLServerStatementParser.COMMA_, i);
43323 		}
43324 		public TerminalNode CASCADE() { return getToken(SQLServerStatementParser.CASCADE, 0); }
43325 		public DenyClassTypePrivilegesClauseContext(ParserRuleContext parent, int invokingState) {
43326 			super(parent, invokingState);
43327 		}
43328 		@Override public int getRuleIndex() { return RULE_denyClassTypePrivilegesClause; }
43329 		@Override
43330 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43331 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDenyClassTypePrivilegesClause(this);
43332 			else return visitor.visitChildren(this);
43333 		}
43334 	}
43335 
43336 	public final DenyClassTypePrivilegesClauseContext denyClassTypePrivilegesClause() throws RecognitionException {
43337 		DenyClassTypePrivilegesClauseContext _localctx = new DenyClassTypePrivilegesClauseContext(_ctx, getState());
43338 		enterRule(_localctx, 848, RULE_denyClassTypePrivilegesClause);
43339 		int _la;
43340 		try {
43341 			enterOuterAlt(_localctx, 1);
43342 			{
43343 			setState(6072);
43344 			classTypePrivileges();
43345 			setState(6075);
43346 			_errHandler.sync(this);
43347 			_la = _input.LA(1);
43348 			if (_la==ON) {
43349 				{
43350 				setState(6073);
43351 				match(ON);
43352 				setState(6074);
43353 				onClassTypeClause();
43354 				}
43355 			}
43356 
43357 			setState(6077);
43358 			match(TO);
43359 			setState(6078);
43360 			principal();
43361 			setState(6083);
43362 			_errHandler.sync(this);
43363 			_la = _input.LA(1);
43364 			while (_la==COMMA_) {
43365 				{
43366 				{
43367 				setState(6079);
43368 				match(COMMA_);
43369 				setState(6080);
43370 				principal();
43371 				}
43372 				}
43373 				setState(6085);
43374 				_errHandler.sync(this);
43375 				_la = _input.LA(1);
43376 			}
43377 			setState(6087);
43378 			_errHandler.sync(this);
43379 			_la = _input.LA(1);
43380 			if (_la==CASCADE) {
43381 				{
43382 				setState(6086);
43383 				match(CASCADE);
43384 				}
43385 			}
43386 
43387 			}
43388 		}
43389 		catch (RecognitionException re) {
43390 			_localctx.exception = re;
43391 			_errHandler.reportError(this, re);
43392 			_errHandler.recover(this, re);
43393 		}
43394 		finally {
43395 			exitRule();
43396 		}
43397 		return _localctx;
43398 	}
43399 
43400 	public static class OptionForClauseContext extends ParserRuleContext {
43401 		public TerminalNode GRANT() { return getToken(SQLServerStatementParser.GRANT, 0); }
43402 		public TerminalNode OPTION() { return getToken(SQLServerStatementParser.OPTION, 0); }
43403 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
43404 		public OptionForClauseContext(ParserRuleContext parent, int invokingState) {
43405 			super(parent, invokingState);
43406 		}
43407 		@Override public int getRuleIndex() { return RULE_optionForClause; }
43408 		@Override
43409 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43410 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionForClause(this);
43411 			else return visitor.visitChildren(this);
43412 		}
43413 	}
43414 
43415 	public final OptionForClauseContext optionForClause() throws RecognitionException {
43416 		OptionForClauseContext _localctx = new OptionForClauseContext(_ctx, getState());
43417 		enterRule(_localctx, 850, RULE_optionForClause);
43418 		try {
43419 			enterOuterAlt(_localctx, 1);
43420 			{
43421 			setState(6089);
43422 			match(GRANT);
43423 			setState(6090);
43424 			match(OPTION);
43425 			setState(6091);
43426 			match(FOR);
43427 			}
43428 		}
43429 		catch (RecognitionException re) {
43430 			_localctx.exception = re;
43431 			_errHandler.reportError(this, re);
43432 			_errHandler.recover(this, re);
43433 		}
43434 		finally {
43435 			exitRule();
43436 		}
43437 		return _localctx;
43438 	}
43439 
43440 	public static class PrivilegeTypeContext extends ParserRuleContext {
43441 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
43442 		public TerminalNode PRIVILEGES() { return getToken(SQLServerStatementParser.PRIVILEGES, 0); }
43443 		public AssemblyPermissionContext assemblyPermission() {
43444 			return getRuleContext(AssemblyPermissionContext.class,0);
43445 		}
43446 		public AsymmetricKeyPermissionContext asymmetricKeyPermission() {
43447 			return getRuleContext(AsymmetricKeyPermissionContext.class,0);
43448 		}
43449 		public AvailabilityGroupPermissionContext availabilityGroupPermission() {
43450 			return getRuleContext(AvailabilityGroupPermissionContext.class,0);
43451 		}
43452 		public CertificatePermissionContext certificatePermission() {
43453 			return getRuleContext(CertificatePermissionContext.class,0);
43454 		}
43455 		public ObjectPermissionContext objectPermission() {
43456 			return getRuleContext(ObjectPermissionContext.class,0);
43457 		}
43458 		public SystemObjectPermissionContext systemObjectPermission() {
43459 			return getRuleContext(SystemObjectPermissionContext.class,0);
43460 		}
43461 		public DatabasePermissionContext databasePermission() {
43462 			return getRuleContext(DatabasePermissionContext.class,0);
43463 		}
43464 		public DatabasePrincipalPermissionContext databasePrincipalPermission() {
43465 			return getRuleContext(DatabasePrincipalPermissionContext.class,0);
43466 		}
43467 		public DatabaseScopedCredentialPermissionContext databaseScopedCredentialPermission() {
43468 			return getRuleContext(DatabaseScopedCredentialPermissionContext.class,0);
43469 		}
43470 		public EndpointPermissionContext endpointPermission() {
43471 			return getRuleContext(EndpointPermissionContext.class,0);
43472 		}
43473 		public FullTextPermissionContext fullTextPermission() {
43474 			return getRuleContext(FullTextPermissionContext.class,0);
43475 		}
43476 		public SchemaPermissionContext schemaPermission() {
43477 			return getRuleContext(SchemaPermissionContext.class,0);
43478 		}
43479 		public SearchPropertyListPermissionContext searchPropertyListPermission() {
43480 			return getRuleContext(SearchPropertyListPermissionContext.class,0);
43481 		}
43482 		public ServerPermissionContext serverPermission() {
43483 			return getRuleContext(ServerPermissionContext.class,0);
43484 		}
43485 		public ServerPrincipalPermissionContext serverPrincipalPermission() {
43486 			return getRuleContext(ServerPrincipalPermissionContext.class,0);
43487 		}
43488 		public ServiceBrokerPermissionContext serviceBrokerPermission() {
43489 			return getRuleContext(ServiceBrokerPermissionContext.class,0);
43490 		}
43491 		public SymmetricKeyPermissionContext symmetricKeyPermission() {
43492 			return getRuleContext(SymmetricKeyPermissionContext.class,0);
43493 		}
43494 		public TypePermissionContext typePermission() {
43495 			return getRuleContext(TypePermissionContext.class,0);
43496 		}
43497 		public XmlSchemaCollectionPermissionContext xmlSchemaCollectionPermission() {
43498 			return getRuleContext(XmlSchemaCollectionPermissionContext.class,0);
43499 		}
43500 		public PrivilegeTypeContext(ParserRuleContext parent, int invokingState) {
43501 			super(parent, invokingState);
43502 		}
43503 		@Override public int getRuleIndex() { return RULE_privilegeType; }
43504 		@Override
43505 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43506 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPrivilegeType(this);
43507 			else return visitor.visitChildren(this);
43508 		}
43509 	}
43510 
43511 	public final PrivilegeTypeContext privilegeType() throws RecognitionException {
43512 		PrivilegeTypeContext _localctx = new PrivilegeTypeContext(_ctx, getState());
43513 		enterRule(_localctx, 852, RULE_privilegeType);
43514 		int _la;
43515 		try {
43516 			setState(6116);
43517 			_errHandler.sync(this);
43518 			switch ( getInterpreter().adaptivePredict(_input,725,_ctx) ) {
43519 			case 1:
43520 				enterOuterAlt(_localctx, 1);
43521 				{
43522 				setState(6093);
43523 				match(ALL);
43524 				setState(6095);
43525 				_errHandler.sync(this);
43526 				_la = _input.LA(1);
43527 				if (_la==PRIVILEGES) {
43528 					{
43529 					setState(6094);
43530 					match(PRIVILEGES);
43531 					}
43532 				}
43533 
43534 				}
43535 				break;
43536 			case 2:
43537 				enterOuterAlt(_localctx, 2);
43538 				{
43539 				setState(6097);
43540 				assemblyPermission();
43541 				}
43542 				break;
43543 			case 3:
43544 				enterOuterAlt(_localctx, 3);
43545 				{
43546 				setState(6098);
43547 				asymmetricKeyPermission();
43548 				}
43549 				break;
43550 			case 4:
43551 				enterOuterAlt(_localctx, 4);
43552 				{
43553 				setState(6099);
43554 				availabilityGroupPermission();
43555 				}
43556 				break;
43557 			case 5:
43558 				enterOuterAlt(_localctx, 5);
43559 				{
43560 				setState(6100);
43561 				certificatePermission();
43562 				}
43563 				break;
43564 			case 6:
43565 				enterOuterAlt(_localctx, 6);
43566 				{
43567 				setState(6101);
43568 				objectPermission();
43569 				}
43570 				break;
43571 			case 7:
43572 				enterOuterAlt(_localctx, 7);
43573 				{
43574 				setState(6102);
43575 				systemObjectPermission();
43576 				}
43577 				break;
43578 			case 8:
43579 				enterOuterAlt(_localctx, 8);
43580 				{
43581 				setState(6103);
43582 				databasePermission();
43583 				}
43584 				break;
43585 			case 9:
43586 				enterOuterAlt(_localctx, 9);
43587 				{
43588 				setState(6104);
43589 				databasePrincipalPermission();
43590 				}
43591 				break;
43592 			case 10:
43593 				enterOuterAlt(_localctx, 10);
43594 				{
43595 				setState(6105);
43596 				databaseScopedCredentialPermission();
43597 				}
43598 				break;
43599 			case 11:
43600 				enterOuterAlt(_localctx, 11);
43601 				{
43602 				setState(6106);
43603 				endpointPermission();
43604 				}
43605 				break;
43606 			case 12:
43607 				enterOuterAlt(_localctx, 12);
43608 				{
43609 				setState(6107);
43610 				fullTextPermission();
43611 				}
43612 				break;
43613 			case 13:
43614 				enterOuterAlt(_localctx, 13);
43615 				{
43616 				setState(6108);
43617 				schemaPermission();
43618 				}
43619 				break;
43620 			case 14:
43621 				enterOuterAlt(_localctx, 14);
43622 				{
43623 				setState(6109);
43624 				searchPropertyListPermission();
43625 				}
43626 				break;
43627 			case 15:
43628 				enterOuterAlt(_localctx, 15);
43629 				{
43630 				setState(6110);
43631 				serverPermission();
43632 				}
43633 				break;
43634 			case 16:
43635 				enterOuterAlt(_localctx, 16);
43636 				{
43637 				setState(6111);
43638 				serverPrincipalPermission();
43639 				}
43640 				break;
43641 			case 17:
43642 				enterOuterAlt(_localctx, 17);
43643 				{
43644 				setState(6112);
43645 				serviceBrokerPermission();
43646 				}
43647 				break;
43648 			case 18:
43649 				enterOuterAlt(_localctx, 18);
43650 				{
43651 				setState(6113);
43652 				symmetricKeyPermission();
43653 				}
43654 				break;
43655 			case 19:
43656 				enterOuterAlt(_localctx, 19);
43657 				{
43658 				setState(6114);
43659 				typePermission();
43660 				}
43661 				break;
43662 			case 20:
43663 				enterOuterAlt(_localctx, 20);
43664 				{
43665 				setState(6115);
43666 				xmlSchemaCollectionPermission();
43667 				}
43668 				break;
43669 			}
43670 		}
43671 		catch (RecognitionException re) {
43672 			_localctx.exception = re;
43673 			_errHandler.reportError(this, re);
43674 			_errHandler.recover(this, re);
43675 		}
43676 		finally {
43677 			exitRule();
43678 		}
43679 		return _localctx;
43680 	}
43681 
43682 	public static class ObjectPermissionContext extends ParserRuleContext {
43683 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43684 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43685 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
43686 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
43687 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
43688 		public TerminalNode RECEIVE() { return getToken(SQLServerStatementParser.RECEIVE, 0); }
43689 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
43690 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
43691 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
43692 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
43693 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
43694 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43695 		public TerminalNode CHANGE() { return getToken(SQLServerStatementParser.CHANGE, 0); }
43696 		public TerminalNode TRACKING() { return getToken(SQLServerStatementParser.TRACKING, 0); }
43697 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43698 		public ObjectPermissionContext(ParserRuleContext parent, int invokingState) {
43699 			super(parent, invokingState);
43700 		}
43701 		@Override public int getRuleIndex() { return RULE_objectPermission; }
43702 		@Override
43703 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43704 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitObjectPermission(this);
43705 			else return visitor.visitChildren(this);
43706 		}
43707 	}
43708 
43709 	public final ObjectPermissionContext objectPermission() throws RecognitionException {
43710 		ObjectPermissionContext _localctx = new ObjectPermissionContext(_ctx, getState());
43711 		enterRule(_localctx, 854, RULE_objectPermission);
43712 		try {
43713 			setState(6134);
43714 			_errHandler.sync(this);
43715 			switch ( getInterpreter().adaptivePredict(_input,726,_ctx) ) {
43716 			case 1:
43717 				enterOuterAlt(_localctx, 1);
43718 				{
43719 				setState(6118);
43720 				match(ALTER);
43721 				}
43722 				break;
43723 			case 2:
43724 				enterOuterAlt(_localctx, 2);
43725 				{
43726 				setState(6119);
43727 				match(CONTROL);
43728 				}
43729 				break;
43730 			case 3:
43731 				enterOuterAlt(_localctx, 3);
43732 				{
43733 				setState(6120);
43734 				match(DELETE);
43735 				}
43736 				break;
43737 			case 4:
43738 				enterOuterAlt(_localctx, 4);
43739 				{
43740 				setState(6121);
43741 				match(EXECUTE);
43742 				}
43743 				break;
43744 			case 5:
43745 				enterOuterAlt(_localctx, 5);
43746 				{
43747 				setState(6122);
43748 				match(INSERT);
43749 				}
43750 				break;
43751 			case 6:
43752 				enterOuterAlt(_localctx, 6);
43753 				{
43754 				setState(6123);
43755 				match(RECEIVE);
43756 				}
43757 				break;
43758 			case 7:
43759 				enterOuterAlt(_localctx, 7);
43760 				{
43761 				setState(6124);
43762 				match(REFERENCES);
43763 				}
43764 				break;
43765 			case 8:
43766 				enterOuterAlt(_localctx, 8);
43767 				{
43768 				setState(6125);
43769 				match(SELECT);
43770 				}
43771 				break;
43772 			case 9:
43773 				enterOuterAlt(_localctx, 9);
43774 				{
43775 				setState(6126);
43776 				match(TAKE);
43777 				setState(6127);
43778 				match(OWNERSHIP);
43779 				}
43780 				break;
43781 			case 10:
43782 				enterOuterAlt(_localctx, 10);
43783 				{
43784 				setState(6128);
43785 				match(UPDATE);
43786 				}
43787 				break;
43788 			case 11:
43789 				enterOuterAlt(_localctx, 11);
43790 				{
43791 				setState(6129);
43792 				match(VIEW);
43793 				setState(6130);
43794 				match(CHANGE);
43795 				setState(6131);
43796 				match(TRACKING);
43797 				}
43798 				break;
43799 			case 12:
43800 				enterOuterAlt(_localctx, 12);
43801 				{
43802 				setState(6132);
43803 				match(VIEW);
43804 				setState(6133);
43805 				match(DEFINITION);
43806 				}
43807 				break;
43808 			}
43809 		}
43810 		catch (RecognitionException re) {
43811 			_localctx.exception = re;
43812 			_errHandler.reportError(this, re);
43813 			_errHandler.recover(this, re);
43814 		}
43815 		finally {
43816 			exitRule();
43817 		}
43818 		return _localctx;
43819 	}
43820 
43821 	public static class ServerPermissionContext extends ParserRuleContext {
43822 		public TerminalNode ADMINISTER() { return getToken(SQLServerStatementParser.ADMINISTER, 0); }
43823 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
43824 		public TerminalNode OPERATIONS() { return getToken(SQLServerStatementParser.OPERATIONS, 0); }
43825 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
43826 		public TerminalNode RESOURCES() { return getToken(SQLServerStatementParser.RESOURCES, 0); }
43827 		public TerminalNode SETTINGS() { return getToken(SQLServerStatementParser.SETTINGS, 0); }
43828 		public TerminalNode TRACE() { return getToken(SQLServerStatementParser.TRACE, 0); }
43829 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
43830 		public TerminalNode STATE() { return getToken(SQLServerStatementParser.STATE, 0); }
43831 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
43832 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
43833 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
43834 		public TerminalNode CONNECTION() { return getToken(SQLServerStatementParser.CONNECTION, 0); }
43835 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
43836 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
43837 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
43838 		public TerminalNode EVENT() { return getToken(SQLServerStatementParser.EVENT, 0); }
43839 		public TerminalNode NOTIFICATION() { return getToken(SQLServerStatementParser.NOTIFICATION, 0); }
43840 		public TerminalNode SESSION() { return getToken(SQLServerStatementParser.SESSION, 0); }
43841 		public TerminalNode LINKED() { return getToken(SQLServerStatementParser.LINKED, 0); }
43842 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
43843 		public TerminalNode AUDIT() { return getToken(SQLServerStatementParser.AUDIT, 0); }
43844 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
43845 		public TerminalNode AUTHENTICATE() { return getToken(SQLServerStatementParser.AUTHENTICATE, 0); }
43846 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
43847 		public TerminalNode SQL() { return getToken(SQLServerStatementParser.SQL, 0); }
43848 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
43849 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
43850 		public TerminalNode DDL() { return getToken(SQLServerStatementParser.DDL, 0); }
43851 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
43852 		public TerminalNode ACCESS() { return getToken(SQLServerStatementParser.ACCESS, 0); }
43853 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
43854 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
43855 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
43856 		public TerminalNode ALL() { return getToken(SQLServerStatementParser.ALL, 0); }
43857 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
43858 		public TerminalNode SECURABLES() { return getToken(SQLServerStatementParser.SECURABLES, 0); }
43859 		public TerminalNode SHUTDOWN() { return getToken(SQLServerStatementParser.SHUTDOWN, 0); }
43860 		public TerminalNode UNSAFE() { return getToken(SQLServerStatementParser.UNSAFE, 0); }
43861 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
43862 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
43863 		public ServerPermissionContext(ParserRuleContext parent, int invokingState) {
43864 			super(parent, invokingState);
43865 		}
43866 		@Override public int getRuleIndex() { return RULE_serverPermission; }
43867 		@Override
43868 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
43869 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServerPermission(this);
43870 			else return visitor.visitChildren(this);
43871 		}
43872 	}
43873 
43874 	public final ServerPermissionContext serverPermission() throws RecognitionException {
43875 		ServerPermissionContext _localctx = new ServerPermissionContext(_ctx, getState());
43876 		enterRule(_localctx, 856, RULE_serverPermission);
43877 		int _la;
43878 		try {
43879 			setState(6213);
43880 			_errHandler.sync(this);
43881 			switch ( getInterpreter().adaptivePredict(_input,730,_ctx) ) {
43882 			case 1:
43883 				enterOuterAlt(_localctx, 1);
43884 				{
43885 				setState(6136);
43886 				match(ADMINISTER);
43887 				setState(6137);
43888 				match(BULK);
43889 				setState(6138);
43890 				match(OPERATIONS);
43891 				}
43892 				break;
43893 			case 2:
43894 				enterOuterAlt(_localctx, 2);
43895 				{
43896 				setState(6139);
43897 				match(ALTER);
43898 				setState(6145);
43899 				_errHandler.sync(this);
43900 				switch (_input.LA(1)) {
43901 				case RESOURCES:
43902 					{
43903 					setState(6140);
43904 					match(RESOURCES);
43905 					}
43906 					break;
43907 				case SETTINGS:
43908 					{
43909 					setState(6141);
43910 					match(SETTINGS);
43911 					}
43912 					break;
43913 				case TRACE:
43914 					{
43915 					setState(6142);
43916 					match(TRACE);
43917 					}
43918 					break;
43919 				case SERVER:
43920 					{
43921 					setState(6143);
43922 					match(SERVER);
43923 					setState(6144);
43924 					match(STATE);
43925 					}
43926 					break;
43927 				default:
43928 					throw new NoViableAltException(this);
43929 				}
43930 				}
43931 				break;
43932 			case 3:
43933 				enterOuterAlt(_localctx, 3);
43934 				{
43935 				setState(6147);
43936 				match(ALTER);
43937 				setState(6148);
43938 				match(ANY);
43939 				setState(6166);
43940 				_errHandler.sync(this);
43941 				switch ( getInterpreter().adaptivePredict(_input,728,_ctx) ) {
43942 				case 1:
43943 					{
43944 					setState(6149);
43945 					match(AVAILABILITY);
43946 					setState(6150);
43947 					match(GROUP);
43948 					}
43949 					break;
43950 				case 2:
43951 					{
43952 					setState(6151);
43953 					match(CONNECTION);
43954 					}
43955 					break;
43956 				case 3:
43957 					{
43958 					setState(6152);
43959 					match(CREDENTIAL);
43960 					}
43961 					break;
43962 				case 4:
43963 					{
43964 					setState(6153);
43965 					match(DATABASE);
43966 					}
43967 					break;
43968 				case 5:
43969 					{
43970 					setState(6154);
43971 					match(ENDPOINT);
43972 					}
43973 					break;
43974 				case 6:
43975 					{
43976 					setState(6155);
43977 					match(EVENT);
43978 					setState(6156);
43979 					match(NOTIFICATION);
43980 					}
43981 					break;
43982 				case 7:
43983 					{
43984 					setState(6157);
43985 					match(EVENT);
43986 					setState(6158);
43987 					match(SESSION);
43988 					}
43989 					break;
43990 				case 8:
43991 					{
43992 					setState(6159);
43993 					match(LINKED);
43994 					setState(6160);
43995 					match(SERVER);
43996 					}
43997 					break;
43998 				case 9:
43999 					{
44000 					setState(6161);
44001 					match(LOGIN);
44002 					}
44003 					break;
44004 				case 10:
44005 					{
44006 					setState(6162);
44007 					match(SERVER);
44008 					setState(6163);
44009 					match(AUDIT);
44010 					}
44011 					break;
44012 				case 11:
44013 					{
44014 					setState(6164);
44015 					match(SERVER);
44016 					setState(6165);
44017 					match(ROLE);
44018 					}
44019 					break;
44020 				}
44021 				}
44022 				break;
44023 			case 4:
44024 				enterOuterAlt(_localctx, 4);
44025 				{
44026 				setState(6168);
44027 				match(AUTHENTICATE);
44028 				setState(6169);
44029 				match(SERVER);
44030 				}
44031 				break;
44032 			case 5:
44033 				enterOuterAlt(_localctx, 5);
44034 				{
44035 				setState(6170);
44036 				match(CONNECT);
44037 				setState(6171);
44038 				match(ANY);
44039 				setState(6172);
44040 				match(DATABASE);
44041 				}
44042 				break;
44043 			case 6:
44044 				enterOuterAlt(_localctx, 6);
44045 				{
44046 				setState(6173);
44047 				match(CONNECT);
44048 				setState(6174);
44049 				match(SQL);
44050 				}
44051 				break;
44052 			case 7:
44053 				enterOuterAlt(_localctx, 7);
44054 				{
44055 				setState(6175);
44056 				match(CONTROL);
44057 				setState(6176);
44058 				match(SERVER);
44059 				}
44060 				break;
44061 			case 8:
44062 				enterOuterAlt(_localctx, 8);
44063 				{
44064 				setState(6177);
44065 				match(CREATE);
44066 				setState(6178);
44067 				match(ANY);
44068 				setState(6179);
44069 				match(DATABASE);
44070 				}
44071 				break;
44072 			case 9:
44073 				enterOuterAlt(_localctx, 9);
44074 				{
44075 				setState(6180);
44076 				match(CREATE);
44077 				setState(6192);
44078 				_errHandler.sync(this);
44079 				switch (_input.LA(1)) {
44080 				case AVAILABILITY:
44081 					{
44082 					setState(6181);
44083 					match(AVAILABILITY);
44084 					setState(6182);
44085 					match(GROUP);
44086 					}
44087 					break;
44088 				case DDL:
44089 					{
44090 					setState(6183);
44091 					match(DDL);
44092 					setState(6184);
44093 					match(EVENT);
44094 					setState(6185);
44095 					match(NOTIFICATION);
44096 					}
44097 					break;
44098 				case ENDPOINT:
44099 					{
44100 					setState(6186);
44101 					match(ENDPOINT);
44102 					}
44103 					break;
44104 				case SERVER:
44105 					{
44106 					setState(6187);
44107 					match(SERVER);
44108 					setState(6188);
44109 					match(ROLE);
44110 					}
44111 					break;
44112 				case TRACE:
44113 					{
44114 					setState(6189);
44115 					match(TRACE);
44116 					setState(6190);
44117 					match(EVENT);
44118 					setState(6191);
44119 					match(NOTIFICATION);
44120 					}
44121 					break;
44122 				default:
44123 					throw new NoViableAltException(this);
44124 				}
44125 				}
44126 				break;
44127 			case 10:
44128 				enterOuterAlt(_localctx, 10);
44129 				{
44130 				setState(6194);
44131 				match(EXTERNAL);
44132 				setState(6195);
44133 				match(ACCESS);
44134 				setState(6196);
44135 				match(ASSEMBLY);
44136 				}
44137 				break;
44138 			case 11:
44139 				enterOuterAlt(_localctx, 11);
44140 				{
44141 				setState(6197);
44142 				match(IMPERSONATE);
44143 				setState(6198);
44144 				match(ANY);
44145 				setState(6199);
44146 				match(LOGIN);
44147 				}
44148 				break;
44149 			case 12:
44150 				enterOuterAlt(_localctx, 12);
44151 				{
44152 				setState(6200);
44153 				match(SELECT);
44154 				setState(6201);
44155 				match(ALL);
44156 				setState(6202);
44157 				match(USER);
44158 				setState(6203);
44159 				match(SECURABLES);
44160 				}
44161 				break;
44162 			case 13:
44163 				enterOuterAlt(_localctx, 13);
44164 				{
44165 				setState(6204);
44166 				match(SHUTDOWN);
44167 				}
44168 				break;
44169 			case 14:
44170 				enterOuterAlt(_localctx, 14);
44171 				{
44172 				setState(6205);
44173 				match(UNSAFE);
44174 				setState(6206);
44175 				match(ASSEMBLY);
44176 				}
44177 				break;
44178 			case 15:
44179 				enterOuterAlt(_localctx, 15);
44180 				{
44181 				setState(6207);
44182 				match(VIEW);
44183 				setState(6208);
44184 				match(ANY);
44185 				setState(6209);
44186 				_la = _input.LA(1);
44187 				if ( !(_la==DATABASE || _la==DEFINITION) ) {
44188 				_errHandler.recoverInline(this);
44189 				}
44190 				else {
44191 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
44192 					_errHandler.reportMatch(this);
44193 					consume();
44194 				}
44195 				}
44196 				break;
44197 			case 16:
44198 				enterOuterAlt(_localctx, 16);
44199 				{
44200 				setState(6210);
44201 				match(VIEW);
44202 				setState(6211);
44203 				match(SERVER);
44204 				setState(6212);
44205 				match(STATE);
44206 				}
44207 				break;
44208 			}
44209 		}
44210 		catch (RecognitionException re) {
44211 			_localctx.exception = re;
44212 			_errHandler.reportError(this, re);
44213 			_errHandler.recover(this, re);
44214 		}
44215 		finally {
44216 			exitRule();
44217 		}
44218 		return _localctx;
44219 	}
44220 
44221 	public static class ServerPrincipalPermissionContext extends ParserRuleContext {
44222 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44223 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
44224 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
44225 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44226 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44227 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44228 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44229 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
44230 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
44231 		public ServerPrincipalPermissionContext(ParserRuleContext parent, int invokingState) {
44232 			super(parent, invokingState);
44233 		}
44234 		@Override public int getRuleIndex() { return RULE_serverPrincipalPermission; }
44235 		@Override
44236 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44237 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServerPrincipalPermission(this);
44238 			else return visitor.visitChildren(this);
44239 		}
44240 	}
44241 
44242 	public final ServerPrincipalPermissionContext serverPrincipalPermission() throws RecognitionException {
44243 		ServerPrincipalPermissionContext _localctx = new ServerPrincipalPermissionContext(_ctx, getState());
44244 		enterRule(_localctx, 858, RULE_serverPrincipalPermission);
44245 		int _la;
44246 		try {
44247 			setState(6233);
44248 			_errHandler.sync(this);
44249 			switch ( getInterpreter().adaptivePredict(_input,734,_ctx) ) {
44250 			case 1:
44251 				enterOuterAlt(_localctx, 1);
44252 				{
44253 				setState(6215);
44254 				match(CONTROL);
44255 				setState(6217);
44256 				_errHandler.sync(this);
44257 				_la = _input.LA(1);
44258 				if (_la==SERVER) {
44259 					{
44260 					setState(6216);
44261 					match(SERVER);
44262 					}
44263 				}
44264 
44265 				}
44266 				break;
44267 			case 2:
44268 				enterOuterAlt(_localctx, 2);
44269 				{
44270 				setState(6219);
44271 				match(IMPERSONATE);
44272 				}
44273 				break;
44274 			case 3:
44275 				enterOuterAlt(_localctx, 3);
44276 				{
44277 				setState(6220);
44278 				match(VIEW);
44279 				setState(6222);
44280 				_errHandler.sync(this);
44281 				_la = _input.LA(1);
44282 				if (_la==ANY) {
44283 					{
44284 					setState(6221);
44285 					match(ANY);
44286 					}
44287 				}
44288 
44289 				setState(6224);
44290 				match(DEFINITION);
44291 				}
44292 				break;
44293 			case 4:
44294 				enterOuterAlt(_localctx, 4);
44295 				{
44296 				setState(6225);
44297 				match(ALTER);
44298 				}
44299 				break;
44300 			case 5:
44301 				enterOuterAlt(_localctx, 5);
44302 				{
44303 				setState(6226);
44304 				match(ALTER);
44305 				setState(6227);
44306 				match(ANY);
44307 				setState(6231);
44308 				_errHandler.sync(this);
44309 				switch (_input.LA(1)) {
44310 				case LOGIN:
44311 					{
44312 					setState(6228);
44313 					match(LOGIN);
44314 					}
44315 					break;
44316 				case SERVER:
44317 					{
44318 					setState(6229);
44319 					match(SERVER);
44320 					setState(6230);
44321 					match(ROLE);
44322 					}
44323 					break;
44324 				default:
44325 					throw new NoViableAltException(this);
44326 				}
44327 				}
44328 				break;
44329 			}
44330 		}
44331 		catch (RecognitionException re) {
44332 			_localctx.exception = re;
44333 			_errHandler.reportError(this, re);
44334 			_errHandler.recover(this, re);
44335 		}
44336 		finally {
44337 			exitRule();
44338 		}
44339 		return _localctx;
44340 	}
44341 
44342 	public static class DatabasePermissionContext extends ParserRuleContext {
44343 		public TerminalNode ADMINISTER() { return getToken(SQLServerStatementParser.ADMINISTER, 0); }
44344 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
44345 		public TerminalNode BULK() { return getToken(SQLServerStatementParser.BULK, 0); }
44346 		public TerminalNode OPERATIONS() { return getToken(SQLServerStatementParser.OPERATIONS, 0); }
44347 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
44348 		public TerminalNode TRACE() { return getToken(SQLServerStatementParser.TRACE, 0); }
44349 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
44350 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
44351 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
44352 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
44353 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
44354 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
44355 		public TerminalNode CONNECTION() { return getToken(SQLServerStatementParser.CONNECTION, 0); }
44356 		public TerminalNode COLUMN() { return getToken(SQLServerStatementParser.COLUMN, 0); }
44357 		public TerminalNode MASTER() { return getToken(SQLServerStatementParser.MASTER, 0); }
44358 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
44359 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
44360 		public TerminalNode DATASPACE() { return getToken(SQLServerStatementParser.DATASPACE, 0); }
44361 		public TerminalNode EVENT() { return getToken(SQLServerStatementParser.EVENT, 0); }
44362 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
44363 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
44364 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
44365 		public TerminalNode MASK() { return getToken(SQLServerStatementParser.MASK, 0); }
44366 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
44367 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
44368 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
44369 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
44370 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
44371 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
44372 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
44373 		public TerminalNode AUDIT() { return getToken(SQLServerStatementParser.AUDIT, 0); }
44374 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
44375 		public TerminalNode SECURITY() { return getToken(SQLServerStatementParser.SECURITY, 0); }
44376 		public TerminalNode POLICY() { return getToken(SQLServerStatementParser.POLICY, 0); }
44377 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
44378 		public TerminalNode NOTIFICATION() { return getToken(SQLServerStatementParser.NOTIFICATION, 0); }
44379 		public TerminalNode SESSION() { return getToken(SQLServerStatementParser.SESSION, 0); }
44380 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
44381 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
44382 		public TerminalNode ENCRYPTION() { return getToken(SQLServerStatementParser.ENCRYPTION, 0); }
44383 		public TerminalNode DATA() { return getToken(SQLServerStatementParser.DATA, 0); }
44384 		public TerminalNode SOURCE() { return getToken(SQLServerStatementParser.SOURCE, 0); }
44385 		public TerminalNode FILE() { return getToken(SQLServerStatementParser.FILE, 0); }
44386 		public TerminalNode FORMAT() { return getToken(SQLServerStatementParser.FORMAT, 0); }
44387 		public TerminalNode LIBRARY() { return getToken(SQLServerStatementParser.LIBRARY, 0); }
44388 		public TerminalNode DDL() { return getToken(SQLServerStatementParser.DDL, 0); }
44389 		public TerminalNode TRIGGER() { return getToken(SQLServerStatementParser.TRIGGER, 0); }
44390 		public TerminalNode SCOPED() { return getToken(SQLServerStatementParser.SCOPED, 0); }
44391 		public TerminalNode CONFIGURATION() { return getToken(SQLServerStatementParser.CONFIGURATION, 0); }
44392 		public TerminalNode AUTHENTICATE() { return getToken(SQLServerStatementParser.AUTHENTICATE, 0); }
44393 		public TerminalNode BACKUP() { return getToken(SQLServerStatementParser.BACKUP, 0); }
44394 		public TerminalNode LOG() { return getToken(SQLServerStatementParser.LOG, 0); }
44395 		public TerminalNode CHECKPOINT() { return getToken(SQLServerStatementParser.CHECKPOINT, 0); }
44396 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
44397 		public TerminalNode REPLICATION() { return getToken(SQLServerStatementParser.REPLICATION, 0); }
44398 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
44399 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
44400 		public TerminalNode AGGREGATE() { return getToken(SQLServerStatementParser.AGGREGATE, 0); }
44401 		public TerminalNode DEFAULT() { return getToken(SQLServerStatementParser.DEFAULT, 0); }
44402 		public TerminalNode FUNCTION() { return getToken(SQLServerStatementParser.FUNCTION, 0); }
44403 		public TerminalNode PROCEDURE() { return getToken(SQLServerStatementParser.PROCEDURE, 0); }
44404 		public TerminalNode QUEUE() { return getToken(SQLServerStatementParser.QUEUE, 0); }
44405 		public TerminalNode RULE() { return getToken(SQLServerStatementParser.RULE, 0); }
44406 		public TerminalNode SYNONYM() { return getToken(SQLServerStatementParser.SYNONYM, 0); }
44407 		public TerminalNode TABLE() { return getToken(SQLServerStatementParser.TABLE, 0); }
44408 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
44409 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
44410 		public TerminalNode COLLECTION() { return getToken(SQLServerStatementParser.COLLECTION, 0); }
44411 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
44412 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
44413 		public TerminalNode SCRIPT() { return getToken(SQLServerStatementParser.SCRIPT, 0); }
44414 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
44415 		public TerminalNode KILL() { return getToken(SQLServerStatementParser.KILL, 0); }
44416 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
44417 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
44418 		public TerminalNode SHOWPLAN() { return getToken(SQLServerStatementParser.SHOWPLAN, 0); }
44419 		public TerminalNode SUBSCRIBE() { return getToken(SQLServerStatementParser.SUBSCRIBE, 0); }
44420 		public TerminalNode QUERY() { return getToken(SQLServerStatementParser.QUERY, 0); }
44421 		public TerminalNode NOTIFICATIONS() { return getToken(SQLServerStatementParser.NOTIFICATIONS, 0); }
44422 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
44423 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
44424 		public TerminalNode UNMASK() { return getToken(SQLServerStatementParser.UNMASK, 0); }
44425 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
44426 		public TerminalNode STATE() { return getToken(SQLServerStatementParser.STATE, 0); }
44427 		public DatabasePermissionContext(ParserRuleContext parent, int invokingState) {
44428 			super(parent, invokingState);
44429 		}
44430 		@Override public int getRuleIndex() { return RULE_databasePermission; }
44431 		@Override
44432 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
44433 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabasePermission(this);
44434 			else return visitor.visitChildren(this);
44435 		}
44436 	}
44437 
44438 	public final DatabasePermissionContext databasePermission() throws RecognitionException {
44439 		DatabasePermissionContext _localctx = new DatabasePermissionContext(_ctx, getState());
44440 		enterRule(_localctx, 860, RULE_databasePermission);
44441 		int _la;
44442 		try {
44443 			setState(6402);
44444 			_errHandler.sync(this);
44445 			switch ( getInterpreter().adaptivePredict(_input,747,_ctx) ) {
44446 			case 1:
44447 				enterOuterAlt(_localctx, 1);
44448 				{
44449 				setState(6235);
44450 				match(ADMINISTER);
44451 				setState(6236);
44452 				match(DATABASE);
44453 				setState(6237);
44454 				match(BULK);
44455 				setState(6238);
44456 				match(OPERATIONS);
44457 				}
44458 				break;
44459 			case 2:
44460 				enterOuterAlt(_localctx, 2);
44461 				{
44462 				setState(6239);
44463 				match(ALTER);
44464 				}
44465 				break;
44466 			case 3:
44467 				enterOuterAlt(_localctx, 3);
44468 				{
44469 				setState(6240);
44470 				match(ALTER);
44471 				setState(6241);
44472 				match(TRACE);
44473 				}
44474 				break;
44475 			case 4:
44476 				enterOuterAlt(_localctx, 4);
44477 				{
44478 				setState(6242);
44479 				match(ALTER);
44480 				setState(6243);
44481 				match(ANY);
44482 				setState(6301);
44483 				_errHandler.sync(this);
44484 				switch ( getInterpreter().adaptivePredict(_input,738,_ctx) ) {
44485 				case 1:
44486 					{
44487 					setState(6244);
44488 					match(APPLICATION);
44489 					setState(6245);
44490 					match(ROLE);
44491 					}
44492 					break;
44493 				case 2:
44494 					{
44495 					setState(6246);
44496 					match(ASSEMBLY);
44497 					}
44498 					break;
44499 				case 3:
44500 					{
44501 					setState(6251);
44502 					_errHandler.sync(this);
44503 					switch (_input.LA(1)) {
44504 					case SYMMETRIC:
44505 						{
44506 						setState(6247);
44507 						match(SYMMETRIC);
44508 						}
44509 						break;
44510 					case ASYMMETRIC:
44511 						{
44512 						setState(6248);
44513 						match(ASYMMETRIC);
44514 						}
44515 						break;
44516 					case COLUMN:
44517 						{
44518 						setState(6249);
44519 						match(COLUMN);
44520 						setState(6250);
44521 						match(ENCRYPTION);
44522 						}
44523 						break;
44524 					default:
44525 						throw new NoViableAltException(this);
44526 					}
44527 					setState(6253);
44528 					match(KEY);
44529 					}
44530 					break;
44531 				case 4:
44532 					{
44533 					setState(6254);
44534 					match(CERTIFICATE);
44535 					}
44536 					break;
44537 				case 5:
44538 					{
44539 					setState(6255);
44540 					match(CONNECTION);
44541 					}
44542 					break;
44543 				case 6:
44544 					{
44545 					setState(6256);
44546 					match(COLUMN);
44547 					setState(6257);
44548 					match(MASTER);
44549 					setState(6258);
44550 					match(KEY);
44551 					setState(6259);
44552 					match(DEFINITION);
44553 					}
44554 					break;
44555 				case 7:
44556 					{
44557 					setState(6260);
44558 					match(CONTRACT);
44559 					}
44560 					break;
44561 				case 8:
44562 					{
44563 					setState(6261);
44564 					match(DATABASE);
44565 					setState(6271);
44566 					_errHandler.sync(this);
44567 					switch ( getInterpreter().adaptivePredict(_input,736,_ctx) ) {
44568 					case 1:
44569 						{
44570 						setState(6262);
44571 						match(AUDIT);
44572 						}
44573 						break;
44574 					case 2:
44575 						{
44576 						setState(6263);
44577 						match(DDL);
44578 						setState(6264);
44579 						match(TRIGGER);
44580 						}
44581 						break;
44582 					case 3:
44583 						{
44584 						setState(6265);
44585 						match(EVENT);
44586 						setState(6266);
44587 						match(NOTIFICATION);
44588 						}
44589 						break;
44590 					case 4:
44591 						{
44592 						setState(6267);
44593 						match(EVENT);
44594 						setState(6268);
44595 						match(SESSION);
44596 						}
44597 						break;
44598 					case 5:
44599 						{
44600 						setState(6269);
44601 						match(SCOPED);
44602 						setState(6270);
44603 						match(CONFIGURATION);
44604 						}
44605 						break;
44606 					}
44607 					}
44608 					break;
44609 				case 9:
44610 					{
44611 					setState(6273);
44612 					match(DATASPACE);
44613 					}
44614 					break;
44615 				case 10:
44616 					{
44617 					setState(6274);
44618 					match(EVENT);
44619 					setState(6275);
44620 					_la = _input.LA(1);
44621 					if ( !(_la==SESSION || _la==NOTIFICATION) ) {
44622 					_errHandler.recoverInline(this);
44623 					}
44624 					else {
44625 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
44626 						_errHandler.reportMatch(this);
44627 						consume();
44628 					}
44629 					}
44630 					break;
44631 				case 11:
44632 					{
44633 					setState(6276);
44634 					match(EXTERNAL);
44635 					setState(6282);
44636 					_errHandler.sync(this);
44637 					switch (_input.LA(1)) {
44638 					case DATA:
44639 						{
44640 						setState(6277);
44641 						match(DATA);
44642 						setState(6278);
44643 						match(SOURCE);
44644 						}
44645 						break;
44646 					case FILE:
44647 						{
44648 						setState(6279);
44649 						match(FILE);
44650 						setState(6280);
44651 						match(FORMAT);
44652 						}
44653 						break;
44654 					case LIBRARY:
44655 						{
44656 						setState(6281);
44657 						match(LIBRARY);
44658 						}
44659 						break;
44660 					default:
44661 						throw new NoViableAltException(this);
44662 					}
44663 					}
44664 					break;
44665 				case 12:
44666 					{
44667 					setState(6284);
44668 					match(FULLTEXT);
44669 					setState(6285);
44670 					match(CATALOG);
44671 					}
44672 					break;
44673 				case 13:
44674 					{
44675 					setState(6286);
44676 					match(MASK);
44677 					}
44678 					break;
44679 				case 14:
44680 					{
44681 					setState(6287);
44682 					match(MESSAGE);
44683 					setState(6288);
44684 					match(TYPE);
44685 					}
44686 					break;
44687 				case 15:
44688 					{
44689 					setState(6289);
44690 					match(REMOTE);
44691 					setState(6290);
44692 					match(SERVICE);
44693 					setState(6291);
44694 					match(BINDING);
44695 					}
44696 					break;
44697 				case 16:
44698 					{
44699 					setState(6292);
44700 					match(ROLE);
44701 					}
44702 					break;
44703 				case 17:
44704 					{
44705 					setState(6293);
44706 					match(ROUTE);
44707 					}
44708 					break;
44709 				case 18:
44710 					{
44711 					setState(6294);
44712 					match(SERVER);
44713 					setState(6295);
44714 					match(AUDIT);
44715 					}
44716 					break;
44717 				case 19:
44718 					{
44719 					setState(6296);
44720 					match(SCHEMA);
44721 					}
44722 					break;
44723 				case 20:
44724 					{
44725 					setState(6297);
44726 					match(SECURITY);
44727 					setState(6298);
44728 					match(POLICY);
44729 					}
44730 					break;
44731 				case 21:
44732 					{
44733 					setState(6299);
44734 					match(SERVICE);
44735 					}
44736 					break;
44737 				case 22:
44738 					{
44739 					setState(6300);
44740 					match(USER);
44741 					}
44742 					break;
44743 				}
44744 				}
44745 				break;
44746 			case 5:
44747 				enterOuterAlt(_localctx, 5);
44748 				{
44749 				setState(6303);
44750 				match(AUTHENTICATE);
44751 				setState(6305);
44752 				_errHandler.sync(this);
44753 				_la = _input.LA(1);
44754 				if (_la==SERVER) {
44755 					{
44756 					setState(6304);
44757 					match(SERVER);
44758 					}
44759 				}
44760 
44761 				}
44762 				break;
44763 			case 6:
44764 				enterOuterAlt(_localctx, 6);
44765 				{
44766 				setState(6307);
44767 				match(BACKUP);
44768 				setState(6308);
44769 				_la = _input.LA(1);
44770 				if ( !(_la==DATABASE || _la==LOG) ) {
44771 				_errHandler.recoverInline(this);
44772 				}
44773 				else {
44774 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
44775 					_errHandler.reportMatch(this);
44776 					consume();
44777 				}
44778 				}
44779 				break;
44780 			case 7:
44781 				enterOuterAlt(_localctx, 7);
44782 				{
44783 				setState(6309);
44784 				match(CHECKPOINT);
44785 				}
44786 				break;
44787 			case 8:
44788 				enterOuterAlt(_localctx, 8);
44789 				{
44790 				setState(6310);
44791 				match(CONNECT);
44792 				}
44793 				break;
44794 			case 9:
44795 				enterOuterAlt(_localctx, 9);
44796 				{
44797 				setState(6311);
44798 				match(CONNECT);
44799 				setState(6313);
44800 				_errHandler.sync(this);
44801 				_la = _input.LA(1);
44802 				if (_la==REPLICATION) {
44803 					{
44804 					setState(6312);
44805 					match(REPLICATION);
44806 					}
44807 				}
44808 
44809 				}
44810 				break;
44811 			case 10:
44812 				enterOuterAlt(_localctx, 10);
44813 				{
44814 				setState(6315);
44815 				match(CONTROL);
44816 				setState(6317);
44817 				_errHandler.sync(this);
44818 				_la = _input.LA(1);
44819 				if (_la==SERVER) {
44820 					{
44821 					setState(6316);
44822 					match(SERVER);
44823 					}
44824 				}
44825 
44826 				}
44827 				break;
44828 			case 11:
44829 				enterOuterAlt(_localctx, 11);
44830 				{
44831 				setState(6319);
44832 				match(CREATE);
44833 				setState(6356);
44834 				_errHandler.sync(this);
44835 				switch ( getInterpreter().adaptivePredict(_input,743,_ctx) ) {
44836 				case 1:
44837 					{
44838 					setState(6320);
44839 					match(AGGREGATE);
44840 					}
44841 					break;
44842 				case 2:
44843 					{
44844 					setState(6321);
44845 					match(ASSEMBLY);
44846 					}
44847 					break;
44848 				case 3:
44849 					{
44850 					setState(6322);
44851 					_la = _input.LA(1);
44852 					if ( !(_la==SYMMETRIC || _la==ASYMMETRIC) ) {
44853 					_errHandler.recoverInline(this);
44854 					}
44855 					else {
44856 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
44857 						_errHandler.reportMatch(this);
44858 						consume();
44859 					}
44860 					setState(6323);
44861 					match(KEY);
44862 					}
44863 					break;
44864 				case 4:
44865 					{
44866 					setState(6324);
44867 					match(CERTIFICATE);
44868 					}
44869 					break;
44870 				case 5:
44871 					{
44872 					setState(6325);
44873 					match(CONTRACT);
44874 					}
44875 					break;
44876 				case 6:
44877 					{
44878 					setState(6326);
44879 					match(DATABASE);
44880 					}
44881 					break;
44882 				case 7:
44883 					{
44884 					setState(6328);
44885 					_errHandler.sync(this);
44886 					_la = _input.LA(1);
44887 					if (_la==DATABASE) {
44888 						{
44889 						setState(6327);
44890 						match(DATABASE);
44891 						}
44892 					}
44893 
44894 					setState(6330);
44895 					match(DDL);
44896 					setState(6331);
44897 					match(EVENT);
44898 					setState(6332);
44899 					match(NOTIFICATION);
44900 					}
44901 					break;
44902 				case 8:
44903 					{
44904 					setState(6333);
44905 					match(DEFAULT);
44906 					}
44907 					break;
44908 				case 9:
44909 					{
44910 					setState(6334);
44911 					match(FULLTEXT);
44912 					setState(6335);
44913 					match(CATALOG);
44914 					}
44915 					break;
44916 				case 10:
44917 					{
44918 					setState(6336);
44919 					match(FUNCTION);
44920 					}
44921 					break;
44922 				case 11:
44923 					{
44924 					setState(6337);
44925 					match(MESSAGE);
44926 					setState(6338);
44927 					match(TYPE);
44928 					}
44929 					break;
44930 				case 12:
44931 					{
44932 					setState(6339);
44933 					match(PROCEDURE);
44934 					}
44935 					break;
44936 				case 13:
44937 					{
44938 					setState(6340);
44939 					match(QUEUE);
44940 					}
44941 					break;
44942 				case 14:
44943 					{
44944 					setState(6341);
44945 					match(REMOTE);
44946 					setState(6342);
44947 					match(SERVICE);
44948 					setState(6343);
44949 					match(BINDING);
44950 					}
44951 					break;
44952 				case 15:
44953 					{
44954 					setState(6344);
44955 					match(ROLE);
44956 					}
44957 					break;
44958 				case 16:
44959 					{
44960 					setState(6345);
44961 					match(ROUTE);
44962 					}
44963 					break;
44964 				case 17:
44965 					{
44966 					setState(6346);
44967 					match(RULE);
44968 					}
44969 					break;
44970 				case 18:
44971 					{
44972 					setState(6347);
44973 					match(SCHEMA);
44974 					}
44975 					break;
44976 				case 19:
44977 					{
44978 					setState(6348);
44979 					match(SERVICE);
44980 					}
44981 					break;
44982 				case 20:
44983 					{
44984 					setState(6349);
44985 					match(SYNONYM);
44986 					}
44987 					break;
44988 				case 21:
44989 					{
44990 					setState(6350);
44991 					match(TABLE);
44992 					}
44993 					break;
44994 				case 22:
44995 					{
44996 					setState(6351);
44997 					match(TYPE);
44998 					}
44999 					break;
45000 				case 23:
45001 					{
45002 					setState(6352);
45003 					match(VIEW);
45004 					}
45005 					break;
45006 				case 24:
45007 					{
45008 					setState(6353);
45009 					match(XML);
45010 					setState(6354);
45011 					match(SCHEMA);
45012 					setState(6355);
45013 					match(COLLECTION);
45014 					}
45015 					break;
45016 				}
45017 				}
45018 				break;
45019 			case 12:
45020 				enterOuterAlt(_localctx, 12);
45021 				{
45022 				setState(6358);
45023 				match(DELETE);
45024 				}
45025 				break;
45026 			case 13:
45027 				enterOuterAlt(_localctx, 13);
45028 				{
45029 				setState(6359);
45030 				match(EXECUTE);
45031 				}
45032 				break;
45033 			case 14:
45034 				enterOuterAlt(_localctx, 14);
45035 				{
45036 				setState(6360);
45037 				match(EXECUTE);
45038 				setState(6362);
45039 				_errHandler.sync(this);
45040 				_la = _input.LA(1);
45041 				if (_la==ANY) {
45042 					{
45043 					setState(6361);
45044 					match(ANY);
45045 					}
45046 				}
45047 
45048 				setState(6364);
45049 				match(EXTERNAL);
45050 				setState(6365);
45051 				match(SCRIPT);
45052 				}
45053 				break;
45054 			case 15:
45055 				enterOuterAlt(_localctx, 15);
45056 				{
45057 				setState(6366);
45058 				match(INSERT);
45059 				}
45060 				break;
45061 			case 16:
45062 				enterOuterAlt(_localctx, 16);
45063 				{
45064 				setState(6367);
45065 				match(KILL);
45066 				setState(6368);
45067 				match(DATABASE);
45068 				setState(6369);
45069 				match(CONNECTION);
45070 				}
45071 				break;
45072 			case 17:
45073 				enterOuterAlt(_localctx, 17);
45074 				{
45075 				setState(6370);
45076 				match(REFERENCES);
45077 				}
45078 				break;
45079 			case 18:
45080 				enterOuterAlt(_localctx, 18);
45081 				{
45082 				setState(6371);
45083 				match(SELECT);
45084 				}
45085 				break;
45086 			case 19:
45087 				enterOuterAlt(_localctx, 19);
45088 				{
45089 				setState(6372);
45090 				match(SHOWPLAN);
45091 				}
45092 				break;
45093 			case 20:
45094 				enterOuterAlt(_localctx, 20);
45095 				{
45096 				setState(6373);
45097 				match(SUBSCRIBE);
45098 				setState(6374);
45099 				match(QUERY);
45100 				setState(6375);
45101 				match(NOTIFICATIONS);
45102 				}
45103 				break;
45104 			case 21:
45105 				enterOuterAlt(_localctx, 21);
45106 				{
45107 				setState(6376);
45108 				match(TAKE);
45109 				setState(6377);
45110 				match(OWNERSHIP);
45111 				}
45112 				break;
45113 			case 22:
45114 				enterOuterAlt(_localctx, 22);
45115 				{
45116 				setState(6378);
45117 				match(UNMASK);
45118 				}
45119 				break;
45120 			case 23:
45121 				enterOuterAlt(_localctx, 23);
45122 				{
45123 				setState(6379);
45124 				match(UPDATE);
45125 				}
45126 				break;
45127 			case 24:
45128 				enterOuterAlt(_localctx, 24);
45129 				{
45130 				setState(6380);
45131 				match(VIEW);
45132 				setState(6381);
45133 				match(ANY);
45134 				setState(6382);
45135 				match(COLUMN);
45136 				setState(6383);
45137 				_la = _input.LA(1);
45138 				if ( !(_la==ENCRYPTION || _la==MASTER) ) {
45139 				_errHandler.recoverInline(this);
45140 				}
45141 				else {
45142 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
45143 					_errHandler.reportMatch(this);
45144 					consume();
45145 				}
45146 				setState(6384);
45147 				match(KEY);
45148 				setState(6385);
45149 				match(DEFINITION);
45150 				}
45151 				break;
45152 			case 25:
45153 				enterOuterAlt(_localctx, 25);
45154 				{
45155 				setState(6386);
45156 				match(CREATE);
45157 				setState(6387);
45158 				match(ANY);
45159 				setState(6391);
45160 				_errHandler.sync(this);
45161 				switch (_input.LA(1)) {
45162 				case DATABASE:
45163 					{
45164 					setState(6388);
45165 					match(DATABASE);
45166 					}
45167 					break;
45168 				case EXTERNAL:
45169 					{
45170 					setState(6389);
45171 					match(EXTERNAL);
45172 					setState(6390);
45173 					match(LIBRARY);
45174 					}
45175 					break;
45176 				default:
45177 					throw new NoViableAltException(this);
45178 				}
45179 				}
45180 				break;
45181 			case 26:
45182 				enterOuterAlt(_localctx, 26);
45183 				{
45184 				setState(6393);
45185 				match(VIEW);
45186 				setState(6394);
45187 				_la = _input.LA(1);
45188 				if ( !(_la==DATABASE || _la==SERVER) ) {
45189 				_errHandler.recoverInline(this);
45190 				}
45191 				else {
45192 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
45193 					_errHandler.reportMatch(this);
45194 					consume();
45195 				}
45196 				setState(6395);
45197 				match(STATE);
45198 				}
45199 				break;
45200 			case 27:
45201 				enterOuterAlt(_localctx, 27);
45202 				{
45203 				setState(6396);
45204 				match(VIEW);
45205 				setState(6398);
45206 				_errHandler.sync(this);
45207 				_la = _input.LA(1);
45208 				if (_la==ANY) {
45209 					{
45210 					setState(6397);
45211 					match(ANY);
45212 					}
45213 				}
45214 
45215 				setState(6400);
45216 				match(DEFINITION);
45217 				}
45218 				break;
45219 			case 28:
45220 				enterOuterAlt(_localctx, 28);
45221 				{
45222 				}
45223 				break;
45224 			}
45225 		}
45226 		catch (RecognitionException re) {
45227 			_localctx.exception = re;
45228 			_errHandler.reportError(this, re);
45229 			_errHandler.recover(this, re);
45230 		}
45231 		finally {
45232 			exitRule();
45233 		}
45234 		return _localctx;
45235 	}
45236 
45237 	public static class DatabasePrincipalPermissionContext extends ParserRuleContext {
45238 		public DatabaseUserPermissionContext databaseUserPermission() {
45239 			return getRuleContext(DatabaseUserPermissionContext.class,0);
45240 		}
45241 		public DatabaseRolePermissionContext databaseRolePermission() {
45242 			return getRuleContext(DatabaseRolePermissionContext.class,0);
45243 		}
45244 		public ApplicationRolePermissionContext applicationRolePermission() {
45245 			return getRuleContext(ApplicationRolePermissionContext.class,0);
45246 		}
45247 		public DatabasePrincipalPermissionContext(ParserRuleContext parent, int invokingState) {
45248 			super(parent, invokingState);
45249 		}
45250 		@Override public int getRuleIndex() { return RULE_databasePrincipalPermission; }
45251 		@Override
45252 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45253 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabasePrincipalPermission(this);
45254 			else return visitor.visitChildren(this);
45255 		}
45256 	}
45257 
45258 	public final DatabasePrincipalPermissionContext databasePrincipalPermission() throws RecognitionException {
45259 		DatabasePrincipalPermissionContext _localctx = new DatabasePrincipalPermissionContext(_ctx, getState());
45260 		enterRule(_localctx, 862, RULE_databasePrincipalPermission);
45261 		try {
45262 			setState(6407);
45263 			_errHandler.sync(this);
45264 			switch ( getInterpreter().adaptivePredict(_input,748,_ctx) ) {
45265 			case 1:
45266 				enterOuterAlt(_localctx, 1);
45267 				{
45268 				setState(6404);
45269 				databaseUserPermission();
45270 				}
45271 				break;
45272 			case 2:
45273 				enterOuterAlt(_localctx, 2);
45274 				{
45275 				setState(6405);
45276 				databaseRolePermission();
45277 				}
45278 				break;
45279 			case 3:
45280 				enterOuterAlt(_localctx, 3);
45281 				{
45282 				setState(6406);
45283 				applicationRolePermission();
45284 				}
45285 				break;
45286 			}
45287 		}
45288 		catch (RecognitionException re) {
45289 			_localctx.exception = re;
45290 			_errHandler.reportError(this, re);
45291 			_errHandler.recover(this, re);
45292 		}
45293 		finally {
45294 			exitRule();
45295 		}
45296 		return _localctx;
45297 	}
45298 
45299 	public static class DatabaseUserPermissionContext extends ParserRuleContext {
45300 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45301 		public TerminalNode IMPERSONATE() { return getToken(SQLServerStatementParser.IMPERSONATE, 0); }
45302 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45303 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45304 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45305 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45306 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
45307 		public DatabaseUserPermissionContext(ParserRuleContext parent, int invokingState) {
45308 			super(parent, invokingState);
45309 		}
45310 		@Override public int getRuleIndex() { return RULE_databaseUserPermission; }
45311 		@Override
45312 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45313 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseUserPermission(this);
45314 			else return visitor.visitChildren(this);
45315 		}
45316 	}
45317 
45318 	public final DatabaseUserPermissionContext databaseUserPermission() throws RecognitionException {
45319 		DatabaseUserPermissionContext _localctx = new DatabaseUserPermissionContext(_ctx, getState());
45320 		enterRule(_localctx, 864, RULE_databaseUserPermission);
45321 		try {
45322 			setState(6417);
45323 			_errHandler.sync(this);
45324 			switch ( getInterpreter().adaptivePredict(_input,749,_ctx) ) {
45325 			case 1:
45326 				enterOuterAlt(_localctx, 1);
45327 				{
45328 				setState(6409);
45329 				match(CONTROL);
45330 				}
45331 				break;
45332 			case 2:
45333 				enterOuterAlt(_localctx, 2);
45334 				{
45335 				setState(6410);
45336 				match(IMPERSONATE);
45337 				}
45338 				break;
45339 			case 3:
45340 				enterOuterAlt(_localctx, 3);
45341 				{
45342 				setState(6411);
45343 				match(ALTER);
45344 				}
45345 				break;
45346 			case 4:
45347 				enterOuterAlt(_localctx, 4);
45348 				{
45349 				setState(6412);
45350 				match(VIEW);
45351 				setState(6413);
45352 				match(DEFINITION);
45353 				}
45354 				break;
45355 			case 5:
45356 				enterOuterAlt(_localctx, 5);
45357 				{
45358 				setState(6414);
45359 				match(ALTER);
45360 				setState(6415);
45361 				match(ANY);
45362 				setState(6416);
45363 				match(USER);
45364 				}
45365 				break;
45366 			}
45367 		}
45368 		catch (RecognitionException re) {
45369 			_localctx.exception = re;
45370 			_errHandler.reportError(this, re);
45371 			_errHandler.recover(this, re);
45372 		}
45373 		finally {
45374 			exitRule();
45375 		}
45376 		return _localctx;
45377 	}
45378 
45379 	public static class DatabaseRolePermissionContext extends ParserRuleContext {
45380 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45381 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45382 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45383 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45384 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45385 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45386 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45387 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
45388 		public DatabaseRolePermissionContext(ParserRuleContext parent, int invokingState) {
45389 			super(parent, invokingState);
45390 		}
45391 		@Override public int getRuleIndex() { return RULE_databaseRolePermission; }
45392 		@Override
45393 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45394 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseRolePermission(this);
45395 			else return visitor.visitChildren(this);
45396 		}
45397 	}
45398 
45399 	public final DatabaseRolePermissionContext databaseRolePermission() throws RecognitionException {
45400 		DatabaseRolePermissionContext _localctx = new DatabaseRolePermissionContext(_ctx, getState());
45401 		enterRule(_localctx, 866, RULE_databaseRolePermission);
45402 		try {
45403 			setState(6428);
45404 			_errHandler.sync(this);
45405 			switch ( getInterpreter().adaptivePredict(_input,750,_ctx) ) {
45406 			case 1:
45407 				enterOuterAlt(_localctx, 1);
45408 				{
45409 				setState(6419);
45410 				match(CONTROL);
45411 				}
45412 				break;
45413 			case 2:
45414 				enterOuterAlt(_localctx, 2);
45415 				{
45416 				setState(6420);
45417 				match(TAKE);
45418 				setState(6421);
45419 				match(OWNERSHIP);
45420 				}
45421 				break;
45422 			case 3:
45423 				enterOuterAlt(_localctx, 3);
45424 				{
45425 				setState(6422);
45426 				match(ALTER);
45427 				}
45428 				break;
45429 			case 4:
45430 				enterOuterAlt(_localctx, 4);
45431 				{
45432 				setState(6423);
45433 				match(VIEW);
45434 				setState(6424);
45435 				match(DEFINITION);
45436 				}
45437 				break;
45438 			case 5:
45439 				enterOuterAlt(_localctx, 5);
45440 				{
45441 				setState(6425);
45442 				match(ALTER);
45443 				setState(6426);
45444 				match(ANY);
45445 				setState(6427);
45446 				match(ROLE);
45447 				}
45448 				break;
45449 			}
45450 		}
45451 		catch (RecognitionException re) {
45452 			_localctx.exception = re;
45453 			_errHandler.reportError(this, re);
45454 			_errHandler.recover(this, re);
45455 		}
45456 		finally {
45457 			exitRule();
45458 		}
45459 		return _localctx;
45460 	}
45461 
45462 	public static class ApplicationRolePermissionContext extends ParserRuleContext {
45463 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45464 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45465 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45466 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45467 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45468 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
45469 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
45470 		public ApplicationRolePermissionContext(ParserRuleContext parent, int invokingState) {
45471 			super(parent, invokingState);
45472 		}
45473 		@Override public int getRuleIndex() { return RULE_applicationRolePermission; }
45474 		@Override
45475 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45476 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitApplicationRolePermission(this);
45477 			else return visitor.visitChildren(this);
45478 		}
45479 	}
45480 
45481 	public final ApplicationRolePermissionContext applicationRolePermission() throws RecognitionException {
45482 		ApplicationRolePermissionContext _localctx = new ApplicationRolePermissionContext(_ctx, getState());
45483 		enterRule(_localctx, 868, RULE_applicationRolePermission);
45484 		try {
45485 			setState(6438);
45486 			_errHandler.sync(this);
45487 			switch ( getInterpreter().adaptivePredict(_input,751,_ctx) ) {
45488 			case 1:
45489 				enterOuterAlt(_localctx, 1);
45490 				{
45491 				setState(6430);
45492 				match(CONTROL);
45493 				}
45494 				break;
45495 			case 2:
45496 				enterOuterAlt(_localctx, 2);
45497 				{
45498 				setState(6431);
45499 				match(ALTER);
45500 				}
45501 				break;
45502 			case 3:
45503 				enterOuterAlt(_localctx, 3);
45504 				{
45505 				setState(6432);
45506 				match(VIEW);
45507 				setState(6433);
45508 				match(DEFINITION);
45509 				}
45510 				break;
45511 			case 4:
45512 				enterOuterAlt(_localctx, 4);
45513 				{
45514 				setState(6434);
45515 				match(ALTER);
45516 				setState(6435);
45517 				match(ANY);
45518 				setState(6436);
45519 				match(APPLICATION);
45520 				setState(6437);
45521 				match(ROLE);
45522 				}
45523 				break;
45524 			}
45525 		}
45526 		catch (RecognitionException re) {
45527 			_localctx.exception = re;
45528 			_errHandler.reportError(this, re);
45529 			_errHandler.recover(this, re);
45530 		}
45531 		finally {
45532 			exitRule();
45533 		}
45534 		return _localctx;
45535 	}
45536 
45537 	public static class DatabaseScopedCredentialPermissionContext extends ParserRuleContext {
45538 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45539 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45540 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45541 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45542 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45543 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45544 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45545 		public DatabaseScopedCredentialPermissionContext(ParserRuleContext parent, int invokingState) {
45546 			super(parent, invokingState);
45547 		}
45548 		@Override public int getRuleIndex() { return RULE_databaseScopedCredentialPermission; }
45549 		@Override
45550 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45551 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDatabaseScopedCredentialPermission(this);
45552 			else return visitor.visitChildren(this);
45553 		}
45554 	}
45555 
45556 	public final DatabaseScopedCredentialPermissionContext databaseScopedCredentialPermission() throws RecognitionException {
45557 		DatabaseScopedCredentialPermissionContext _localctx = new DatabaseScopedCredentialPermissionContext(_ctx, getState());
45558 		enterRule(_localctx, 870, RULE_databaseScopedCredentialPermission);
45559 		try {
45560 			setState(6447);
45561 			_errHandler.sync(this);
45562 			switch (_input.LA(1)) {
45563 			case CONTROL:
45564 				enterOuterAlt(_localctx, 1);
45565 				{
45566 				setState(6440);
45567 				match(CONTROL);
45568 				}
45569 				break;
45570 			case TAKE:
45571 				enterOuterAlt(_localctx, 2);
45572 				{
45573 				setState(6441);
45574 				match(TAKE);
45575 				setState(6442);
45576 				match(OWNERSHIP);
45577 				}
45578 				break;
45579 			case ALTER:
45580 				enterOuterAlt(_localctx, 3);
45581 				{
45582 				setState(6443);
45583 				match(ALTER);
45584 				}
45585 				break;
45586 			case REFERENCES:
45587 				enterOuterAlt(_localctx, 4);
45588 				{
45589 				setState(6444);
45590 				match(REFERENCES);
45591 				}
45592 				break;
45593 			case VIEW:
45594 				enterOuterAlt(_localctx, 5);
45595 				{
45596 				setState(6445);
45597 				match(VIEW);
45598 				setState(6446);
45599 				match(DEFINITION);
45600 				}
45601 				break;
45602 			default:
45603 				throw new NoViableAltException(this);
45604 			}
45605 		}
45606 		catch (RecognitionException re) {
45607 			_localctx.exception = re;
45608 			_errHandler.reportError(this, re);
45609 			_errHandler.recover(this, re);
45610 		}
45611 		finally {
45612 			exitRule();
45613 		}
45614 		return _localctx;
45615 	}
45616 
45617 	public static class SchemaPermissionContext extends ParserRuleContext {
45618 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45619 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45620 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
45621 		public TerminalNode SEQUENCE() { return getToken(SQLServerStatementParser.SEQUENCE, 0); }
45622 		public TerminalNode DELETE() { return getToken(SQLServerStatementParser.DELETE, 0); }
45623 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
45624 		public TerminalNode INSERT() { return getToken(SQLServerStatementParser.INSERT, 0); }
45625 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45626 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
45627 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45628 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45629 		public TerminalNode UPDATE() { return getToken(SQLServerStatementParser.UPDATE, 0); }
45630 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45631 		public TerminalNode CHANGE() { return getToken(SQLServerStatementParser.CHANGE, 0); }
45632 		public TerminalNode TRACKING() { return getToken(SQLServerStatementParser.TRACKING, 0); }
45633 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45634 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45635 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
45636 		public SchemaPermissionContext(ParserRuleContext parent, int invokingState) {
45637 			super(parent, invokingState);
45638 		}
45639 		@Override public int getRuleIndex() { return RULE_schemaPermission; }
45640 		@Override
45641 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45642 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSchemaPermission(this);
45643 			else return visitor.visitChildren(this);
45644 		}
45645 	}
45646 
45647 	public final SchemaPermissionContext schemaPermission() throws RecognitionException {
45648 		SchemaPermissionContext _localctx = new SchemaPermissionContext(_ctx, getState());
45649 		enterRule(_localctx, 872, RULE_schemaPermission);
45650 		try {
45651 			setState(6469);
45652 			_errHandler.sync(this);
45653 			switch ( getInterpreter().adaptivePredict(_input,753,_ctx) ) {
45654 			case 1:
45655 				enterOuterAlt(_localctx, 1);
45656 				{
45657 				setState(6449);
45658 				match(ALTER);
45659 				}
45660 				break;
45661 			case 2:
45662 				enterOuterAlt(_localctx, 2);
45663 				{
45664 				setState(6450);
45665 				match(CONTROL);
45666 				}
45667 				break;
45668 			case 3:
45669 				enterOuterAlt(_localctx, 3);
45670 				{
45671 				setState(6451);
45672 				match(CREATE);
45673 				setState(6452);
45674 				match(SEQUENCE);
45675 				}
45676 				break;
45677 			case 4:
45678 				enterOuterAlt(_localctx, 4);
45679 				{
45680 				setState(6453);
45681 				match(DELETE);
45682 				}
45683 				break;
45684 			case 5:
45685 				enterOuterAlt(_localctx, 5);
45686 				{
45687 				setState(6454);
45688 				match(EXECUTE);
45689 				}
45690 				break;
45691 			case 6:
45692 				enterOuterAlt(_localctx, 6);
45693 				{
45694 				setState(6455);
45695 				match(INSERT);
45696 				}
45697 				break;
45698 			case 7:
45699 				enterOuterAlt(_localctx, 7);
45700 				{
45701 				setState(6456);
45702 				match(REFERENCES);
45703 				}
45704 				break;
45705 			case 8:
45706 				enterOuterAlt(_localctx, 8);
45707 				{
45708 				setState(6457);
45709 				match(SELECT);
45710 				}
45711 				break;
45712 			case 9:
45713 				enterOuterAlt(_localctx, 9);
45714 				{
45715 				setState(6458);
45716 				match(TAKE);
45717 				setState(6459);
45718 				match(OWNERSHIP);
45719 				}
45720 				break;
45721 			case 10:
45722 				enterOuterAlt(_localctx, 10);
45723 				{
45724 				setState(6460);
45725 				match(UPDATE);
45726 				}
45727 				break;
45728 			case 11:
45729 				enterOuterAlt(_localctx, 11);
45730 				{
45731 				setState(6461);
45732 				match(VIEW);
45733 				setState(6462);
45734 				match(CHANGE);
45735 				setState(6463);
45736 				match(TRACKING);
45737 				}
45738 				break;
45739 			case 12:
45740 				enterOuterAlt(_localctx, 12);
45741 				{
45742 				setState(6464);
45743 				match(VIEW);
45744 				setState(6465);
45745 				match(DEFINITION);
45746 				}
45747 				break;
45748 			case 13:
45749 				enterOuterAlt(_localctx, 13);
45750 				{
45751 				setState(6466);
45752 				match(ALTER);
45753 				setState(6467);
45754 				match(ANY);
45755 				setState(6468);
45756 				match(SCHEMA);
45757 				}
45758 				break;
45759 			}
45760 		}
45761 		catch (RecognitionException re) {
45762 			_localctx.exception = re;
45763 			_errHandler.reportError(this, re);
45764 			_errHandler.recover(this, re);
45765 		}
45766 		finally {
45767 			exitRule();
45768 		}
45769 		return _localctx;
45770 	}
45771 
45772 	public static class SearchPropertyListPermissionContext extends ParserRuleContext {
45773 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45774 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45775 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45776 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45777 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45778 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45779 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45780 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45781 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
45782 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
45783 		public SearchPropertyListPermissionContext(ParserRuleContext parent, int invokingState) {
45784 			super(parent, invokingState);
45785 		}
45786 		@Override public int getRuleIndex() { return RULE_searchPropertyListPermission; }
45787 		@Override
45788 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45789 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSearchPropertyListPermission(this);
45790 			else return visitor.visitChildren(this);
45791 		}
45792 	}
45793 
45794 	public final SearchPropertyListPermissionContext searchPropertyListPermission() throws RecognitionException {
45795 		SearchPropertyListPermissionContext _localctx = new SearchPropertyListPermissionContext(_ctx, getState());
45796 		enterRule(_localctx, 874, RULE_searchPropertyListPermission);
45797 		try {
45798 			setState(6482);
45799 			_errHandler.sync(this);
45800 			switch ( getInterpreter().adaptivePredict(_input,754,_ctx) ) {
45801 			case 1:
45802 				enterOuterAlt(_localctx, 1);
45803 				{
45804 				setState(6471);
45805 				match(ALTER);
45806 				}
45807 				break;
45808 			case 2:
45809 				enterOuterAlt(_localctx, 2);
45810 				{
45811 				setState(6472);
45812 				match(CONTROL);
45813 				}
45814 				break;
45815 			case 3:
45816 				enterOuterAlt(_localctx, 3);
45817 				{
45818 				setState(6473);
45819 				match(REFERENCES);
45820 				}
45821 				break;
45822 			case 4:
45823 				enterOuterAlt(_localctx, 4);
45824 				{
45825 				setState(6474);
45826 				match(TAKE);
45827 				setState(6475);
45828 				match(OWNERSHIP);
45829 				}
45830 				break;
45831 			case 5:
45832 				enterOuterAlt(_localctx, 5);
45833 				{
45834 				setState(6476);
45835 				match(VIEW);
45836 				setState(6477);
45837 				match(DEFINITION);
45838 				}
45839 				break;
45840 			case 6:
45841 				enterOuterAlt(_localctx, 6);
45842 				{
45843 				setState(6478);
45844 				match(ALTER);
45845 				setState(6479);
45846 				match(ANY);
45847 				setState(6480);
45848 				match(FULLTEXT);
45849 				setState(6481);
45850 				match(CATALOG);
45851 				}
45852 				break;
45853 			}
45854 		}
45855 		catch (RecognitionException re) {
45856 			_localctx.exception = re;
45857 			_errHandler.reportError(this, re);
45858 			_errHandler.recover(this, re);
45859 		}
45860 		finally {
45861 			exitRule();
45862 		}
45863 		return _localctx;
45864 	}
45865 
45866 	public static class ServiceBrokerPermissionContext extends ParserRuleContext {
45867 		public ServiceBrokerContractsPermissionContext serviceBrokerContractsPermission() {
45868 			return getRuleContext(ServiceBrokerContractsPermissionContext.class,0);
45869 		}
45870 		public ServiceBrokerMessageTypesPermissionContext serviceBrokerMessageTypesPermission() {
45871 			return getRuleContext(ServiceBrokerMessageTypesPermissionContext.class,0);
45872 		}
45873 		public ServiceBrokerRemoteServiceBindingsPermissionContext serviceBrokerRemoteServiceBindingsPermission() {
45874 			return getRuleContext(ServiceBrokerRemoteServiceBindingsPermissionContext.class,0);
45875 		}
45876 		public ServiceBrokerRoutesPermissionContext serviceBrokerRoutesPermission() {
45877 			return getRuleContext(ServiceBrokerRoutesPermissionContext.class,0);
45878 		}
45879 		public ServiceBrokerServicesPermissionContext serviceBrokerServicesPermission() {
45880 			return getRuleContext(ServiceBrokerServicesPermissionContext.class,0);
45881 		}
45882 		public ServiceBrokerPermissionContext(ParserRuleContext parent, int invokingState) {
45883 			super(parent, invokingState);
45884 		}
45885 		@Override public int getRuleIndex() { return RULE_serviceBrokerPermission; }
45886 		@Override
45887 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45888 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerPermission(this);
45889 			else return visitor.visitChildren(this);
45890 		}
45891 	}
45892 
45893 	public final ServiceBrokerPermissionContext serviceBrokerPermission() throws RecognitionException {
45894 		ServiceBrokerPermissionContext _localctx = new ServiceBrokerPermissionContext(_ctx, getState());
45895 		enterRule(_localctx, 876, RULE_serviceBrokerPermission);
45896 		try {
45897 			setState(6489);
45898 			_errHandler.sync(this);
45899 			switch ( getInterpreter().adaptivePredict(_input,755,_ctx) ) {
45900 			case 1:
45901 				enterOuterAlt(_localctx, 1);
45902 				{
45903 				setState(6484);
45904 				serviceBrokerContractsPermission();
45905 				}
45906 				break;
45907 			case 2:
45908 				enterOuterAlt(_localctx, 2);
45909 				{
45910 				setState(6485);
45911 				serviceBrokerMessageTypesPermission();
45912 				}
45913 				break;
45914 			case 3:
45915 				enterOuterAlt(_localctx, 3);
45916 				{
45917 				setState(6486);
45918 				serviceBrokerRemoteServiceBindingsPermission();
45919 				}
45920 				break;
45921 			case 4:
45922 				enterOuterAlt(_localctx, 4);
45923 				{
45924 				setState(6487);
45925 				serviceBrokerRoutesPermission();
45926 				}
45927 				break;
45928 			case 5:
45929 				enterOuterAlt(_localctx, 5);
45930 				{
45931 				setState(6488);
45932 				serviceBrokerServicesPermission();
45933 				}
45934 				break;
45935 			}
45936 		}
45937 		catch (RecognitionException re) {
45938 			_localctx.exception = re;
45939 			_errHandler.reportError(this, re);
45940 			_errHandler.recover(this, re);
45941 		}
45942 		finally {
45943 			exitRule();
45944 		}
45945 		return _localctx;
45946 	}
45947 
45948 	public static class ServiceBrokerContractsPermissionContext extends ParserRuleContext {
45949 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
45950 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
45951 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
45952 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
45953 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
45954 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
45955 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
45956 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
45957 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
45958 		public ServiceBrokerContractsPermissionContext(ParserRuleContext parent, int invokingState) {
45959 			super(parent, invokingState);
45960 		}
45961 		@Override public int getRuleIndex() { return RULE_serviceBrokerContractsPermission; }
45962 		@Override
45963 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
45964 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerContractsPermission(this);
45965 			else return visitor.visitChildren(this);
45966 		}
45967 	}
45968 
45969 	public final ServiceBrokerContractsPermissionContext serviceBrokerContractsPermission() throws RecognitionException {
45970 		ServiceBrokerContractsPermissionContext _localctx = new ServiceBrokerContractsPermissionContext(_ctx, getState());
45971 		enterRule(_localctx, 878, RULE_serviceBrokerContractsPermission);
45972 		try {
45973 			setState(6501);
45974 			_errHandler.sync(this);
45975 			switch ( getInterpreter().adaptivePredict(_input,756,_ctx) ) {
45976 			case 1:
45977 				enterOuterAlt(_localctx, 1);
45978 				{
45979 				setState(6491);
45980 				match(CONTROL);
45981 				}
45982 				break;
45983 			case 2:
45984 				enterOuterAlt(_localctx, 2);
45985 				{
45986 				setState(6492);
45987 				match(TAKE);
45988 				setState(6493);
45989 				match(OWNERSHIP);
45990 				}
45991 				break;
45992 			case 3:
45993 				enterOuterAlt(_localctx, 3);
45994 				{
45995 				setState(6494);
45996 				match(ALTER);
45997 				}
45998 				break;
45999 			case 4:
46000 				enterOuterAlt(_localctx, 4);
46001 				{
46002 				setState(6495);
46003 				match(REFERENCES);
46004 				}
46005 				break;
46006 			case 5:
46007 				enterOuterAlt(_localctx, 5);
46008 				{
46009 				setState(6496);
46010 				match(VIEW);
46011 				setState(6497);
46012 				match(DEFINITION);
46013 				}
46014 				break;
46015 			case 6:
46016 				enterOuterAlt(_localctx, 6);
46017 				{
46018 				setState(6498);
46019 				match(ALTER);
46020 				setState(6499);
46021 				match(ANY);
46022 				setState(6500);
46023 				match(CONTRACT);
46024 				}
46025 				break;
46026 			}
46027 		}
46028 		catch (RecognitionException re) {
46029 			_localctx.exception = re;
46030 			_errHandler.reportError(this, re);
46031 			_errHandler.recover(this, re);
46032 		}
46033 		finally {
46034 			exitRule();
46035 		}
46036 		return _localctx;
46037 	}
46038 
46039 	public static class ServiceBrokerMessageTypesPermissionContext extends ParserRuleContext {
46040 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46041 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46042 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46043 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46044 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
46045 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46046 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46047 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46048 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
46049 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
46050 		public ServiceBrokerMessageTypesPermissionContext(ParserRuleContext parent, int invokingState) {
46051 			super(parent, invokingState);
46052 		}
46053 		@Override public int getRuleIndex() { return RULE_serviceBrokerMessageTypesPermission; }
46054 		@Override
46055 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46056 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerMessageTypesPermission(this);
46057 			else return visitor.visitChildren(this);
46058 		}
46059 	}
46060 
46061 	public final ServiceBrokerMessageTypesPermissionContext serviceBrokerMessageTypesPermission() throws RecognitionException {
46062 		ServiceBrokerMessageTypesPermissionContext _localctx = new ServiceBrokerMessageTypesPermissionContext(_ctx, getState());
46063 		enterRule(_localctx, 880, RULE_serviceBrokerMessageTypesPermission);
46064 		try {
46065 			setState(6514);
46066 			_errHandler.sync(this);
46067 			switch ( getInterpreter().adaptivePredict(_input,757,_ctx) ) {
46068 			case 1:
46069 				enterOuterAlt(_localctx, 1);
46070 				{
46071 				setState(6503);
46072 				match(CONTROL);
46073 				}
46074 				break;
46075 			case 2:
46076 				enterOuterAlt(_localctx, 2);
46077 				{
46078 				setState(6504);
46079 				match(TAKE);
46080 				setState(6505);
46081 				match(OWNERSHIP);
46082 				}
46083 				break;
46084 			case 3:
46085 				enterOuterAlt(_localctx, 3);
46086 				{
46087 				setState(6506);
46088 				match(ALTER);
46089 				}
46090 				break;
46091 			case 4:
46092 				enterOuterAlt(_localctx, 4);
46093 				{
46094 				setState(6507);
46095 				match(REFERENCES);
46096 				}
46097 				break;
46098 			case 5:
46099 				enterOuterAlt(_localctx, 5);
46100 				{
46101 				setState(6508);
46102 				match(VIEW);
46103 				setState(6509);
46104 				match(DEFINITION);
46105 				}
46106 				break;
46107 			case 6:
46108 				enterOuterAlt(_localctx, 6);
46109 				{
46110 				setState(6510);
46111 				match(ALTER);
46112 				setState(6511);
46113 				match(ANY);
46114 				setState(6512);
46115 				match(MESSAGE);
46116 				setState(6513);
46117 				match(TYPE);
46118 				}
46119 				break;
46120 			}
46121 		}
46122 		catch (RecognitionException re) {
46123 			_localctx.exception = re;
46124 			_errHandler.reportError(this, re);
46125 			_errHandler.recover(this, re);
46126 		}
46127 		finally {
46128 			exitRule();
46129 		}
46130 		return _localctx;
46131 	}
46132 
46133 	public static class ServiceBrokerRemoteServiceBindingsPermissionContext extends ParserRuleContext {
46134 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46135 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46136 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46137 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46138 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46139 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46140 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46141 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
46142 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
46143 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
46144 		public ServiceBrokerRemoteServiceBindingsPermissionContext(ParserRuleContext parent, int invokingState) {
46145 			super(parent, invokingState);
46146 		}
46147 		@Override public int getRuleIndex() { return RULE_serviceBrokerRemoteServiceBindingsPermission; }
46148 		@Override
46149 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46150 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerRemoteServiceBindingsPermission(this);
46151 			else return visitor.visitChildren(this);
46152 		}
46153 	}
46154 
46155 	public final ServiceBrokerRemoteServiceBindingsPermissionContext serviceBrokerRemoteServiceBindingsPermission() throws RecognitionException {
46156 		ServiceBrokerRemoteServiceBindingsPermissionContext _localctx = new ServiceBrokerRemoteServiceBindingsPermissionContext(_ctx, getState());
46157 		enterRule(_localctx, 882, RULE_serviceBrokerRemoteServiceBindingsPermission);
46158 		try {
46159 			setState(6527);
46160 			_errHandler.sync(this);
46161 			switch ( getInterpreter().adaptivePredict(_input,758,_ctx) ) {
46162 			case 1:
46163 				enterOuterAlt(_localctx, 1);
46164 				{
46165 				setState(6516);
46166 				match(CONTROL);
46167 				}
46168 				break;
46169 			case 2:
46170 				enterOuterAlt(_localctx, 2);
46171 				{
46172 				setState(6517);
46173 				match(TAKE);
46174 				setState(6518);
46175 				match(OWNERSHIP);
46176 				}
46177 				break;
46178 			case 3:
46179 				enterOuterAlt(_localctx, 3);
46180 				{
46181 				setState(6519);
46182 				match(ALTER);
46183 				}
46184 				break;
46185 			case 4:
46186 				enterOuterAlt(_localctx, 4);
46187 				{
46188 				setState(6520);
46189 				match(VIEW);
46190 				setState(6521);
46191 				match(DEFINITION);
46192 				}
46193 				break;
46194 			case 5:
46195 				enterOuterAlt(_localctx, 5);
46196 				{
46197 				setState(6522);
46198 				match(ALTER);
46199 				setState(6523);
46200 				match(ANY);
46201 				setState(6524);
46202 				match(REMOTE);
46203 				setState(6525);
46204 				match(SERVICE);
46205 				setState(6526);
46206 				match(BINDING);
46207 				}
46208 				break;
46209 			}
46210 		}
46211 		catch (RecognitionException re) {
46212 			_localctx.exception = re;
46213 			_errHandler.reportError(this, re);
46214 			_errHandler.recover(this, re);
46215 		}
46216 		finally {
46217 			exitRule();
46218 		}
46219 		return _localctx;
46220 	}
46221 
46222 	public static class ServiceBrokerRoutesPermissionContext extends ParserRuleContext {
46223 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46224 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46225 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46226 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46227 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46228 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46229 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46230 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
46231 		public ServiceBrokerRoutesPermissionContext(ParserRuleContext parent, int invokingState) {
46232 			super(parent, invokingState);
46233 		}
46234 		@Override public int getRuleIndex() { return RULE_serviceBrokerRoutesPermission; }
46235 		@Override
46236 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46237 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerRoutesPermission(this);
46238 			else return visitor.visitChildren(this);
46239 		}
46240 	}
46241 
46242 	public final ServiceBrokerRoutesPermissionContext serviceBrokerRoutesPermission() throws RecognitionException {
46243 		ServiceBrokerRoutesPermissionContext _localctx = new ServiceBrokerRoutesPermissionContext(_ctx, getState());
46244 		enterRule(_localctx, 884, RULE_serviceBrokerRoutesPermission);
46245 		try {
46246 			setState(6538);
46247 			_errHandler.sync(this);
46248 			switch ( getInterpreter().adaptivePredict(_input,759,_ctx) ) {
46249 			case 1:
46250 				enterOuterAlt(_localctx, 1);
46251 				{
46252 				setState(6529);
46253 				match(CONTROL);
46254 				}
46255 				break;
46256 			case 2:
46257 				enterOuterAlt(_localctx, 2);
46258 				{
46259 				setState(6530);
46260 				match(TAKE);
46261 				setState(6531);
46262 				match(OWNERSHIP);
46263 				}
46264 				break;
46265 			case 3:
46266 				enterOuterAlt(_localctx, 3);
46267 				{
46268 				setState(6532);
46269 				match(ALTER);
46270 				}
46271 				break;
46272 			case 4:
46273 				enterOuterAlt(_localctx, 4);
46274 				{
46275 				setState(6533);
46276 				match(VIEW);
46277 				setState(6534);
46278 				match(DEFINITION);
46279 				}
46280 				break;
46281 			case 5:
46282 				enterOuterAlt(_localctx, 5);
46283 				{
46284 				setState(6535);
46285 				match(ALTER);
46286 				setState(6536);
46287 				match(ANY);
46288 				setState(6537);
46289 				match(ROUTE);
46290 				}
46291 				break;
46292 			}
46293 		}
46294 		catch (RecognitionException re) {
46295 			_localctx.exception = re;
46296 			_errHandler.reportError(this, re);
46297 			_errHandler.recover(this, re);
46298 		}
46299 		finally {
46300 			exitRule();
46301 		}
46302 		return _localctx;
46303 	}
46304 
46305 	public static class ServiceBrokerServicesPermissionContext extends ParserRuleContext {
46306 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46307 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46308 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46309 		public TerminalNode SEND() { return getToken(SQLServerStatementParser.SEND, 0); }
46310 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46311 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46312 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46313 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46314 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
46315 		public ServiceBrokerServicesPermissionContext(ParserRuleContext parent, int invokingState) {
46316 			super(parent, invokingState);
46317 		}
46318 		@Override public int getRuleIndex() { return RULE_serviceBrokerServicesPermission; }
46319 		@Override
46320 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46321 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitServiceBrokerServicesPermission(this);
46322 			else return visitor.visitChildren(this);
46323 		}
46324 	}
46325 
46326 	public final ServiceBrokerServicesPermissionContext serviceBrokerServicesPermission() throws RecognitionException {
46327 		ServiceBrokerServicesPermissionContext _localctx = new ServiceBrokerServicesPermissionContext(_ctx, getState());
46328 		enterRule(_localctx, 886, RULE_serviceBrokerServicesPermission);
46329 		try {
46330 			setState(6550);
46331 			_errHandler.sync(this);
46332 			switch ( getInterpreter().adaptivePredict(_input,760,_ctx) ) {
46333 			case 1:
46334 				enterOuterAlt(_localctx, 1);
46335 				{
46336 				setState(6540);
46337 				match(CONTROL);
46338 				}
46339 				break;
46340 			case 2:
46341 				enterOuterAlt(_localctx, 2);
46342 				{
46343 				setState(6541);
46344 				match(TAKE);
46345 				setState(6542);
46346 				match(OWNERSHIP);
46347 				}
46348 				break;
46349 			case 3:
46350 				enterOuterAlt(_localctx, 3);
46351 				{
46352 				setState(6543);
46353 				match(SEND);
46354 				}
46355 				break;
46356 			case 4:
46357 				enterOuterAlt(_localctx, 4);
46358 				{
46359 				setState(6544);
46360 				match(ALTER);
46361 				}
46362 				break;
46363 			case 5:
46364 				enterOuterAlt(_localctx, 5);
46365 				{
46366 				setState(6545);
46367 				match(VIEW);
46368 				setState(6546);
46369 				match(DEFINITION);
46370 				}
46371 				break;
46372 			case 6:
46373 				enterOuterAlt(_localctx, 6);
46374 				{
46375 				setState(6547);
46376 				match(ALTER);
46377 				setState(6548);
46378 				match(ANY);
46379 				setState(6549);
46380 				match(SERVICE);
46381 				}
46382 				break;
46383 			}
46384 		}
46385 		catch (RecognitionException re) {
46386 			_localctx.exception = re;
46387 			_errHandler.reportError(this, re);
46388 			_errHandler.recover(this, re);
46389 		}
46390 		finally {
46391 			exitRule();
46392 		}
46393 		return _localctx;
46394 	}
46395 
46396 	public static class EndpointPermissionContext extends ParserRuleContext {
46397 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46398 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
46399 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46400 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
46401 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46402 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46403 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46404 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46405 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46406 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
46407 		public EndpointPermissionContext(ParserRuleContext parent, int invokingState) {
46408 			super(parent, invokingState);
46409 		}
46410 		@Override public int getRuleIndex() { return RULE_endpointPermission; }
46411 		@Override
46412 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46413 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitEndpointPermission(this);
46414 			else return visitor.visitChildren(this);
46415 		}
46416 	}
46417 
46418 	public final EndpointPermissionContext endpointPermission() throws RecognitionException {
46419 		EndpointPermissionContext _localctx = new EndpointPermissionContext(_ctx, getState());
46420 		enterRule(_localctx, 888, RULE_endpointPermission);
46421 		int _la;
46422 		try {
46423 			setState(6568);
46424 			_errHandler.sync(this);
46425 			switch ( getInterpreter().adaptivePredict(_input,763,_ctx) ) {
46426 			case 1:
46427 				enterOuterAlt(_localctx, 1);
46428 				{
46429 				setState(6552);
46430 				match(ALTER);
46431 				}
46432 				break;
46433 			case 2:
46434 				enterOuterAlt(_localctx, 2);
46435 				{
46436 				setState(6553);
46437 				match(CONNECT);
46438 				}
46439 				break;
46440 			case 3:
46441 				enterOuterAlt(_localctx, 3);
46442 				{
46443 				setState(6554);
46444 				match(CONTROL);
46445 				setState(6556);
46446 				_errHandler.sync(this);
46447 				_la = _input.LA(1);
46448 				if (_la==SERVER) {
46449 					{
46450 					setState(6555);
46451 					match(SERVER);
46452 					}
46453 				}
46454 
46455 				}
46456 				break;
46457 			case 4:
46458 				enterOuterAlt(_localctx, 4);
46459 				{
46460 				setState(6558);
46461 				match(TAKE);
46462 				setState(6559);
46463 				match(OWNERSHIP);
46464 				}
46465 				break;
46466 			case 5:
46467 				enterOuterAlt(_localctx, 5);
46468 				{
46469 				setState(6560);
46470 				match(VIEW);
46471 				setState(6562);
46472 				_errHandler.sync(this);
46473 				_la = _input.LA(1);
46474 				if (_la==ANY) {
46475 					{
46476 					setState(6561);
46477 					match(ANY);
46478 					}
46479 				}
46480 
46481 				setState(6564);
46482 				match(DEFINITION);
46483 				}
46484 				break;
46485 			case 6:
46486 				enterOuterAlt(_localctx, 6);
46487 				{
46488 				setState(6565);
46489 				match(ALTER);
46490 				setState(6566);
46491 				match(ANY);
46492 				setState(6567);
46493 				match(ENDPOINT);
46494 				}
46495 				break;
46496 			}
46497 		}
46498 		catch (RecognitionException re) {
46499 			_localctx.exception = re;
46500 			_errHandler.reportError(this, re);
46501 			_errHandler.recover(this, re);
46502 		}
46503 		finally {
46504 			exitRule();
46505 		}
46506 		return _localctx;
46507 	}
46508 
46509 	public static class CertificatePermissionContext extends ParserRuleContext {
46510 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46511 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46512 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46513 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46514 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
46515 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46516 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46517 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46518 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
46519 		public CertificatePermissionContext(ParserRuleContext parent, int invokingState) {
46520 			super(parent, invokingState);
46521 		}
46522 		@Override public int getRuleIndex() { return RULE_certificatePermission; }
46523 		@Override
46524 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46525 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCertificatePermission(this);
46526 			else return visitor.visitChildren(this);
46527 		}
46528 	}
46529 
46530 	public final CertificatePermissionContext certificatePermission() throws RecognitionException {
46531 		CertificatePermissionContext _localctx = new CertificatePermissionContext(_ctx, getState());
46532 		enterRule(_localctx, 890, RULE_certificatePermission);
46533 		try {
46534 			setState(6580);
46535 			_errHandler.sync(this);
46536 			switch ( getInterpreter().adaptivePredict(_input,764,_ctx) ) {
46537 			case 1:
46538 				enterOuterAlt(_localctx, 1);
46539 				{
46540 				setState(6570);
46541 				match(CONTROL);
46542 				}
46543 				break;
46544 			case 2:
46545 				enterOuterAlt(_localctx, 2);
46546 				{
46547 				setState(6571);
46548 				match(TAKE);
46549 				setState(6572);
46550 				match(OWNERSHIP);
46551 				}
46552 				break;
46553 			case 3:
46554 				enterOuterAlt(_localctx, 3);
46555 				{
46556 				setState(6573);
46557 				match(ALTER);
46558 				}
46559 				break;
46560 			case 4:
46561 				enterOuterAlt(_localctx, 4);
46562 				{
46563 				setState(6574);
46564 				match(REFERENCES);
46565 				}
46566 				break;
46567 			case 5:
46568 				enterOuterAlt(_localctx, 5);
46569 				{
46570 				setState(6575);
46571 				match(VIEW);
46572 				setState(6576);
46573 				match(DEFINITION);
46574 				}
46575 				break;
46576 			case 6:
46577 				enterOuterAlt(_localctx, 6);
46578 				{
46579 				setState(6577);
46580 				match(ALTER);
46581 				setState(6578);
46582 				match(ANY);
46583 				setState(6579);
46584 				match(CERTIFICATE);
46585 				}
46586 				break;
46587 			}
46588 		}
46589 		catch (RecognitionException re) {
46590 			_localctx.exception = re;
46591 			_errHandler.reportError(this, re);
46592 			_errHandler.recover(this, re);
46593 		}
46594 		finally {
46595 			exitRule();
46596 		}
46597 		return _localctx;
46598 	}
46599 
46600 	public static class SymmetricKeyPermissionContext extends ParserRuleContext {
46601 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46602 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46603 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
46604 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46605 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46606 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46607 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46608 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46609 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
46610 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
46611 		public SymmetricKeyPermissionContext(ParserRuleContext parent, int invokingState) {
46612 			super(parent, invokingState);
46613 		}
46614 		@Override public int getRuleIndex() { return RULE_symmetricKeyPermission; }
46615 		@Override
46616 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46617 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSymmetricKeyPermission(this);
46618 			else return visitor.visitChildren(this);
46619 		}
46620 	}
46621 
46622 	public final SymmetricKeyPermissionContext symmetricKeyPermission() throws RecognitionException {
46623 		SymmetricKeyPermissionContext _localctx = new SymmetricKeyPermissionContext(_ctx, getState());
46624 		enterRule(_localctx, 892, RULE_symmetricKeyPermission);
46625 		try {
46626 			setState(6593);
46627 			_errHandler.sync(this);
46628 			switch ( getInterpreter().adaptivePredict(_input,765,_ctx) ) {
46629 			case 1:
46630 				enterOuterAlt(_localctx, 1);
46631 				{
46632 				setState(6582);
46633 				match(ALTER);
46634 				}
46635 				break;
46636 			case 2:
46637 				enterOuterAlt(_localctx, 2);
46638 				{
46639 				setState(6583);
46640 				match(CONTROL);
46641 				}
46642 				break;
46643 			case 3:
46644 				enterOuterAlt(_localctx, 3);
46645 				{
46646 				setState(6584);
46647 				match(REFERENCES);
46648 				}
46649 				break;
46650 			case 4:
46651 				enterOuterAlt(_localctx, 4);
46652 				{
46653 				setState(6585);
46654 				match(TAKE);
46655 				setState(6586);
46656 				match(OWNERSHIP);
46657 				}
46658 				break;
46659 			case 5:
46660 				enterOuterAlt(_localctx, 5);
46661 				{
46662 				setState(6587);
46663 				match(VIEW);
46664 				setState(6588);
46665 				match(DEFINITION);
46666 				}
46667 				break;
46668 			case 6:
46669 				enterOuterAlt(_localctx, 6);
46670 				{
46671 				setState(6589);
46672 				match(ALTER);
46673 				setState(6590);
46674 				match(ANY);
46675 				setState(6591);
46676 				match(SYMMETRIC);
46677 				setState(6592);
46678 				match(KEY);
46679 				}
46680 				break;
46681 			}
46682 		}
46683 		catch (RecognitionException re) {
46684 			_localctx.exception = re;
46685 			_errHandler.reportError(this, re);
46686 			_errHandler.recover(this, re);
46687 		}
46688 		finally {
46689 			exitRule();
46690 		}
46691 		return _localctx;
46692 	}
46693 
46694 	public static class AsymmetricKeyPermissionContext extends ParserRuleContext {
46695 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46696 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46697 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46698 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46699 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
46700 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46701 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46702 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46703 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
46704 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
46705 		public AsymmetricKeyPermissionContext(ParserRuleContext parent, int invokingState) {
46706 			super(parent, invokingState);
46707 		}
46708 		@Override public int getRuleIndex() { return RULE_asymmetricKeyPermission; }
46709 		@Override
46710 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46711 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAsymmetricKeyPermission(this);
46712 			else return visitor.visitChildren(this);
46713 		}
46714 	}
46715 
46716 	public final AsymmetricKeyPermissionContext asymmetricKeyPermission() throws RecognitionException {
46717 		AsymmetricKeyPermissionContext _localctx = new AsymmetricKeyPermissionContext(_ctx, getState());
46718 		enterRule(_localctx, 894, RULE_asymmetricKeyPermission);
46719 		try {
46720 			setState(6606);
46721 			_errHandler.sync(this);
46722 			switch ( getInterpreter().adaptivePredict(_input,766,_ctx) ) {
46723 			case 1:
46724 				enterOuterAlt(_localctx, 1);
46725 				{
46726 				setState(6595);
46727 				match(CONTROL);
46728 				}
46729 				break;
46730 			case 2:
46731 				enterOuterAlt(_localctx, 2);
46732 				{
46733 				setState(6596);
46734 				match(TAKE);
46735 				setState(6597);
46736 				match(OWNERSHIP);
46737 				}
46738 				break;
46739 			case 3:
46740 				enterOuterAlt(_localctx, 3);
46741 				{
46742 				setState(6598);
46743 				match(ALTER);
46744 				}
46745 				break;
46746 			case 4:
46747 				enterOuterAlt(_localctx, 4);
46748 				{
46749 				setState(6599);
46750 				match(REFERENCES);
46751 				}
46752 				break;
46753 			case 5:
46754 				enterOuterAlt(_localctx, 5);
46755 				{
46756 				setState(6600);
46757 				match(VIEW);
46758 				setState(6601);
46759 				match(DEFINITION);
46760 				}
46761 				break;
46762 			case 6:
46763 				enterOuterAlt(_localctx, 6);
46764 				{
46765 				setState(6602);
46766 				match(ALTER);
46767 				setState(6603);
46768 				match(ANY);
46769 				setState(6604);
46770 				match(ASYMMETRIC);
46771 				setState(6605);
46772 				match(KEY);
46773 				}
46774 				break;
46775 			}
46776 		}
46777 		catch (RecognitionException re) {
46778 			_localctx.exception = re;
46779 			_errHandler.reportError(this, re);
46780 			_errHandler.recover(this, re);
46781 		}
46782 		finally {
46783 			exitRule();
46784 		}
46785 		return _localctx;
46786 	}
46787 
46788 	public static class AssemblyPermissionContext extends ParserRuleContext {
46789 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46790 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46791 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46792 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46793 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
46794 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46795 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46796 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46797 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
46798 		public AssemblyPermissionContext(ParserRuleContext parent, int invokingState) {
46799 			super(parent, invokingState);
46800 		}
46801 		@Override public int getRuleIndex() { return RULE_assemblyPermission; }
46802 		@Override
46803 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46804 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAssemblyPermission(this);
46805 			else return visitor.visitChildren(this);
46806 		}
46807 	}
46808 
46809 	public final AssemblyPermissionContext assemblyPermission() throws RecognitionException {
46810 		AssemblyPermissionContext _localctx = new AssemblyPermissionContext(_ctx, getState());
46811 		enterRule(_localctx, 896, RULE_assemblyPermission);
46812 		try {
46813 			setState(6618);
46814 			_errHandler.sync(this);
46815 			switch ( getInterpreter().adaptivePredict(_input,767,_ctx) ) {
46816 			case 1:
46817 				enterOuterAlt(_localctx, 1);
46818 				{
46819 				setState(6608);
46820 				match(CONTROL);
46821 				}
46822 				break;
46823 			case 2:
46824 				enterOuterAlt(_localctx, 2);
46825 				{
46826 				setState(6609);
46827 				match(TAKE);
46828 				setState(6610);
46829 				match(OWNERSHIP);
46830 				}
46831 				break;
46832 			case 3:
46833 				enterOuterAlt(_localctx, 3);
46834 				{
46835 				setState(6611);
46836 				match(ALTER);
46837 				}
46838 				break;
46839 			case 4:
46840 				enterOuterAlt(_localctx, 4);
46841 				{
46842 				setState(6612);
46843 				match(REFERENCES);
46844 				}
46845 				break;
46846 			case 5:
46847 				enterOuterAlt(_localctx, 5);
46848 				{
46849 				setState(6613);
46850 				match(VIEW);
46851 				setState(6614);
46852 				match(DEFINITION);
46853 				}
46854 				break;
46855 			case 6:
46856 				enterOuterAlt(_localctx, 6);
46857 				{
46858 				setState(6615);
46859 				match(ALTER);
46860 				setState(6616);
46861 				match(ANY);
46862 				setState(6617);
46863 				match(ASSEMBLY);
46864 				}
46865 				break;
46866 			}
46867 		}
46868 		catch (RecognitionException re) {
46869 			_localctx.exception = re;
46870 			_errHandler.reportError(this, re);
46871 			_errHandler.recover(this, re);
46872 		}
46873 		finally {
46874 			exitRule();
46875 		}
46876 		return _localctx;
46877 	}
46878 
46879 	public static class AvailabilityGroupPermissionContext extends ParserRuleContext {
46880 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
46881 		public TerminalNode CONNECT() { return getToken(SQLServerStatementParser.CONNECT, 0); }
46882 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
46883 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
46884 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
46885 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
46886 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
46887 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
46888 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
46889 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
46890 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
46891 		public AvailabilityGroupPermissionContext(ParserRuleContext parent, int invokingState) {
46892 			super(parent, invokingState);
46893 		}
46894 		@Override public int getRuleIndex() { return RULE_availabilityGroupPermission; }
46895 		@Override
46896 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
46897 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAvailabilityGroupPermission(this);
46898 			else return visitor.visitChildren(this);
46899 		}
46900 	}
46901 
46902 	public final AvailabilityGroupPermissionContext availabilityGroupPermission() throws RecognitionException {
46903 		AvailabilityGroupPermissionContext _localctx = new AvailabilityGroupPermissionContext(_ctx, getState());
46904 		enterRule(_localctx, 898, RULE_availabilityGroupPermission);
46905 		int _la;
46906 		try {
46907 			setState(6637);
46908 			_errHandler.sync(this);
46909 			switch ( getInterpreter().adaptivePredict(_input,770,_ctx) ) {
46910 			case 1:
46911 				enterOuterAlt(_localctx, 1);
46912 				{
46913 				setState(6620);
46914 				match(ALTER);
46915 				}
46916 				break;
46917 			case 2:
46918 				enterOuterAlt(_localctx, 2);
46919 				{
46920 				setState(6621);
46921 				match(CONNECT);
46922 				}
46923 				break;
46924 			case 3:
46925 				enterOuterAlt(_localctx, 3);
46926 				{
46927 				setState(6622);
46928 				match(CONTROL);
46929 				setState(6624);
46930 				_errHandler.sync(this);
46931 				_la = _input.LA(1);
46932 				if (_la==SERVER) {
46933 					{
46934 					setState(6623);
46935 					match(SERVER);
46936 					}
46937 				}
46938 
46939 				}
46940 				break;
46941 			case 4:
46942 				enterOuterAlt(_localctx, 4);
46943 				{
46944 				setState(6626);
46945 				match(TAKE);
46946 				setState(6627);
46947 				match(OWNERSHIP);
46948 				}
46949 				break;
46950 			case 5:
46951 				enterOuterAlt(_localctx, 5);
46952 				{
46953 				setState(6628);
46954 				match(VIEW);
46955 				setState(6630);
46956 				_errHandler.sync(this);
46957 				_la = _input.LA(1);
46958 				if (_la==ANY) {
46959 					{
46960 					setState(6629);
46961 					match(ANY);
46962 					}
46963 				}
46964 
46965 				setState(6632);
46966 				match(DEFINITION);
46967 				}
46968 				break;
46969 			case 6:
46970 				enterOuterAlt(_localctx, 6);
46971 				{
46972 				setState(6633);
46973 				match(ALTER);
46974 				setState(6634);
46975 				match(ANY);
46976 				setState(6635);
46977 				match(AVAILABILITY);
46978 				setState(6636);
46979 				match(GROUP);
46980 				}
46981 				break;
46982 			}
46983 		}
46984 		catch (RecognitionException re) {
46985 			_localctx.exception = re;
46986 			_errHandler.reportError(this, re);
46987 			_errHandler.recover(this, re);
46988 		}
46989 		finally {
46990 			exitRule();
46991 		}
46992 		return _localctx;
46993 	}
46994 
46995 	public static class FullTextPermissionContext extends ParserRuleContext {
46996 		public FullTextCatalogPermissionContext fullTextCatalogPermission() {
46997 			return getRuleContext(FullTextCatalogPermissionContext.class,0);
46998 		}
46999 		public FullTextStoplistPermissionContext fullTextStoplistPermission() {
47000 			return getRuleContext(FullTextStoplistPermissionContext.class,0);
47001 		}
47002 		public FullTextPermissionContext(ParserRuleContext parent, int invokingState) {
47003 			super(parent, invokingState);
47004 		}
47005 		@Override public int getRuleIndex() { return RULE_fullTextPermission; }
47006 		@Override
47007 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47008 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFullTextPermission(this);
47009 			else return visitor.visitChildren(this);
47010 		}
47011 	}
47012 
47013 	public final FullTextPermissionContext fullTextPermission() throws RecognitionException {
47014 		FullTextPermissionContext _localctx = new FullTextPermissionContext(_ctx, getState());
47015 		enterRule(_localctx, 900, RULE_fullTextPermission);
47016 		try {
47017 			setState(6641);
47018 			_errHandler.sync(this);
47019 			switch ( getInterpreter().adaptivePredict(_input,771,_ctx) ) {
47020 			case 1:
47021 				enterOuterAlt(_localctx, 1);
47022 				{
47023 				setState(6639);
47024 				fullTextCatalogPermission();
47025 				}
47026 				break;
47027 			case 2:
47028 				enterOuterAlt(_localctx, 2);
47029 				{
47030 				setState(6640);
47031 				fullTextStoplistPermission();
47032 				}
47033 				break;
47034 			}
47035 		}
47036 		catch (RecognitionException re) {
47037 			_localctx.exception = re;
47038 			_errHandler.reportError(this, re);
47039 			_errHandler.recover(this, re);
47040 		}
47041 		finally {
47042 			exitRule();
47043 		}
47044 		return _localctx;
47045 	}
47046 
47047 	public static class FullTextCatalogPermissionContext extends ParserRuleContext {
47048 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
47049 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
47050 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
47051 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
47052 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
47053 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
47054 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
47055 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
47056 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
47057 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
47058 		public FullTextCatalogPermissionContext(ParserRuleContext parent, int invokingState) {
47059 			super(parent, invokingState);
47060 		}
47061 		@Override public int getRuleIndex() { return RULE_fullTextCatalogPermission; }
47062 		@Override
47063 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47064 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFullTextCatalogPermission(this);
47065 			else return visitor.visitChildren(this);
47066 		}
47067 	}
47068 
47069 	public final FullTextCatalogPermissionContext fullTextCatalogPermission() throws RecognitionException {
47070 		FullTextCatalogPermissionContext _localctx = new FullTextCatalogPermissionContext(_ctx, getState());
47071 		enterRule(_localctx, 902, RULE_fullTextCatalogPermission);
47072 		try {
47073 			setState(6654);
47074 			_errHandler.sync(this);
47075 			switch ( getInterpreter().adaptivePredict(_input,772,_ctx) ) {
47076 			case 1:
47077 				enterOuterAlt(_localctx, 1);
47078 				{
47079 				setState(6643);
47080 				match(CONTROL);
47081 				}
47082 				break;
47083 			case 2:
47084 				enterOuterAlt(_localctx, 2);
47085 				{
47086 				setState(6644);
47087 				match(TAKE);
47088 				setState(6645);
47089 				match(OWNERSHIP);
47090 				}
47091 				break;
47092 			case 3:
47093 				enterOuterAlt(_localctx, 3);
47094 				{
47095 				setState(6646);
47096 				match(ALTER);
47097 				}
47098 				break;
47099 			case 4:
47100 				enterOuterAlt(_localctx, 4);
47101 				{
47102 				setState(6647);
47103 				match(REFERENCES);
47104 				}
47105 				break;
47106 			case 5:
47107 				enterOuterAlt(_localctx, 5);
47108 				{
47109 				setState(6648);
47110 				match(VIEW);
47111 				setState(6649);
47112 				match(DEFINITION);
47113 				}
47114 				break;
47115 			case 6:
47116 				enterOuterAlt(_localctx, 6);
47117 				{
47118 				setState(6650);
47119 				match(ALTER);
47120 				setState(6651);
47121 				match(ANY);
47122 				setState(6652);
47123 				match(FULLTEXT);
47124 				setState(6653);
47125 				match(CATALOG);
47126 				}
47127 				break;
47128 			}
47129 		}
47130 		catch (RecognitionException re) {
47131 			_localctx.exception = re;
47132 			_errHandler.reportError(this, re);
47133 			_errHandler.recover(this, re);
47134 		}
47135 		finally {
47136 			exitRule();
47137 		}
47138 		return _localctx;
47139 	}
47140 
47141 	public static class FullTextStoplistPermissionContext extends ParserRuleContext {
47142 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
47143 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
47144 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
47145 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
47146 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
47147 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
47148 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
47149 		public TerminalNode ANY() { return getToken(SQLServerStatementParser.ANY, 0); }
47150 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
47151 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
47152 		public FullTextStoplistPermissionContext(ParserRuleContext parent, int invokingState) {
47153 			super(parent, invokingState);
47154 		}
47155 		@Override public int getRuleIndex() { return RULE_fullTextStoplistPermission; }
47156 		@Override
47157 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47158 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitFullTextStoplistPermission(this);
47159 			else return visitor.visitChildren(this);
47160 		}
47161 	}
47162 
47163 	public final FullTextStoplistPermissionContext fullTextStoplistPermission() throws RecognitionException {
47164 		FullTextStoplistPermissionContext _localctx = new FullTextStoplistPermissionContext(_ctx, getState());
47165 		enterRule(_localctx, 904, RULE_fullTextStoplistPermission);
47166 		try {
47167 			setState(6667);
47168 			_errHandler.sync(this);
47169 			switch ( getInterpreter().adaptivePredict(_input,773,_ctx) ) {
47170 			case 1:
47171 				enterOuterAlt(_localctx, 1);
47172 				{
47173 				setState(6656);
47174 				match(ALTER);
47175 				}
47176 				break;
47177 			case 2:
47178 				enterOuterAlt(_localctx, 2);
47179 				{
47180 				setState(6657);
47181 				match(CONTROL);
47182 				}
47183 				break;
47184 			case 3:
47185 				enterOuterAlt(_localctx, 3);
47186 				{
47187 				setState(6658);
47188 				match(REFERENCES);
47189 				}
47190 				break;
47191 			case 4:
47192 				enterOuterAlt(_localctx, 4);
47193 				{
47194 				setState(6659);
47195 				match(TAKE);
47196 				setState(6660);
47197 				match(OWNERSHIP);
47198 				}
47199 				break;
47200 			case 5:
47201 				enterOuterAlt(_localctx, 5);
47202 				{
47203 				setState(6661);
47204 				match(VIEW);
47205 				setState(6662);
47206 				match(DEFINITION);
47207 				}
47208 				break;
47209 			case 6:
47210 				enterOuterAlt(_localctx, 6);
47211 				{
47212 				setState(6663);
47213 				match(ALTER);
47214 				setState(6664);
47215 				match(ANY);
47216 				setState(6665);
47217 				match(FULLTEXT);
47218 				setState(6666);
47219 				match(CATALOG);
47220 				}
47221 				break;
47222 			}
47223 		}
47224 		catch (RecognitionException re) {
47225 			_localctx.exception = re;
47226 			_errHandler.reportError(this, re);
47227 			_errHandler.recover(this, re);
47228 		}
47229 		finally {
47230 			exitRule();
47231 		}
47232 		return _localctx;
47233 	}
47234 
47235 	public static class TypePermissionContext extends ParserRuleContext {
47236 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
47237 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
47238 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
47239 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
47240 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
47241 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
47242 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
47243 		public TypePermissionContext(ParserRuleContext parent, int invokingState) {
47244 			super(parent, invokingState);
47245 		}
47246 		@Override public int getRuleIndex() { return RULE_typePermission; }
47247 		@Override
47248 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47249 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitTypePermission(this);
47250 			else return visitor.visitChildren(this);
47251 		}
47252 	}
47253 
47254 	public final TypePermissionContext typePermission() throws RecognitionException {
47255 		TypePermissionContext _localctx = new TypePermissionContext(_ctx, getState());
47256 		enterRule(_localctx, 906, RULE_typePermission);
47257 		try {
47258 			setState(6676);
47259 			_errHandler.sync(this);
47260 			switch (_input.LA(1)) {
47261 			case CONTROL:
47262 				enterOuterAlt(_localctx, 1);
47263 				{
47264 				setState(6669);
47265 				match(CONTROL);
47266 				}
47267 				break;
47268 			case EXECUTE:
47269 				enterOuterAlt(_localctx, 2);
47270 				{
47271 				setState(6670);
47272 				match(EXECUTE);
47273 				}
47274 				break;
47275 			case REFERENCES:
47276 				enterOuterAlt(_localctx, 3);
47277 				{
47278 				setState(6671);
47279 				match(REFERENCES);
47280 				}
47281 				break;
47282 			case TAKE:
47283 				enterOuterAlt(_localctx, 4);
47284 				{
47285 				setState(6672);
47286 				match(TAKE);
47287 				setState(6673);
47288 				match(OWNERSHIP);
47289 				}
47290 				break;
47291 			case VIEW:
47292 				enterOuterAlt(_localctx, 5);
47293 				{
47294 				setState(6674);
47295 				match(VIEW);
47296 				setState(6675);
47297 				match(DEFINITION);
47298 				}
47299 				break;
47300 			default:
47301 				throw new NoViableAltException(this);
47302 			}
47303 		}
47304 		catch (RecognitionException re) {
47305 			_localctx.exception = re;
47306 			_errHandler.reportError(this, re);
47307 			_errHandler.recover(this, re);
47308 		}
47309 		finally {
47310 			exitRule();
47311 		}
47312 		return _localctx;
47313 	}
47314 
47315 	public static class XmlSchemaCollectionPermissionContext extends ParserRuleContext {
47316 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
47317 		public TerminalNode CONTROL() { return getToken(SQLServerStatementParser.CONTROL, 0); }
47318 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
47319 		public TerminalNode REFERENCES() { return getToken(SQLServerStatementParser.REFERENCES, 0); }
47320 		public TerminalNode TAKE() { return getToken(SQLServerStatementParser.TAKE, 0); }
47321 		public TerminalNode OWNERSHIP() { return getToken(SQLServerStatementParser.OWNERSHIP, 0); }
47322 		public TerminalNode VIEW() { return getToken(SQLServerStatementParser.VIEW, 0); }
47323 		public TerminalNode DEFINITION() { return getToken(SQLServerStatementParser.DEFINITION, 0); }
47324 		public XmlSchemaCollectionPermissionContext(ParserRuleContext parent, int invokingState) {
47325 			super(parent, invokingState);
47326 		}
47327 		@Override public int getRuleIndex() { return RULE_xmlSchemaCollectionPermission; }
47328 		@Override
47329 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47330 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitXmlSchemaCollectionPermission(this);
47331 			else return visitor.visitChildren(this);
47332 		}
47333 	}
47334 
47335 	public final XmlSchemaCollectionPermissionContext xmlSchemaCollectionPermission() throws RecognitionException {
47336 		XmlSchemaCollectionPermissionContext _localctx = new XmlSchemaCollectionPermissionContext(_ctx, getState());
47337 		enterRule(_localctx, 908, RULE_xmlSchemaCollectionPermission);
47338 		try {
47339 			setState(6686);
47340 			_errHandler.sync(this);
47341 			switch (_input.LA(1)) {
47342 			case ALTER:
47343 				enterOuterAlt(_localctx, 1);
47344 				{
47345 				setState(6678);
47346 				match(ALTER);
47347 				}
47348 				break;
47349 			case CONTROL:
47350 				enterOuterAlt(_localctx, 2);
47351 				{
47352 				setState(6679);
47353 				match(CONTROL);
47354 				}
47355 				break;
47356 			case EXECUTE:
47357 				enterOuterAlt(_localctx, 3);
47358 				{
47359 				setState(6680);
47360 				match(EXECUTE);
47361 				}
47362 				break;
47363 			case REFERENCES:
47364 				enterOuterAlt(_localctx, 4);
47365 				{
47366 				setState(6681);
47367 				match(REFERENCES);
47368 				}
47369 				break;
47370 			case TAKE:
47371 				enterOuterAlt(_localctx, 5);
47372 				{
47373 				setState(6682);
47374 				match(TAKE);
47375 				setState(6683);
47376 				match(OWNERSHIP);
47377 				}
47378 				break;
47379 			case VIEW:
47380 				enterOuterAlt(_localctx, 6);
47381 				{
47382 				setState(6684);
47383 				match(VIEW);
47384 				setState(6685);
47385 				match(DEFINITION);
47386 				}
47387 				break;
47388 			default:
47389 				throw new NoViableAltException(this);
47390 			}
47391 		}
47392 		catch (RecognitionException re) {
47393 			_localctx.exception = re;
47394 			_errHandler.reportError(this, re);
47395 			_errHandler.recover(this, re);
47396 		}
47397 		finally {
47398 			exitRule();
47399 		}
47400 		return _localctx;
47401 	}
47402 
47403 	public static class SystemObjectPermissionContext extends ParserRuleContext {
47404 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
47405 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
47406 		public SystemObjectPermissionContext(ParserRuleContext parent, int invokingState) {
47407 			super(parent, invokingState);
47408 		}
47409 		@Override public int getRuleIndex() { return RULE_systemObjectPermission; }
47410 		@Override
47411 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47412 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSystemObjectPermission(this);
47413 			else return visitor.visitChildren(this);
47414 		}
47415 	}
47416 
47417 	public final SystemObjectPermissionContext systemObjectPermission() throws RecognitionException {
47418 		SystemObjectPermissionContext _localctx = new SystemObjectPermissionContext(_ctx, getState());
47419 		enterRule(_localctx, 910, RULE_systemObjectPermission);
47420 		int _la;
47421 		try {
47422 			enterOuterAlt(_localctx, 1);
47423 			{
47424 			setState(6688);
47425 			_la = _input.LA(1);
47426 			if ( !(_la==SELECT || _la==EXECUTE) ) {
47427 			_errHandler.recoverInline(this);
47428 			}
47429 			else {
47430 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47431 				_errHandler.reportMatch(this);
47432 				consume();
47433 			}
47434 			}
47435 		}
47436 		catch (RecognitionException re) {
47437 			_localctx.exception = re;
47438 			_errHandler.reportError(this, re);
47439 			_errHandler.recover(this, re);
47440 		}
47441 		finally {
47442 			exitRule();
47443 		}
47444 		return _localctx;
47445 	}
47446 
47447 	public static class Class_Context extends ParserRuleContext {
47448 		public TerminalNode IDENTIFIER_() { return getToken(SQLServerStatementParser.IDENTIFIER_, 0); }
47449 		public List<TerminalNode> COLON_() { return getTokens(SQLServerStatementParser.COLON_); }
47450 		public TerminalNode COLON_(int i) {
47451 			return getToken(SQLServerStatementParser.COLON_, i);
47452 		}
47453 		public Class_Context(ParserRuleContext parent, int invokingState) {
47454 			super(parent, invokingState);
47455 		}
47456 		@Override public int getRuleIndex() { return RULE_class_; }
47457 		@Override
47458 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47459 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClass_(this);
47460 			else return visitor.visitChildren(this);
47461 		}
47462 	}
47463 
47464 	public final Class_Context class_() throws RecognitionException {
47465 		Class_Context _localctx = new Class_Context(_ctx, getState());
47466 		enterRule(_localctx, 912, RULE_class_);
47467 		try {
47468 			enterOuterAlt(_localctx, 1);
47469 			{
47470 			setState(6690);
47471 			match(IDENTIFIER_);
47472 			setState(6691);
47473 			match(COLON_);
47474 			setState(6692);
47475 			match(COLON_);
47476 			}
47477 		}
47478 		catch (RecognitionException re) {
47479 			_localctx.exception = re;
47480 			_errHandler.reportError(this, re);
47481 			_errHandler.recover(this, re);
47482 		}
47483 		finally {
47484 			exitRule();
47485 		}
47486 		return _localctx;
47487 	}
47488 
47489 	public static class ClassItemContext extends ParserRuleContext {
47490 		public TerminalNode ASSEMBLY() { return getToken(SQLServerStatementParser.ASSEMBLY, 0); }
47491 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
47492 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
47493 		public TerminalNode AVAILABILITY() { return getToken(SQLServerStatementParser.AVAILABILITY, 0); }
47494 		public TerminalNode GROUP() { return getToken(SQLServerStatementParser.GROUP, 0); }
47495 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
47496 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
47497 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
47498 		public TerminalNode APPLICATION() { return getToken(SQLServerStatementParser.APPLICATION, 0); }
47499 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
47500 		public TerminalNode SCOPED() { return getToken(SQLServerStatementParser.SCOPED, 0); }
47501 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
47502 		public TerminalNode ENDPOINT() { return getToken(SQLServerStatementParser.ENDPOINT, 0); }
47503 		public TerminalNode FULLTEXT() { return getToken(SQLServerStatementParser.FULLTEXT, 0); }
47504 		public TerminalNode CATALOG() { return getToken(SQLServerStatementParser.CATALOG, 0); }
47505 		public TerminalNode STOPLIST() { return getToken(SQLServerStatementParser.STOPLIST, 0); }
47506 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
47507 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
47508 		public TerminalNode SEARCH() { return getToken(SQLServerStatementParser.SEARCH, 0); }
47509 		public TerminalNode PROPERTY() { return getToken(SQLServerStatementParser.PROPERTY, 0); }
47510 		public TerminalNode LIST() { return getToken(SQLServerStatementParser.LIST, 0); }
47511 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
47512 		public TerminalNode SERVER() { return getToken(SQLServerStatementParser.SERVER, 0); }
47513 		public TerminalNode CONTRACT() { return getToken(SQLServerStatementParser.CONTRACT, 0); }
47514 		public TerminalNode MESSAGE() { return getToken(SQLServerStatementParser.MESSAGE, 0); }
47515 		public TerminalNode TYPE() { return getToken(SQLServerStatementParser.TYPE, 0); }
47516 		public TerminalNode REMOTE() { return getToken(SQLServerStatementParser.REMOTE, 0); }
47517 		public TerminalNode SERVICE() { return getToken(SQLServerStatementParser.SERVICE, 0); }
47518 		public TerminalNode BINDING() { return getToken(SQLServerStatementParser.BINDING, 0); }
47519 		public TerminalNode ROUTE() { return getToken(SQLServerStatementParser.ROUTE, 0); }
47520 		public TerminalNode SYMMETRIC() { return getToken(SQLServerStatementParser.SYMMETRIC, 0); }
47521 		public TerminalNode SELECT() { return getToken(SQLServerStatementParser.SELECT, 0); }
47522 		public TerminalNode EXECUTE() { return getToken(SQLServerStatementParser.EXECUTE, 0); }
47523 		public TerminalNode XML() { return getToken(SQLServerStatementParser.XML, 0); }
47524 		public TerminalNode COLLECTION() { return getToken(SQLServerStatementParser.COLLECTION, 0); }
47525 		public ClassItemContext(ParserRuleContext parent, int invokingState) {
47526 			super(parent, invokingState);
47527 		}
47528 		@Override public int getRuleIndex() { return RULE_classItem; }
47529 		@Override
47530 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47531 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassItem(this);
47532 			else return visitor.visitChildren(this);
47533 		}
47534 	}
47535 
47536 	public final ClassItemContext classItem() throws RecognitionException {
47537 		ClassItemContext _localctx = new ClassItemContext(_ctx, getState());
47538 		enterRule(_localctx, 914, RULE_classItem);
47539 		int _la;
47540 		try {
47541 			setState(6734);
47542 			_errHandler.sync(this);
47543 			switch (_input.LA(1)) {
47544 			case ASSEMBLY:
47545 				enterOuterAlt(_localctx, 1);
47546 				{
47547 				setState(6694);
47548 				match(ASSEMBLY);
47549 				}
47550 				break;
47551 			case ASYMMETRIC:
47552 				enterOuterAlt(_localctx, 2);
47553 				{
47554 				setState(6695);
47555 				match(ASYMMETRIC);
47556 				setState(6696);
47557 				match(KEY);
47558 				}
47559 				break;
47560 			case AVAILABILITY:
47561 				enterOuterAlt(_localctx, 3);
47562 				{
47563 				setState(6697);
47564 				match(AVAILABILITY);
47565 				setState(6698);
47566 				match(GROUP);
47567 				}
47568 				break;
47569 			case CERTIFICATE:
47570 				enterOuterAlt(_localctx, 4);
47571 				{
47572 				setState(6699);
47573 				match(CERTIFICATE);
47574 				}
47575 				break;
47576 			case USER:
47577 				enterOuterAlt(_localctx, 5);
47578 				{
47579 				setState(6700);
47580 				match(USER);
47581 				}
47582 				break;
47583 			case ROLE:
47584 				enterOuterAlt(_localctx, 6);
47585 				{
47586 				setState(6701);
47587 				match(ROLE);
47588 				}
47589 				break;
47590 			case APPLICATION:
47591 				enterOuterAlt(_localctx, 7);
47592 				{
47593 				setState(6702);
47594 				match(APPLICATION);
47595 				setState(6703);
47596 				match(ROLE);
47597 				}
47598 				break;
47599 			case DATABASE:
47600 				enterOuterAlt(_localctx, 8);
47601 				{
47602 				setState(6704);
47603 				match(DATABASE);
47604 				setState(6705);
47605 				match(SCOPED);
47606 				setState(6706);
47607 				match(CREDENTIAL);
47608 				}
47609 				break;
47610 			case ENDPOINT:
47611 				enterOuterAlt(_localctx, 9);
47612 				{
47613 				setState(6707);
47614 				match(ENDPOINT);
47615 				}
47616 				break;
47617 			case FULLTEXT:
47618 				enterOuterAlt(_localctx, 10);
47619 				{
47620 				setState(6708);
47621 				match(FULLTEXT);
47622 				setState(6709);
47623 				_la = _input.LA(1);
47624 				if ( !(_la==CATALOG || _la==STOPLIST) ) {
47625 				_errHandler.recoverInline(this);
47626 				}
47627 				else {
47628 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47629 					_errHandler.reportMatch(this);
47630 					consume();
47631 				}
47632 				}
47633 				break;
47634 			case OBJECT:
47635 				enterOuterAlt(_localctx, 11);
47636 				{
47637 				setState(6710);
47638 				match(OBJECT);
47639 				}
47640 				break;
47641 			case SCHEMA:
47642 				enterOuterAlt(_localctx, 12);
47643 				{
47644 				setState(6711);
47645 				match(SCHEMA);
47646 				}
47647 				break;
47648 			case SEARCH:
47649 				enterOuterAlt(_localctx, 13);
47650 				{
47651 				setState(6712);
47652 				match(SEARCH);
47653 				setState(6713);
47654 				match(PROPERTY);
47655 				setState(6714);
47656 				match(LIST);
47657 				}
47658 				break;
47659 			case LOGIN:
47660 				enterOuterAlt(_localctx, 14);
47661 				{
47662 				setState(6715);
47663 				match(LOGIN);
47664 				}
47665 				break;
47666 			case SERVER:
47667 				enterOuterAlt(_localctx, 15);
47668 				{
47669 				setState(6716);
47670 				match(SERVER);
47671 				setState(6717);
47672 				match(ROLE);
47673 				}
47674 				break;
47675 			case CONTRACT:
47676 				enterOuterAlt(_localctx, 16);
47677 				{
47678 				setState(6718);
47679 				match(CONTRACT);
47680 				}
47681 				break;
47682 			case MESSAGE:
47683 				enterOuterAlt(_localctx, 17);
47684 				{
47685 				setState(6719);
47686 				match(MESSAGE);
47687 				setState(6720);
47688 				match(TYPE);
47689 				}
47690 				break;
47691 			case REMOTE:
47692 				enterOuterAlt(_localctx, 18);
47693 				{
47694 				setState(6721);
47695 				match(REMOTE);
47696 				setState(6722);
47697 				match(SERVICE);
47698 				setState(6723);
47699 				match(BINDING);
47700 				}
47701 				break;
47702 			case ROUTE:
47703 				enterOuterAlt(_localctx, 19);
47704 				{
47705 				setState(6724);
47706 				match(ROUTE);
47707 				}
47708 				break;
47709 			case SERVICE:
47710 				enterOuterAlt(_localctx, 20);
47711 				{
47712 				setState(6725);
47713 				match(SERVICE);
47714 				}
47715 				break;
47716 			case SYMMETRIC:
47717 				enterOuterAlt(_localctx, 21);
47718 				{
47719 				setState(6726);
47720 				match(SYMMETRIC);
47721 				setState(6727);
47722 				match(KEY);
47723 				}
47724 				break;
47725 			case SELECT:
47726 				enterOuterAlt(_localctx, 22);
47727 				{
47728 				setState(6728);
47729 				match(SELECT);
47730 				}
47731 				break;
47732 			case EXECUTE:
47733 				enterOuterAlt(_localctx, 23);
47734 				{
47735 				setState(6729);
47736 				match(EXECUTE);
47737 				}
47738 				break;
47739 			case TYPE:
47740 				enterOuterAlt(_localctx, 24);
47741 				{
47742 				setState(6730);
47743 				match(TYPE);
47744 				}
47745 				break;
47746 			case XML:
47747 				enterOuterAlt(_localctx, 25);
47748 				{
47749 				setState(6731);
47750 				match(XML);
47751 				setState(6732);
47752 				match(SCHEMA);
47753 				setState(6733);
47754 				match(COLLECTION);
47755 				}
47756 				break;
47757 			default:
47758 				throw new NoViableAltException(this);
47759 			}
47760 		}
47761 		catch (RecognitionException re) {
47762 			_localctx.exception = re;
47763 			_errHandler.reportError(this, re);
47764 			_errHandler.recover(this, re);
47765 		}
47766 		finally {
47767 			exitRule();
47768 		}
47769 		return _localctx;
47770 	}
47771 
47772 	public static class ClassTypeContext extends ParserRuleContext {
47773 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
47774 		public TerminalNode DATABASE() { return getToken(SQLServerStatementParser.DATABASE, 0); }
47775 		public TerminalNode OBJECT() { return getToken(SQLServerStatementParser.OBJECT, 0); }
47776 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
47777 		public TerminalNode SCHEMA() { return getToken(SQLServerStatementParser.SCHEMA, 0); }
47778 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
47779 		public ClassTypeContext(ParserRuleContext parent, int invokingState) {
47780 			super(parent, invokingState);
47781 		}
47782 		@Override public int getRuleIndex() { return RULE_classType; }
47783 		@Override
47784 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47785 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitClassType(this);
47786 			else return visitor.visitChildren(this);
47787 		}
47788 	}
47789 
47790 	public final ClassTypeContext classType() throws RecognitionException {
47791 		ClassTypeContext _localctx = new ClassTypeContext(_ctx, getState());
47792 		enterRule(_localctx, 916, RULE_classType);
47793 		int _la;
47794 		try {
47795 			enterOuterAlt(_localctx, 1);
47796 			{
47797 			setState(6736);
47798 			_la = _input.LA(1);
47799 			if ( !(_la==SCHEMA || ((((_la - 204)) & ~0x3f) == 0 && ((1L << (_la - 204)) & ((1L << (DATABASE - 204)) | (1L << (USER - 204)) | (1L << (ROLE - 204)))) != 0) || _la==LOGIN || _la==OBJECT) ) {
47800 			_errHandler.recoverInline(this);
47801 			}
47802 			else {
47803 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
47804 				_errHandler.reportMatch(this);
47805 				consume();
47806 			}
47807 			}
47808 		}
47809 		catch (RecognitionException re) {
47810 			_localctx.exception = re;
47811 			_errHandler.reportError(this, re);
47812 			_errHandler.recover(this, re);
47813 		}
47814 		finally {
47815 			exitRule();
47816 		}
47817 		return _localctx;
47818 	}
47819 
47820 	public static class RoleClauseContext extends ParserRuleContext {
47821 		public IgnoredIdentifiersContext ignoredIdentifiers() {
47822 			return getRuleContext(IgnoredIdentifiersContext.class,0);
47823 		}
47824 		public RoleClauseContext(ParserRuleContext parent, int invokingState) {
47825 			super(parent, invokingState);
47826 		}
47827 		@Override public int getRuleIndex() { return RULE_roleClause; }
47828 		@Override
47829 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47830 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRoleClause(this);
47831 			else return visitor.visitChildren(this);
47832 		}
47833 	}
47834 
47835 	public final RoleClauseContext roleClause() throws RecognitionException {
47836 		RoleClauseContext _localctx = new RoleClauseContext(_ctx, getState());
47837 		enterRule(_localctx, 918, RULE_roleClause);
47838 		try {
47839 			enterOuterAlt(_localctx, 1);
47840 			{
47841 			setState(6738);
47842 			ignoredIdentifiers();
47843 			}
47844 		}
47845 		catch (RecognitionException re) {
47846 			_localctx.exception = re;
47847 			_errHandler.reportError(this, re);
47848 			_errHandler.recover(this, re);
47849 		}
47850 		finally {
47851 			exitRule();
47852 		}
47853 		return _localctx;
47854 	}
47855 
47856 	public static class SetUserContext extends ParserRuleContext {
47857 		public TerminalNode SETUSER() { return getToken(SQLServerStatementParser.SETUSER, 0); }
47858 		public StringLiteralsContext stringLiterals() {
47859 			return getRuleContext(StringLiteralsContext.class,0);
47860 		}
47861 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
47862 		public TerminalNode NORESET() { return getToken(SQLServerStatementParser.NORESET, 0); }
47863 		public SetUserContext(ParserRuleContext parent, int invokingState) {
47864 			super(parent, invokingState);
47865 		}
47866 		@Override public int getRuleIndex() { return RULE_setUser; }
47867 		@Override
47868 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47869 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetUser(this);
47870 			else return visitor.visitChildren(this);
47871 		}
47872 	}
47873 
47874 	public final SetUserContext setUser() throws RecognitionException {
47875 		SetUserContext _localctx = new SetUserContext(_ctx, getState());
47876 		enterRule(_localctx, 920, RULE_setUser);
47877 		int _la;
47878 		try {
47879 			enterOuterAlt(_localctx, 1);
47880 			{
47881 			setState(6740);
47882 			match(SETUSER);
47883 			setState(6746);
47884 			_errHandler.sync(this);
47885 			_la = _input.LA(1);
47886 			if (_la==STRING_ || _la==NCHAR_TEXT) {
47887 				{
47888 				setState(6741);
47889 				stringLiterals();
47890 				setState(6744);
47891 				_errHandler.sync(this);
47892 				_la = _input.LA(1);
47893 				if (_la==WITH) {
47894 					{
47895 					setState(6742);
47896 					match(WITH);
47897 					setState(6743);
47898 					match(NORESET);
47899 					}
47900 				}
47901 
47902 				}
47903 			}
47904 
47905 			}
47906 		}
47907 		catch (RecognitionException re) {
47908 			_localctx.exception = re;
47909 			_errHandler.reportError(this, re);
47910 			_errHandler.recover(this, re);
47911 		}
47912 		finally {
47913 			exitRule();
47914 		}
47915 		return _localctx;
47916 	}
47917 
47918 	public static class CreateUserContext extends ParserRuleContext {
47919 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
47920 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
47921 		public CreateUserLoginClauseContext createUserLoginClause() {
47922 			return getRuleContext(CreateUserLoginClauseContext.class,0);
47923 		}
47924 		public CreateUserWindowsPrincipalClauseContext createUserWindowsPrincipalClause() {
47925 			return getRuleContext(CreateUserWindowsPrincipalClauseContext.class,0);
47926 		}
47927 		public CreateUserLoginWindowsPrincipalClauseContext createUserLoginWindowsPrincipalClause() {
47928 			return getRuleContext(CreateUserLoginWindowsPrincipalClauseContext.class,0);
47929 		}
47930 		public CreateUserWithoutLoginClauseContext createUserWithoutLoginClause() {
47931 			return getRuleContext(CreateUserWithoutLoginClauseContext.class,0);
47932 		}
47933 		public CreateUserFromExternalProviderClauseContext createUserFromExternalProviderClause() {
47934 			return getRuleContext(CreateUserFromExternalProviderClauseContext.class,0);
47935 		}
47936 		public CreateUserWithDefaultSchemaContext createUserWithDefaultSchema() {
47937 			return getRuleContext(CreateUserWithDefaultSchemaContext.class,0);
47938 		}
47939 		public CreateUserWithAzureActiveDirectoryPrincipalClauseContext createUserWithAzureActiveDirectoryPrincipalClause() {
47940 			return getRuleContext(CreateUserWithAzureActiveDirectoryPrincipalClauseContext.class,0);
47941 		}
47942 		public UserNameContext userName() {
47943 			return getRuleContext(UserNameContext.class,0);
47944 		}
47945 		public CreateUserContext(ParserRuleContext parent, int invokingState) {
47946 			super(parent, invokingState);
47947 		}
47948 		@Override public int getRuleIndex() { return RULE_createUser; }
47949 		@Override
47950 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
47951 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUser(this);
47952 			else return visitor.visitChildren(this);
47953 		}
47954 	}
47955 
47956 	public final CreateUserContext createUser() throws RecognitionException {
47957 		CreateUserContext _localctx = new CreateUserContext(_ctx, getState());
47958 		enterRule(_localctx, 922, RULE_createUser);
47959 		try {
47960 			enterOuterAlt(_localctx, 1);
47961 			{
47962 			setState(6748);
47963 			match(CREATE);
47964 			setState(6749);
47965 			match(USER);
47966 			setState(6758);
47967 			_errHandler.sync(this);
47968 			switch ( getInterpreter().adaptivePredict(_input,779,_ctx) ) {
47969 			case 1:
47970 				{
47971 				setState(6750);
47972 				createUserLoginClause();
47973 				}
47974 				break;
47975 			case 2:
47976 				{
47977 				setState(6751);
47978 				createUserWindowsPrincipalClause();
47979 				}
47980 				break;
47981 			case 3:
47982 				{
47983 				setState(6752);
47984 				createUserLoginWindowsPrincipalClause();
47985 				}
47986 				break;
47987 			case 4:
47988 				{
47989 				setState(6753);
47990 				createUserWithoutLoginClause();
47991 				}
47992 				break;
47993 			case 5:
47994 				{
47995 				setState(6754);
47996 				createUserFromExternalProviderClause();
47997 				}
47998 				break;
47999 			case 6:
48000 				{
48001 				setState(6755);
48002 				createUserWithDefaultSchema();
48003 				}
48004 				break;
48005 			case 7:
48006 				{
48007 				setState(6756);
48008 				createUserWithAzureActiveDirectoryPrincipalClause();
48009 				}
48010 				break;
48011 			case 8:
48012 				{
48013 				setState(6757);
48014 				userName();
48015 				}
48016 				break;
48017 			}
48018 			}
48019 		}
48020 		catch (RecognitionException re) {
48021 			_localctx.exception = re;
48022 			_errHandler.reportError(this, re);
48023 			_errHandler.recover(this, re);
48024 		}
48025 		finally {
48026 			exitRule();
48027 		}
48028 		return _localctx;
48029 	}
48030 
48031 	public static class CreateUserLoginClauseContext extends ParserRuleContext {
48032 		public UserNameContext userName() {
48033 			return getRuleContext(UserNameContext.class,0);
48034 		}
48035 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
48036 		public IdentifierContext identifier() {
48037 			return getRuleContext(IdentifierContext.class,0);
48038 		}
48039 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
48040 		public List<LimitedOptionsListContext> limitedOptionsList() {
48041 			return getRuleContexts(LimitedOptionsListContext.class);
48042 		}
48043 		public LimitedOptionsListContext limitedOptionsList(int i) {
48044 			return getRuleContext(LimitedOptionsListContext.class,i);
48045 		}
48046 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
48047 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
48048 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
48049 		public TerminalNode COMMA_(int i) {
48050 			return getToken(SQLServerStatementParser.COMMA_, i);
48051 		}
48052 		public CreateUserLoginClauseContext(ParserRuleContext parent, int invokingState) {
48053 			super(parent, invokingState);
48054 		}
48055 		@Override public int getRuleIndex() { return RULE_createUserLoginClause; }
48056 		@Override
48057 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48058 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserLoginClause(this);
48059 			else return visitor.visitChildren(this);
48060 		}
48061 	}
48062 
48063 	public final CreateUserLoginClauseContext createUserLoginClause() throws RecognitionException {
48064 		CreateUserLoginClauseContext _localctx = new CreateUserLoginClauseContext(_ctx, getState());
48065 		enterRule(_localctx, 924, RULE_createUserLoginClause);
48066 		int _la;
48067 		try {
48068 			enterOuterAlt(_localctx, 1);
48069 			{
48070 			setState(6760);
48071 			userName();
48072 			setState(6764);
48073 			_errHandler.sync(this);
48074 			_la = _input.LA(1);
48075 			if (_la==FROM || _la==FOR) {
48076 				{
48077 				setState(6761);
48078 				_la = _input.LA(1);
48079 				if ( !(_la==FROM || _la==FOR) ) {
48080 				_errHandler.recoverInline(this);
48081 				}
48082 				else {
48083 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
48084 					_errHandler.reportMatch(this);
48085 					consume();
48086 				}
48087 				setState(6762);
48088 				match(LOGIN);
48089 				setState(6763);
48090 				identifier();
48091 				}
48092 			}
48093 
48094 			setState(6775);
48095 			_errHandler.sync(this);
48096 			_la = _input.LA(1);
48097 			if (_la==WITH) {
48098 				{
48099 				setState(6766);
48100 				match(WITH);
48101 				setState(6767);
48102 				limitedOptionsList();
48103 				setState(6772);
48104 				_errHandler.sync(this);
48105 				_la = _input.LA(1);
48106 				while (_la==COMMA_) {
48107 					{
48108 					{
48109 					setState(6768);
48110 					match(COMMA_);
48111 					setState(6769);
48112 					limitedOptionsList();
48113 					}
48114 					}
48115 					setState(6774);
48116 					_errHandler.sync(this);
48117 					_la = _input.LA(1);
48118 				}
48119 				}
48120 			}
48121 
48122 			}
48123 		}
48124 		catch (RecognitionException re) {
48125 			_localctx.exception = re;
48126 			_errHandler.reportError(this, re);
48127 			_errHandler.recover(this, re);
48128 		}
48129 		finally {
48130 			exitRule();
48131 		}
48132 		return _localctx;
48133 	}
48134 
48135 	public static class CreateUserWindowsPrincipalClauseContext extends ParserRuleContext {
48136 		public WindowsPrincipalContext windowsPrincipal() {
48137 			return getRuleContext(WindowsPrincipalContext.class,0);
48138 		}
48139 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
48140 		public List<OptionsListContext> optionsList() {
48141 			return getRuleContexts(OptionsListContext.class);
48142 		}
48143 		public OptionsListContext optionsList(int i) {
48144 			return getRuleContext(OptionsListContext.class,i);
48145 		}
48146 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
48147 		public TerminalNode COMMA_(int i) {
48148 			return getToken(SQLServerStatementParser.COMMA_, i);
48149 		}
48150 		public UserNameContext userName() {
48151 			return getRuleContext(UserNameContext.class,0);
48152 		}
48153 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
48154 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
48155 		public StringLiteralsContext stringLiterals() {
48156 			return getRuleContext(StringLiteralsContext.class,0);
48157 		}
48158 		public AzureActiveDirectoryPrincipalContext azureActiveDirectoryPrincipal() {
48159 			return getRuleContext(AzureActiveDirectoryPrincipalContext.class,0);
48160 		}
48161 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
48162 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
48163 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
48164 		public CreateUserWindowsPrincipalClauseContext(ParserRuleContext parent, int invokingState) {
48165 			super(parent, invokingState);
48166 		}
48167 		@Override public int getRuleIndex() { return RULE_createUserWindowsPrincipalClause; }
48168 		@Override
48169 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48170 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWindowsPrincipalClause(this);
48171 			else return visitor.visitChildren(this);
48172 		}
48173 	}
48174 
48175 	public final CreateUserWindowsPrincipalClauseContext createUserWindowsPrincipalClause() throws RecognitionException {
48176 		CreateUserWindowsPrincipalClauseContext _localctx = new CreateUserWindowsPrincipalClauseContext(_ctx, getState());
48177 		enterRule(_localctx, 926, RULE_createUserWindowsPrincipalClause);
48178 		int _la;
48179 		try {
48180 			setState(6810);
48181 			_errHandler.sync(this);
48182 			switch ( getInterpreter().adaptivePredict(_input,787,_ctx) ) {
48183 			case 1:
48184 				enterOuterAlt(_localctx, 1);
48185 				{
48186 				setState(6777);
48187 				windowsPrincipal();
48188 				setState(6787);
48189 				_errHandler.sync(this);
48190 				_la = _input.LA(1);
48191 				if (_la==WITH) {
48192 					{
48193 					setState(6778);
48194 					match(WITH);
48195 					setState(6779);
48196 					optionsList();
48197 					setState(6784);
48198 					_errHandler.sync(this);
48199 					_la = _input.LA(1);
48200 					while (_la==COMMA_) {
48201 						{
48202 						{
48203 						setState(6780);
48204 						match(COMMA_);
48205 						setState(6781);
48206 						optionsList();
48207 						}
48208 						}
48209 						setState(6786);
48210 						_errHandler.sync(this);
48211 						_la = _input.LA(1);
48212 					}
48213 					}
48214 				}
48215 
48216 				}
48217 				break;
48218 			case 2:
48219 				enterOuterAlt(_localctx, 2);
48220 				{
48221 				setState(6789);
48222 				userName();
48223 				setState(6790);
48224 				match(WITH);
48225 				setState(6791);
48226 				match(PASSWORD);
48227 				setState(6792);
48228 				match(EQ_);
48229 				setState(6793);
48230 				stringLiterals();
48231 				setState(6803);
48232 				_errHandler.sync(this);
48233 				_la = _input.LA(1);
48234 				if (_la==COMMA_) {
48235 					{
48236 					setState(6794);
48237 					match(COMMA_);
48238 					setState(6795);
48239 					optionsList();
48240 					setState(6800);
48241 					_errHandler.sync(this);
48242 					_la = _input.LA(1);
48243 					while (_la==COMMA_) {
48244 						{
48245 						{
48246 						setState(6796);
48247 						match(COMMA_);
48248 						setState(6797);
48249 						optionsList();
48250 						}
48251 						}
48252 						setState(6802);
48253 						_errHandler.sync(this);
48254 						_la = _input.LA(1);
48255 					}
48256 					}
48257 				}
48258 
48259 				}
48260 				break;
48261 			case 3:
48262 				enterOuterAlt(_localctx, 3);
48263 				{
48264 				setState(6805);
48265 				azureActiveDirectoryPrincipal();
48266 				setState(6806);
48267 				match(FROM);
48268 				setState(6807);
48269 				match(EXTERNAL);
48270 				setState(6808);
48271 				match(PROVIDER);
48272 				}
48273 				break;
48274 			}
48275 		}
48276 		catch (RecognitionException re) {
48277 			_localctx.exception = re;
48278 			_errHandler.reportError(this, re);
48279 			_errHandler.recover(this, re);
48280 		}
48281 		finally {
48282 			exitRule();
48283 		}
48284 		return _localctx;
48285 	}
48286 
48287 	public static class CreateUserLoginWindowsPrincipalClauseContext extends ParserRuleContext {
48288 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
48289 		public List<LimitedOptionsListContext> limitedOptionsList() {
48290 			return getRuleContexts(LimitedOptionsListContext.class);
48291 		}
48292 		public LimitedOptionsListContext limitedOptionsList(int i) {
48293 			return getRuleContext(LimitedOptionsListContext.class,i);
48294 		}
48295 		public List<WindowsPrincipalContext> windowsPrincipal() {
48296 			return getRuleContexts(WindowsPrincipalContext.class);
48297 		}
48298 		public WindowsPrincipalContext windowsPrincipal(int i) {
48299 			return getRuleContext(WindowsPrincipalContext.class,i);
48300 		}
48301 		public UserNameContext userName() {
48302 			return getRuleContext(UserNameContext.class,0);
48303 		}
48304 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
48305 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
48306 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
48307 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
48308 		public TerminalNode COMMA_(int i) {
48309 			return getToken(SQLServerStatementParser.COMMA_, i);
48310 		}
48311 		public CreateUserLoginWindowsPrincipalClauseContext(ParserRuleContext parent, int invokingState) {
48312 			super(parent, invokingState);
48313 		}
48314 		@Override public int getRuleIndex() { return RULE_createUserLoginWindowsPrincipalClause; }
48315 		@Override
48316 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48317 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserLoginWindowsPrincipalClause(this);
48318 			else return visitor.visitChildren(this);
48319 		}
48320 	}
48321 
48322 	public final CreateUserLoginWindowsPrincipalClauseContext createUserLoginWindowsPrincipalClause() throws RecognitionException {
48323 		CreateUserLoginWindowsPrincipalClauseContext _localctx = new CreateUserLoginWindowsPrincipalClauseContext(_ctx, getState());
48324 		enterRule(_localctx, 928, RULE_createUserLoginWindowsPrincipalClause);
48325 		int _la;
48326 		try {
48327 			enterOuterAlt(_localctx, 1);
48328 			{
48329 			setState(6823);
48330 			_errHandler.sync(this);
48331 			switch ( getInterpreter().adaptivePredict(_input,789,_ctx) ) {
48332 			case 1:
48333 				{
48334 				{
48335 				setState(6812);
48336 				windowsPrincipal();
48337 				setState(6816);
48338 				_errHandler.sync(this);
48339 				_la = _input.LA(1);
48340 				if (_la==FROM || _la==FOR) {
48341 					{
48342 					setState(6813);
48343 					_la = _input.LA(1);
48344 					if ( !(_la==FROM || _la==FOR) ) {
48345 					_errHandler.recoverInline(this);
48346 					}
48347 					else {
48348 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
48349 						_errHandler.reportMatch(this);
48350 						consume();
48351 					}
48352 					setState(6814);
48353 					match(LOGIN);
48354 					setState(6815);
48355 					windowsPrincipal();
48356 					}
48357 				}
48358 
48359 				}
48360 				}
48361 				break;
48362 			case 2:
48363 				{
48364 				{
48365 				setState(6818);
48366 				userName();
48367 				setState(6819);
48368 				_la = _input.LA(1);
48369 				if ( !(_la==FROM || _la==FOR) ) {
48370 				_errHandler.recoverInline(this);
48371 				}
48372 				else {
48373 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
48374 					_errHandler.reportMatch(this);
48375 					consume();
48376 				}
48377 				setState(6820);
48378 				match(LOGIN);
48379 				setState(6821);
48380 				windowsPrincipal();
48381 				}
48382 				}
48383 				break;
48384 			}
48385 			setState(6834);
48386 			_errHandler.sync(this);
48387 			_la = _input.LA(1);
48388 			if (_la==WITH) {
48389 				{
48390 				setState(6825);
48391 				match(WITH);
48392 				setState(6826);
48393 				limitedOptionsList();
48394 				setState(6831);
48395 				_errHandler.sync(this);
48396 				_la = _input.LA(1);
48397 				while (_la==COMMA_) {
48398 					{
48399 					{
48400 					setState(6827);
48401 					match(COMMA_);
48402 					setState(6828);
48403 					limitedOptionsList();
48404 					}
48405 					}
48406 					setState(6833);
48407 					_errHandler.sync(this);
48408 					_la = _input.LA(1);
48409 				}
48410 				}
48411 			}
48412 
48413 			}
48414 		}
48415 		catch (RecognitionException re) {
48416 			_localctx.exception = re;
48417 			_errHandler.reportError(this, re);
48418 			_errHandler.recover(this, re);
48419 		}
48420 		finally {
48421 			exitRule();
48422 		}
48423 		return _localctx;
48424 	}
48425 
48426 	public static class CreateUserWithoutLoginClauseContext extends ParserRuleContext {
48427 		public UserNameContext userName() {
48428 			return getRuleContext(UserNameContext.class,0);
48429 		}
48430 		public TerminalNode WITHOUT() { return getToken(SQLServerStatementParser.WITHOUT, 0); }
48431 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
48432 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
48433 		public IdentifierContext identifier() {
48434 			return getRuleContext(IdentifierContext.class,0);
48435 		}
48436 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
48437 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
48438 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
48439 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
48440 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
48441 		public List<LimitedOptionsListContext> limitedOptionsList() {
48442 			return getRuleContexts(LimitedOptionsListContext.class);
48443 		}
48444 		public LimitedOptionsListContext limitedOptionsList(int i) {
48445 			return getRuleContext(LimitedOptionsListContext.class,i);
48446 		}
48447 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
48448 		public TerminalNode COMMA_(int i) {
48449 			return getToken(SQLServerStatementParser.COMMA_, i);
48450 		}
48451 		public CreateUserWithoutLoginClauseContext(ParserRuleContext parent, int invokingState) {
48452 			super(parent, invokingState);
48453 		}
48454 		@Override public int getRuleIndex() { return RULE_createUserWithoutLoginClause; }
48455 		@Override
48456 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48457 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWithoutLoginClause(this);
48458 			else return visitor.visitChildren(this);
48459 		}
48460 	}
48461 
48462 	public final CreateUserWithoutLoginClauseContext createUserWithoutLoginClause() throws RecognitionException {
48463 		CreateUserWithoutLoginClauseContext _localctx = new CreateUserWithoutLoginClauseContext(_ctx, getState());
48464 		enterRule(_localctx, 930, RULE_createUserWithoutLoginClause);
48465 		int _la;
48466 		try {
48467 			enterOuterAlt(_localctx, 1);
48468 			{
48469 			setState(6836);
48470 			userName();
48471 			setState(6857);
48472 			_errHandler.sync(this);
48473 			switch ( getInterpreter().adaptivePredict(_input,794,_ctx) ) {
48474 			case 1:
48475 				{
48476 				setState(6837);
48477 				match(WITHOUT);
48478 				setState(6838);
48479 				match(LOGIN);
48480 				setState(6848);
48481 				_errHandler.sync(this);
48482 				_la = _input.LA(1);
48483 				if (_la==WITH) {
48484 					{
48485 					setState(6839);
48486 					match(WITH);
48487 					setState(6840);
48488 					limitedOptionsList();
48489 					setState(6845);
48490 					_errHandler.sync(this);
48491 					_la = _input.LA(1);
48492 					while (_la==COMMA_) {
48493 						{
48494 						{
48495 						setState(6841);
48496 						match(COMMA_);
48497 						setState(6842);
48498 						limitedOptionsList();
48499 						}
48500 						}
48501 						setState(6847);
48502 						_errHandler.sync(this);
48503 						_la = _input.LA(1);
48504 					}
48505 					}
48506 				}
48507 
48508 				}
48509 				break;
48510 			case 2:
48511 				{
48512 				setState(6850);
48513 				_la = _input.LA(1);
48514 				if ( !(_la==FROM || _la==FOR) ) {
48515 				_errHandler.recoverInline(this);
48516 				}
48517 				else {
48518 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
48519 					_errHandler.reportMatch(this);
48520 					consume();
48521 				}
48522 				setState(6851);
48523 				match(CERTIFICATE);
48524 				setState(6852);
48525 				identifier();
48526 				}
48527 				break;
48528 			case 3:
48529 				{
48530 				setState(6853);
48531 				_la = _input.LA(1);
48532 				if ( !(_la==FROM || _la==FOR) ) {
48533 				_errHandler.recoverInline(this);
48534 				}
48535 				else {
48536 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
48537 					_errHandler.reportMatch(this);
48538 					consume();
48539 				}
48540 				setState(6854);
48541 				match(ASYMMETRIC);
48542 				setState(6855);
48543 				match(KEY);
48544 				setState(6856);
48545 				identifier();
48546 				}
48547 				break;
48548 			}
48549 			}
48550 		}
48551 		catch (RecognitionException re) {
48552 			_localctx.exception = re;
48553 			_errHandler.reportError(this, re);
48554 			_errHandler.recover(this, re);
48555 		}
48556 		finally {
48557 			exitRule();
48558 		}
48559 		return _localctx;
48560 	}
48561 
48562 	public static class OptionsListContext extends ParserRuleContext {
48563 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
48564 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
48565 		public SchemaNameContext schemaName() {
48566 			return getRuleContext(SchemaNameContext.class,0);
48567 		}
48568 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
48569 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
48570 		public IdentifierContext identifier() {
48571 			return getRuleContext(IdentifierContext.class,0);
48572 		}
48573 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
48574 		public SidContext sid() {
48575 			return getRuleContext(SidContext.class,0);
48576 		}
48577 		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getToken(SQLServerStatementParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, 0); }
48578 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
48579 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
48580 		public OptionsListContext(ParserRuleContext parent, int invokingState) {
48581 			super(parent, invokingState);
48582 		}
48583 		@Override public int getRuleIndex() { return RULE_optionsList; }
48584 		@Override
48585 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
48586 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitOptionsList(this);
48587 			else return visitor.visitChildren(this);
48588 		}
48589 	}
48590 
48591 	public final OptionsListContext optionsList() throws RecognitionException {
48592 		OptionsListContext _localctx = new OptionsListContext(_ctx, getState());
48593 		enterRule(_localctx, 932, RULE_optionsList);
48594 		int _la;
48595 		try {
48596 			setState(6876);
48597 			_errHandler.sync(this);
48598 			switch (_input.LA(1)) {
48599 			case DEFAULT_SCHEMA:
48600 				enterOuterAlt(_localctx, 1);
48601 				{
48602 				setState(6859);
48603 				match(DEFAULT_SCHEMA);
48604 				setState(6860);
48605 				match(EQ_);
48606 				setState(6861);
48607 				schemaName();
48608 				}
48609 				break;
48610 			case DEFAULT_LANGUAGE:
48611 				enterOuterAlt(_localctx, 2);
48612 				{
48613 				setState(6862);
48614 				match(DEFAULT_LANGUAGE);
48615 				setState(6863);
48616 				match(EQ_);
48617 				setState(6866);
48618 				_errHandler.sync(this);
48619 				switch (_input.LA(1)) {
48620 				case NONE:
48621 					{
48622 					setState(6864);
48623 					match(NONE);
48624 					}
48625 					break;
48626 				case TRUNCATE:
48627 				case SCHEMA:
48628 				case COLUMNS:
48629 				case PRECISION:
48630 				case FUNCTION:
48631 				case TRIGGER:
48632 				case CAST:
48633 				case TRIM:
48634 				case SUBSTRING:
48635 				case RIGHT:
48636 				case OFF:
48637 				case GROUP:
48638 				case LIMIT:
48639 				case OFFSET:
48640 				case SAVEPOINT:
48641 				case BOOLEAN:
48642 				case ARRAY:
48643 				case DATE:
48644 				case TIMESTAMP:
48645 				case LOCALTIME:
48646 				case LOCALTIMESTAMP:
48647 				case YEAR:
48648 				case QUARTER:
48649 				case MONTH:
48650 				case WEEK:
48651 				case DAY:
48652 				case SECOND:
48653 				case MICROSECOND:
48654 				case MAX:
48655 				case MIN:
48656 				case SUM:
48657 				case COUNT:
48658 				case AVG:
48659 				case ENABLE:
48660 				case DISABLE:
48661 				case INSTANCE:
48662 				case DO:
48663 				case DEFINER:
48664 				case SQL:
48665 				case CASCADED:
48666 				case LOCAL:
48667 				case NEXT:
48668 				case NAME:
48669 				case INTEGER:
48670 				case TYPE:
48671 				case TEXT:
48672 				case VIEWS:
48673 				case READ_ONLY:
48674 				case DATABASE:
48675 				case RETURNS:
48676 				case DATEPART:
48677 				case PASSWORD:
48678 				case BINARY:
48679 				case HIDDEN_:
48680 				case MOD:
48681 				case PARTITION:
48682 				case PARTITIONS:
48683 				case TOP:
48684 				case ROW:
48685 				case ROWS:
48686 				case XOR:
48687 				case ALWAYS:
48688 				case USER:
48689 				case ROLE:
48690 				case START:
48691 				case ALGORITHM:
48692 				case AUTO:
48693 				case BLOCKERS:
48694 				case CLUSTERED:
48695 				case NONCLUSTERED:
48696 				case COLUMNSTORE:
48697 				case CONTENT:
48698 				case YEARS:
48699 				case MONTHS:
48700 				case WEEKS:
48701 				case DAYS:
48702 				case MINUTES:
48703 				case DENY:
48704 				case DETERMINISTIC:
48705 				case DISTRIBUTION:
48706 				case DOCUMENT:
48707 				case DURABILITY:
48708 				case ENCRYPTED:
48709 				case FILESTREAM:
48710 				case FILETABLE:
48711 				case FILLFACTOR:
48712 				case FOLLOWING:
48713 				case HASH:
48714 				case HEAP:
48715 				case INBOUND:
48716 				case OUTBOUND:
48717 				case UNBOUNDED:
48718 				case INFINITE:
48719 				case LOGIN:
48720 				case MASKED:
48721 				case MAXDOP:
48722 				case MOVE:
48723 				case NOCHECK:
48724 				case OBJECT:
48725 				case ONLINE:
48726 				case OVER:
48727 				case PAGE:
48728 				case PAUSED:
48729 				case PERIOD:
48730 				case PERSISTED:
48731 				case PRECEDING:
48732 				case RANDOMIZED:
48733 				case RANGE:
48734 				case REBUILD:
48735 				case REPLICATE:
48736 				case REPLICATION:
48737 				case RESUMABLE:
48738 				case ROWGUIDCOL:
48739 				case SAVE:
48740 				case SELF:
48741 				case SPARSE:
48742 				case SWITCH:
48743 				case TRAN:
48744 				case TRANCOUNT:
48745 				case CONTROL:
48746 				case CONCAT:
48747 				case TAKE:
48748 				case OWNERSHIP:
48749 				case DEFINITION:
48750 				case APPLICATION:
48751 				case ASSEMBLY:
48752 				case SYMMETRIC:
48753 				case ASYMMETRIC:
48754 				case SERVER:
48755 				case RECEIVE:
48756 				case CHANGE:
48757 				case TRACE:
48758 				case TRACKING:
48759 				case RESOURCES:
48760 				case SETTINGS:
48761 				case STATE:
48762 				case AVAILABILITY:
48763 				case CREDENTIAL:
48764 				case ENDPOINT:
48765 				case EVENT:
48766 				case NOTIFICATION:
48767 				case LINKED:
48768 				case AUDIT:
48769 				case DDL:
48770 				case XML:
48771 				case IMPERSONATE:
48772 				case SECURABLES:
48773 				case AUTHENTICATE:
48774 				case EXTERNAL:
48775 				case ACCESS:
48776 				case ADMINISTER:
48777 				case BULK:
48778 				case OPERATIONS:
48779 				case UNSAFE:
48780 				case SHUTDOWN:
48781 				case SCOPED:
48782 				case CONFIGURATION:
48783 				case DATASPACE:
48784 				case SERVICE:
48785 				case CERTIFICATE:
48786 				case CONTRACT:
48787 				case ENCRYPTION:
48788 				case MASTER:
48789 				case DATA:
48790 				case SOURCE:
48791 				case FILE:
48792 				case FORMAT:
48793 				case LIBRARY:
48794 				case FULLTEXT:
48795 				case MASK:
48796 				case UNMASK:
48797 				case MESSAGE:
48798 				case REMOTE:
48799 				case BINDING:
48800 				case ROUTE:
48801 				case SECURITY:
48802 				case POLICY:
48803 				case AGGREGATE:
48804 				case QUEUE:
48805 				case RULE:
48806 				case SYNONYM:
48807 				case COLLECTION:
48808 				case SCRIPT:
48809 				case KILL:
48810 				case BACKUP:
48811 				case LOG:
48812 				case SHOWPLAN:
48813 				case SUBSCRIBE:
48814 				case QUERY:
48815 				case NOTIFICATIONS:
48816 				case CHECKPOINT:
48817 				case SEQUENCE:
48818 				case ABORT_AFTER_WAIT:
48819 				case ALLOW_PAGE_LOCKS:
48820 				case ALLOW_ROW_LOCKS:
48821 				case ALL_SPARSE_COLUMNS:
48822 				case BUCKET_COUNT:
48823 				case COLUMNSTORE_ARCHIVE:
48824 				case COLUMN_ENCRYPTION_KEY:
48825 				case COLUMN_SET:
48826 				case COMPRESSION_DELAY:
48827 				case DATABASE_DEAULT:
48828 				case DATA_COMPRESSION:
48829 				case DATA_CONSISTENCY_CHECK:
48830 				case ENCRYPTION_TYPE:
48831 				case SYSTEM_TIME:
48832 				case SYSTEM_VERSIONING:
48833 				case TEXTIMAGE_ON:
48834 				case WAIT_AT_LOW_PRIORITY:
48835 				case STATISTICS_INCREMENTAL:
48836 				case STATISTICS_NORECOMPUTE:
48837 				case ROUND_ROBIN:
48838 				case SCHEMA_AND_DATA:
48839 				case SCHEMA_ONLY:
48840 				case SORT_IN_TEMPDB:
48841 				case IGNORE_DUP_KEY:
48842 				case IMPLICIT_TRANSACTIONS:
48843 				case MAX_DURATION:
48844 				case MEMORY_OPTIMIZED:
48845 				case MIGRATION_STATE:
48846 				case PAD_INDEX:
48847 				case REMOTE_DATA_ARCHIVE:
48848 				case FILESTREAM_ON:
48849 				case FILETABLE_COLLATE_FILENAME:
48850 				case FILETABLE_DIRECTORY:
48851 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
48852 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
48853 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
48854 				case FILTER_PREDICATE:
48855 				case HISTORY_RETENTION_PERIOD:
48856 				case HISTORY_TABLE:
48857 				case LOCK_ESCALATION:
48858 				case DROP_EXISTING:
48859 				case ROW_NUMBER:
48860 				case FIRST:
48861 				case DATETIME2:
48862 				case OUTPUT:
48863 				case INSERTED:
48864 				case DELETED:
48865 				case FILENAME:
48866 				case SIZE:
48867 				case MAXSIZE:
48868 				case FILEGROWTH:
48869 				case UNLIMITED:
48870 				case KB:
48871 				case MB:
48872 				case GB:
48873 				case TB:
48874 				case CONTAINS:
48875 				case MEMORY_OPTIMIZED_DATA:
48876 				case FILEGROUP:
48877 				case NON_TRANSACTED_ACCESS:
48878 				case DB_CHAINING:
48879 				case TRUSTWORTHY:
48880 				case FORWARD_ONLY:
48881 				case KEYSET:
48882 				case FAST_FORWARD:
48883 				case SCROLL_LOCKS:
48884 				case OPTIMISTIC:
48885 				case TYPE_WARNING:
48886 				case SCHEMABINDING:
48887 				case CALLER:
48888 				case INPUT:
48889 				case OWNER:
48890 				case SNAPSHOT:
48891 				case REPEATABLE:
48892 				case SERIALIZABLE:
48893 				case NATIVE_COMPILATION:
48894 				case VIEW_METADATA:
48895 				case INSTEAD:
48896 				case APPEND:
48897 				case INCREMENT:
48898 				case CACHE:
48899 				case MINVALUE:
48900 				case MAXVALUE:
48901 				case RESTART:
48902 				case LOB_COMPACTION:
48903 				case COMPRESS_ALL_ROW_GROUPS:
48904 				case REORGANIZE:
48905 				case RESUME:
48906 				case PAUSE:
48907 				case ABORT:
48908 				case ACCELERATED_DATABASE_RECOVERY:
48909 				case PERSISTENT_VERSION_STORE_FILEGROUP:
48910 				case IMMEDIATE:
48911 				case NO_WAIT:
48912 				case TARGET_RECOVERY_TIME:
48913 				case SECONDS:
48914 				case HONOR_BROKER_PRIORITY:
48915 				case ERROR_BROKER_CONVERSATIONS:
48916 				case NEW_BROKER:
48917 				case DISABLE_BROKER:
48918 				case ENABLE_BROKER:
48919 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
48920 				case READ_COMMITTED_SNAPSHOT:
48921 				case ALLOW_SNAPSHOT_ISOLATION:
48922 				case RECURSIVE_TRIGGERS:
48923 				case QUOTED_IDENTIFIER:
48924 				case NUMERIC_ROUNDABORT:
48925 				case CONCAT_NULL_YIELDS_NULL:
48926 				case COMPATIBILITY_LEVEL:
48927 				case ARITHABORT:
48928 				case ANSI_WARNINGS:
48929 				case ANSI_PADDING:
48930 				case ANSI_NULLS:
48931 				case ANSI_NULL_DEFAULT:
48932 				case PAGE_VERIFY:
48933 				case CHECKSUM:
48934 				case TORN_PAGE_DETECTION:
48935 				case BULK_LOGGED:
48936 				case RECOVERY:
48937 				case TOTAL_EXECUTION_CPU_TIME_MS:
48938 				case TOTAL_COMPILE_CPU_TIME_MS:
48939 				case STALE_CAPTURE_POLICY_THRESHOLD:
48940 				case EXECUTION_COUNT:
48941 				case QUERY_CAPTURE_POLICY:
48942 				case WAIT_STATS_CAPTURE_MODE:
48943 				case MAX_PLANS_PER_QUERY:
48944 				case QUERY_CAPTURE_MODE:
48945 				case SIZE_BASED_CLEANUP_MODE:
48946 				case INTERVAL_LENGTH_MINUTES:
48947 				case MAX_STORAGE_SIZE_MB:
48948 				case DATA_FLUSH_INTERVAL_SECONDS:
48949 				case CLEANUP_POLICY:
48950 				case CUSTOM:
48951 				case STALE_QUERY_THRESHOLD_DAYS:
48952 				case OPERATION_MODE:
48953 				case QUERY_STORE:
48954 				case CURSOR_DEFAULT:
48955 				case GLOBAL:
48956 				case CURSOR_CLOSE_ON_COMMIT:
48957 				case HOURS:
48958 				case CHANGE_RETENTION:
48959 				case AUTO_CLEANUP:
48960 				case CHANGE_TRACKING:
48961 				case AUTOMATIC_TUNING:
48962 				case FORCE_LAST_GOOD_PLAN:
48963 				case AUTO_UPDATE_STATISTICS_ASYNC:
48964 				case AUTO_UPDATE_STATISTICS:
48965 				case AUTO_SHRINK:
48966 				case AUTO_CREATE_STATISTICS:
48967 				case INCREMENTAL:
48968 				case AUTO_CLOSE:
48969 				case DATA_RETENTION:
48970 				case TEMPORAL_HISTORY_RETENTION:
48971 				case EDITION:
48972 				case MIXED_PAGE_ALLOCATION:
48973 				case DISABLED:
48974 				case ALLOWED:
48975 				case HADR:
48976 				case MULTI_USER:
48977 				case RESTRICTED_USER:
48978 				case SINGLE_USER:
48979 				case OFFLINE:
48980 				case EMERGENCY:
48981 				case SUSPEND:
48982 				case DATE_CORRELATION_OPTIMIZATION:
48983 				case ELASTIC_POOL:
48984 				case SERVICE_OBJECTIVE:
48985 				case DATABASE_NAME:
48986 				case ALLOW_CONNECTIONS:
48987 				case GEO:
48988 				case NAMED:
48989 				case DATEFIRST:
48990 				case BACKUP_STORAGE_REDUNDANCY:
48991 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
48992 				case SECONDARY:
48993 				case FAILOVER:
48994 				case DEFAULT_FULLTEXT_LANGUAGE:
48995 				case DEFAULT_LANGUAGE:
48996 				case INLINE:
48997 				case NESTED_TRIGGERS:
48998 				case TRANSFORM_NOISE_WORDS:
48999 				case TWO_DIGIT_YEAR_CUTOFF:
49000 				case PERSISTENT_LOG_BUFFER:
49001 				case DIRECTORY_NAME:
49002 				case DATEFORMAT:
49003 				case DELAYED_DURABILITY:
49004 				case AUTHORIZATION:
49005 				case TRANSFER:
49006 				case PROVIDER:
49007 				case SID:
49008 				case SEARCH:
49009 				case MEMBER:
49010 				case JSON:
49011 				case IDENTIFIER_:
49012 				case DELIMITED_IDENTIFIER_:
49013 					{
49014 					setState(6865);
49015 					identifier();
49016 					}
49017 					break;
49018 				default:
49019 					throw new NoViableAltException(this);
49020 				}
49021 				}
49022 				break;
49023 			case SID:
49024 				enterOuterAlt(_localctx, 3);
49025 				{
49026 				setState(6868);
49027 				match(SID);
49028 				setState(6869);
49029 				match(EQ_);
49030 				setState(6870);
49031 				sid();
49032 				}
49033 				break;
49034 			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
49035 				enterOuterAlt(_localctx, 4);
49036 				{
49037 				setState(6871);
49038 				match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
49039 				setState(6872);
49040 				match(EQ_);
49041 				setState(6874);
49042 				_errHandler.sync(this);
49043 				_la = _input.LA(1);
49044 				if (_la==ON || _la==OFF) {
49045 					{
49046 					setState(6873);
49047 					_la = _input.LA(1);
49048 					if ( !(_la==ON || _la==OFF) ) {
49049 					_errHandler.recoverInline(this);
49050 					}
49051 					else {
49052 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
49053 						_errHandler.reportMatch(this);
49054 						consume();
49055 					}
49056 					}
49057 				}
49058 
49059 				}
49060 				break;
49061 			default:
49062 				throw new NoViableAltException(this);
49063 			}
49064 		}
49065 		catch (RecognitionException re) {
49066 			_localctx.exception = re;
49067 			_errHandler.reportError(this, re);
49068 			_errHandler.recover(this, re);
49069 		}
49070 		finally {
49071 			exitRule();
49072 		}
49073 		return _localctx;
49074 	}
49075 
49076 	public static class LimitedOptionsListContext extends ParserRuleContext {
49077 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
49078 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
49079 		public SchemaNameContext schemaName() {
49080 			return getRuleContext(SchemaNameContext.class,0);
49081 		}
49082 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
49083 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
49084 		public IdentifierContext identifier() {
49085 			return getRuleContext(IdentifierContext.class,0);
49086 		}
49087 		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getToken(SQLServerStatementParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, 0); }
49088 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
49089 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
49090 		public LimitedOptionsListContext(ParserRuleContext parent, int invokingState) {
49091 			super(parent, invokingState);
49092 		}
49093 		@Override public int getRuleIndex() { return RULE_limitedOptionsList; }
49094 		@Override
49095 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49096 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitLimitedOptionsList(this);
49097 			else return visitor.visitChildren(this);
49098 		}
49099 	}
49100 
49101 	public final LimitedOptionsListContext limitedOptionsList() throws RecognitionException {
49102 		LimitedOptionsListContext _localctx = new LimitedOptionsListContext(_ctx, getState());
49103 		enterRule(_localctx, 934, RULE_limitedOptionsList);
49104 		int _la;
49105 		try {
49106 			setState(6892);
49107 			_errHandler.sync(this);
49108 			switch (_input.LA(1)) {
49109 			case DEFAULT_SCHEMA:
49110 				enterOuterAlt(_localctx, 1);
49111 				{
49112 				setState(6878);
49113 				match(DEFAULT_SCHEMA);
49114 				setState(6879);
49115 				match(EQ_);
49116 				setState(6880);
49117 				schemaName();
49118 				}
49119 				break;
49120 			case DEFAULT_LANGUAGE:
49121 				enterOuterAlt(_localctx, 2);
49122 				{
49123 				setState(6881);
49124 				match(DEFAULT_LANGUAGE);
49125 				setState(6882);
49126 				match(EQ_);
49127 				setState(6885);
49128 				_errHandler.sync(this);
49129 				switch (_input.LA(1)) {
49130 				case NONE:
49131 					{
49132 					setState(6883);
49133 					match(NONE);
49134 					}
49135 					break;
49136 				case TRUNCATE:
49137 				case SCHEMA:
49138 				case COLUMNS:
49139 				case PRECISION:
49140 				case FUNCTION:
49141 				case TRIGGER:
49142 				case CAST:
49143 				case TRIM:
49144 				case SUBSTRING:
49145 				case RIGHT:
49146 				case OFF:
49147 				case GROUP:
49148 				case LIMIT:
49149 				case OFFSET:
49150 				case SAVEPOINT:
49151 				case BOOLEAN:
49152 				case ARRAY:
49153 				case DATE:
49154 				case TIMESTAMP:
49155 				case LOCALTIME:
49156 				case LOCALTIMESTAMP:
49157 				case YEAR:
49158 				case QUARTER:
49159 				case MONTH:
49160 				case WEEK:
49161 				case DAY:
49162 				case SECOND:
49163 				case MICROSECOND:
49164 				case MAX:
49165 				case MIN:
49166 				case SUM:
49167 				case COUNT:
49168 				case AVG:
49169 				case ENABLE:
49170 				case DISABLE:
49171 				case INSTANCE:
49172 				case DO:
49173 				case DEFINER:
49174 				case SQL:
49175 				case CASCADED:
49176 				case LOCAL:
49177 				case NEXT:
49178 				case NAME:
49179 				case INTEGER:
49180 				case TYPE:
49181 				case TEXT:
49182 				case VIEWS:
49183 				case READ_ONLY:
49184 				case DATABASE:
49185 				case RETURNS:
49186 				case DATEPART:
49187 				case PASSWORD:
49188 				case BINARY:
49189 				case HIDDEN_:
49190 				case MOD:
49191 				case PARTITION:
49192 				case PARTITIONS:
49193 				case TOP:
49194 				case ROW:
49195 				case ROWS:
49196 				case XOR:
49197 				case ALWAYS:
49198 				case USER:
49199 				case ROLE:
49200 				case START:
49201 				case ALGORITHM:
49202 				case AUTO:
49203 				case BLOCKERS:
49204 				case CLUSTERED:
49205 				case NONCLUSTERED:
49206 				case COLUMNSTORE:
49207 				case CONTENT:
49208 				case YEARS:
49209 				case MONTHS:
49210 				case WEEKS:
49211 				case DAYS:
49212 				case MINUTES:
49213 				case DENY:
49214 				case DETERMINISTIC:
49215 				case DISTRIBUTION:
49216 				case DOCUMENT:
49217 				case DURABILITY:
49218 				case ENCRYPTED:
49219 				case FILESTREAM:
49220 				case FILETABLE:
49221 				case FILLFACTOR:
49222 				case FOLLOWING:
49223 				case HASH:
49224 				case HEAP:
49225 				case INBOUND:
49226 				case OUTBOUND:
49227 				case UNBOUNDED:
49228 				case INFINITE:
49229 				case LOGIN:
49230 				case MASKED:
49231 				case MAXDOP:
49232 				case MOVE:
49233 				case NOCHECK:
49234 				case OBJECT:
49235 				case ONLINE:
49236 				case OVER:
49237 				case PAGE:
49238 				case PAUSED:
49239 				case PERIOD:
49240 				case PERSISTED:
49241 				case PRECEDING:
49242 				case RANDOMIZED:
49243 				case RANGE:
49244 				case REBUILD:
49245 				case REPLICATE:
49246 				case REPLICATION:
49247 				case RESUMABLE:
49248 				case ROWGUIDCOL:
49249 				case SAVE:
49250 				case SELF:
49251 				case SPARSE:
49252 				case SWITCH:
49253 				case TRAN:
49254 				case TRANCOUNT:
49255 				case CONTROL:
49256 				case CONCAT:
49257 				case TAKE:
49258 				case OWNERSHIP:
49259 				case DEFINITION:
49260 				case APPLICATION:
49261 				case ASSEMBLY:
49262 				case SYMMETRIC:
49263 				case ASYMMETRIC:
49264 				case SERVER:
49265 				case RECEIVE:
49266 				case CHANGE:
49267 				case TRACE:
49268 				case TRACKING:
49269 				case RESOURCES:
49270 				case SETTINGS:
49271 				case STATE:
49272 				case AVAILABILITY:
49273 				case CREDENTIAL:
49274 				case ENDPOINT:
49275 				case EVENT:
49276 				case NOTIFICATION:
49277 				case LINKED:
49278 				case AUDIT:
49279 				case DDL:
49280 				case XML:
49281 				case IMPERSONATE:
49282 				case SECURABLES:
49283 				case AUTHENTICATE:
49284 				case EXTERNAL:
49285 				case ACCESS:
49286 				case ADMINISTER:
49287 				case BULK:
49288 				case OPERATIONS:
49289 				case UNSAFE:
49290 				case SHUTDOWN:
49291 				case SCOPED:
49292 				case CONFIGURATION:
49293 				case DATASPACE:
49294 				case SERVICE:
49295 				case CERTIFICATE:
49296 				case CONTRACT:
49297 				case ENCRYPTION:
49298 				case MASTER:
49299 				case DATA:
49300 				case SOURCE:
49301 				case FILE:
49302 				case FORMAT:
49303 				case LIBRARY:
49304 				case FULLTEXT:
49305 				case MASK:
49306 				case UNMASK:
49307 				case MESSAGE:
49308 				case REMOTE:
49309 				case BINDING:
49310 				case ROUTE:
49311 				case SECURITY:
49312 				case POLICY:
49313 				case AGGREGATE:
49314 				case QUEUE:
49315 				case RULE:
49316 				case SYNONYM:
49317 				case COLLECTION:
49318 				case SCRIPT:
49319 				case KILL:
49320 				case BACKUP:
49321 				case LOG:
49322 				case SHOWPLAN:
49323 				case SUBSCRIBE:
49324 				case QUERY:
49325 				case NOTIFICATIONS:
49326 				case CHECKPOINT:
49327 				case SEQUENCE:
49328 				case ABORT_AFTER_WAIT:
49329 				case ALLOW_PAGE_LOCKS:
49330 				case ALLOW_ROW_LOCKS:
49331 				case ALL_SPARSE_COLUMNS:
49332 				case BUCKET_COUNT:
49333 				case COLUMNSTORE_ARCHIVE:
49334 				case COLUMN_ENCRYPTION_KEY:
49335 				case COLUMN_SET:
49336 				case COMPRESSION_DELAY:
49337 				case DATABASE_DEAULT:
49338 				case DATA_COMPRESSION:
49339 				case DATA_CONSISTENCY_CHECK:
49340 				case ENCRYPTION_TYPE:
49341 				case SYSTEM_TIME:
49342 				case SYSTEM_VERSIONING:
49343 				case TEXTIMAGE_ON:
49344 				case WAIT_AT_LOW_PRIORITY:
49345 				case STATISTICS_INCREMENTAL:
49346 				case STATISTICS_NORECOMPUTE:
49347 				case ROUND_ROBIN:
49348 				case SCHEMA_AND_DATA:
49349 				case SCHEMA_ONLY:
49350 				case SORT_IN_TEMPDB:
49351 				case IGNORE_DUP_KEY:
49352 				case IMPLICIT_TRANSACTIONS:
49353 				case MAX_DURATION:
49354 				case MEMORY_OPTIMIZED:
49355 				case MIGRATION_STATE:
49356 				case PAD_INDEX:
49357 				case REMOTE_DATA_ARCHIVE:
49358 				case FILESTREAM_ON:
49359 				case FILETABLE_COLLATE_FILENAME:
49360 				case FILETABLE_DIRECTORY:
49361 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
49362 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
49363 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
49364 				case FILTER_PREDICATE:
49365 				case HISTORY_RETENTION_PERIOD:
49366 				case HISTORY_TABLE:
49367 				case LOCK_ESCALATION:
49368 				case DROP_EXISTING:
49369 				case ROW_NUMBER:
49370 				case FIRST:
49371 				case DATETIME2:
49372 				case OUTPUT:
49373 				case INSERTED:
49374 				case DELETED:
49375 				case FILENAME:
49376 				case SIZE:
49377 				case MAXSIZE:
49378 				case FILEGROWTH:
49379 				case UNLIMITED:
49380 				case KB:
49381 				case MB:
49382 				case GB:
49383 				case TB:
49384 				case CONTAINS:
49385 				case MEMORY_OPTIMIZED_DATA:
49386 				case FILEGROUP:
49387 				case NON_TRANSACTED_ACCESS:
49388 				case DB_CHAINING:
49389 				case TRUSTWORTHY:
49390 				case FORWARD_ONLY:
49391 				case KEYSET:
49392 				case FAST_FORWARD:
49393 				case SCROLL_LOCKS:
49394 				case OPTIMISTIC:
49395 				case TYPE_WARNING:
49396 				case SCHEMABINDING:
49397 				case CALLER:
49398 				case INPUT:
49399 				case OWNER:
49400 				case SNAPSHOT:
49401 				case REPEATABLE:
49402 				case SERIALIZABLE:
49403 				case NATIVE_COMPILATION:
49404 				case VIEW_METADATA:
49405 				case INSTEAD:
49406 				case APPEND:
49407 				case INCREMENT:
49408 				case CACHE:
49409 				case MINVALUE:
49410 				case MAXVALUE:
49411 				case RESTART:
49412 				case LOB_COMPACTION:
49413 				case COMPRESS_ALL_ROW_GROUPS:
49414 				case REORGANIZE:
49415 				case RESUME:
49416 				case PAUSE:
49417 				case ABORT:
49418 				case ACCELERATED_DATABASE_RECOVERY:
49419 				case PERSISTENT_VERSION_STORE_FILEGROUP:
49420 				case IMMEDIATE:
49421 				case NO_WAIT:
49422 				case TARGET_RECOVERY_TIME:
49423 				case SECONDS:
49424 				case HONOR_BROKER_PRIORITY:
49425 				case ERROR_BROKER_CONVERSATIONS:
49426 				case NEW_BROKER:
49427 				case DISABLE_BROKER:
49428 				case ENABLE_BROKER:
49429 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
49430 				case READ_COMMITTED_SNAPSHOT:
49431 				case ALLOW_SNAPSHOT_ISOLATION:
49432 				case RECURSIVE_TRIGGERS:
49433 				case QUOTED_IDENTIFIER:
49434 				case NUMERIC_ROUNDABORT:
49435 				case CONCAT_NULL_YIELDS_NULL:
49436 				case COMPATIBILITY_LEVEL:
49437 				case ARITHABORT:
49438 				case ANSI_WARNINGS:
49439 				case ANSI_PADDING:
49440 				case ANSI_NULLS:
49441 				case ANSI_NULL_DEFAULT:
49442 				case PAGE_VERIFY:
49443 				case CHECKSUM:
49444 				case TORN_PAGE_DETECTION:
49445 				case BULK_LOGGED:
49446 				case RECOVERY:
49447 				case TOTAL_EXECUTION_CPU_TIME_MS:
49448 				case TOTAL_COMPILE_CPU_TIME_MS:
49449 				case STALE_CAPTURE_POLICY_THRESHOLD:
49450 				case EXECUTION_COUNT:
49451 				case QUERY_CAPTURE_POLICY:
49452 				case WAIT_STATS_CAPTURE_MODE:
49453 				case MAX_PLANS_PER_QUERY:
49454 				case QUERY_CAPTURE_MODE:
49455 				case SIZE_BASED_CLEANUP_MODE:
49456 				case INTERVAL_LENGTH_MINUTES:
49457 				case MAX_STORAGE_SIZE_MB:
49458 				case DATA_FLUSH_INTERVAL_SECONDS:
49459 				case CLEANUP_POLICY:
49460 				case CUSTOM:
49461 				case STALE_QUERY_THRESHOLD_DAYS:
49462 				case OPERATION_MODE:
49463 				case QUERY_STORE:
49464 				case CURSOR_DEFAULT:
49465 				case GLOBAL:
49466 				case CURSOR_CLOSE_ON_COMMIT:
49467 				case HOURS:
49468 				case CHANGE_RETENTION:
49469 				case AUTO_CLEANUP:
49470 				case CHANGE_TRACKING:
49471 				case AUTOMATIC_TUNING:
49472 				case FORCE_LAST_GOOD_PLAN:
49473 				case AUTO_UPDATE_STATISTICS_ASYNC:
49474 				case AUTO_UPDATE_STATISTICS:
49475 				case AUTO_SHRINK:
49476 				case AUTO_CREATE_STATISTICS:
49477 				case INCREMENTAL:
49478 				case AUTO_CLOSE:
49479 				case DATA_RETENTION:
49480 				case TEMPORAL_HISTORY_RETENTION:
49481 				case EDITION:
49482 				case MIXED_PAGE_ALLOCATION:
49483 				case DISABLED:
49484 				case ALLOWED:
49485 				case HADR:
49486 				case MULTI_USER:
49487 				case RESTRICTED_USER:
49488 				case SINGLE_USER:
49489 				case OFFLINE:
49490 				case EMERGENCY:
49491 				case SUSPEND:
49492 				case DATE_CORRELATION_OPTIMIZATION:
49493 				case ELASTIC_POOL:
49494 				case SERVICE_OBJECTIVE:
49495 				case DATABASE_NAME:
49496 				case ALLOW_CONNECTIONS:
49497 				case GEO:
49498 				case NAMED:
49499 				case DATEFIRST:
49500 				case BACKUP_STORAGE_REDUNDANCY:
49501 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
49502 				case SECONDARY:
49503 				case FAILOVER:
49504 				case DEFAULT_FULLTEXT_LANGUAGE:
49505 				case DEFAULT_LANGUAGE:
49506 				case INLINE:
49507 				case NESTED_TRIGGERS:
49508 				case TRANSFORM_NOISE_WORDS:
49509 				case TWO_DIGIT_YEAR_CUTOFF:
49510 				case PERSISTENT_LOG_BUFFER:
49511 				case DIRECTORY_NAME:
49512 				case DATEFORMAT:
49513 				case DELAYED_DURABILITY:
49514 				case AUTHORIZATION:
49515 				case TRANSFER:
49516 				case PROVIDER:
49517 				case SID:
49518 				case SEARCH:
49519 				case MEMBER:
49520 				case JSON:
49521 				case IDENTIFIER_:
49522 				case DELIMITED_IDENTIFIER_:
49523 					{
49524 					setState(6884);
49525 					identifier();
49526 					}
49527 					break;
49528 				default:
49529 					throw new NoViableAltException(this);
49530 				}
49531 				}
49532 				break;
49533 			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
49534 				enterOuterAlt(_localctx, 3);
49535 				{
49536 				setState(6887);
49537 				match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
49538 				setState(6888);
49539 				match(EQ_);
49540 				setState(6890);
49541 				_errHandler.sync(this);
49542 				_la = _input.LA(1);
49543 				if (_la==ON || _la==OFF) {
49544 					{
49545 					setState(6889);
49546 					_la = _input.LA(1);
49547 					if ( !(_la==ON || _la==OFF) ) {
49548 					_errHandler.recoverInline(this);
49549 					}
49550 					else {
49551 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
49552 						_errHandler.reportMatch(this);
49553 						consume();
49554 					}
49555 					}
49556 				}
49557 
49558 				}
49559 				break;
49560 			default:
49561 				throw new NoViableAltException(this);
49562 			}
49563 		}
49564 		catch (RecognitionException re) {
49565 			_localctx.exception = re;
49566 			_errHandler.reportError(this, re);
49567 			_errHandler.recover(this, re);
49568 		}
49569 		finally {
49570 			exitRule();
49571 		}
49572 		return _localctx;
49573 	}
49574 
49575 	public static class CreateUserFromExternalProviderClauseContext extends ParserRuleContext {
49576 		public UserNameContext userName() {
49577 			return getRuleContext(UserNameContext.class,0);
49578 		}
49579 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
49580 		public IdentifierContext identifier() {
49581 			return getRuleContext(IdentifierContext.class,0);
49582 		}
49583 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
49584 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
49585 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
49586 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
49587 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
49588 		public List<LimitedOptionsListContext> limitedOptionsList() {
49589 			return getRuleContexts(LimitedOptionsListContext.class);
49590 		}
49591 		public LimitedOptionsListContext limitedOptionsList(int i) {
49592 			return getRuleContext(LimitedOptionsListContext.class,i);
49593 		}
49594 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
49595 		public TerminalNode COMMA_(int i) {
49596 			return getToken(SQLServerStatementParser.COMMA_, i);
49597 		}
49598 		public CreateUserFromExternalProviderClauseContext(ParserRuleContext parent, int invokingState) {
49599 			super(parent, invokingState);
49600 		}
49601 		@Override public int getRuleIndex() { return RULE_createUserFromExternalProviderClause; }
49602 		@Override
49603 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
49604 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserFromExternalProviderClause(this);
49605 			else return visitor.visitChildren(this);
49606 		}
49607 	}
49608 
49609 	public final CreateUserFromExternalProviderClauseContext createUserFromExternalProviderClause() throws RecognitionException {
49610 		CreateUserFromExternalProviderClauseContext _localctx = new CreateUserFromExternalProviderClauseContext(_ctx, getState());
49611 		enterRule(_localctx, 936, RULE_createUserFromExternalProviderClause);
49612 		int _la;
49613 		try {
49614 			setState(6914);
49615 			_errHandler.sync(this);
49616 			switch (_input.LA(1)) {
49617 			case TRUNCATE:
49618 			case SCHEMA:
49619 			case COLUMNS:
49620 			case PRECISION:
49621 			case FUNCTION:
49622 			case TRIGGER:
49623 			case CAST:
49624 			case TRIM:
49625 			case SUBSTRING:
49626 			case RIGHT:
49627 			case OFF:
49628 			case GROUP:
49629 			case LIMIT:
49630 			case OFFSET:
49631 			case SAVEPOINT:
49632 			case BOOLEAN:
49633 			case ARRAY:
49634 			case DATE:
49635 			case TIMESTAMP:
49636 			case LOCALTIME:
49637 			case LOCALTIMESTAMP:
49638 			case YEAR:
49639 			case QUARTER:
49640 			case MONTH:
49641 			case WEEK:
49642 			case DAY:
49643 			case SECOND:
49644 			case MICROSECOND:
49645 			case MAX:
49646 			case MIN:
49647 			case SUM:
49648 			case COUNT:
49649 			case AVG:
49650 			case ENABLE:
49651 			case DISABLE:
49652 			case INSTANCE:
49653 			case DO:
49654 			case DEFINER:
49655 			case SQL:
49656 			case CASCADED:
49657 			case LOCAL:
49658 			case NEXT:
49659 			case NAME:
49660 			case INTEGER:
49661 			case TYPE:
49662 			case TEXT:
49663 			case VIEWS:
49664 			case READ_ONLY:
49665 			case DATABASE:
49666 			case RETURNS:
49667 			case DATEPART:
49668 			case PASSWORD:
49669 			case BINARY:
49670 			case HIDDEN_:
49671 			case MOD:
49672 			case PARTITION:
49673 			case PARTITIONS:
49674 			case TOP:
49675 			case ROW:
49676 			case ROWS:
49677 			case XOR:
49678 			case ALWAYS:
49679 			case USER:
49680 			case ROLE:
49681 			case START:
49682 			case ALGORITHM:
49683 			case AUTO:
49684 			case BLOCKERS:
49685 			case CLUSTERED:
49686 			case NONCLUSTERED:
49687 			case COLUMNSTORE:
49688 			case CONTENT:
49689 			case YEARS:
49690 			case MONTHS:
49691 			case WEEKS:
49692 			case DAYS:
49693 			case MINUTES:
49694 			case DENY:
49695 			case DETERMINISTIC:
49696 			case DISTRIBUTION:
49697 			case DOCUMENT:
49698 			case DURABILITY:
49699 			case ENCRYPTED:
49700 			case FILESTREAM:
49701 			case FILETABLE:
49702 			case FILLFACTOR:
49703 			case FOLLOWING:
49704 			case HASH:
49705 			case HEAP:
49706 			case INBOUND:
49707 			case OUTBOUND:
49708 			case UNBOUNDED:
49709 			case INFINITE:
49710 			case LOGIN:
49711 			case MASKED:
49712 			case MAXDOP:
49713 			case MOVE:
49714 			case NOCHECK:
49715 			case OBJECT:
49716 			case ONLINE:
49717 			case OVER:
49718 			case PAGE:
49719 			case PAUSED:
49720 			case PERIOD:
49721 			case PERSISTED:
49722 			case PRECEDING:
49723 			case RANDOMIZED:
49724 			case RANGE:
49725 			case REBUILD:
49726 			case REPLICATE:
49727 			case REPLICATION:
49728 			case RESUMABLE:
49729 			case ROWGUIDCOL:
49730 			case SAVE:
49731 			case SELF:
49732 			case SPARSE:
49733 			case SWITCH:
49734 			case TRAN:
49735 			case TRANCOUNT:
49736 			case CONTROL:
49737 			case CONCAT:
49738 			case TAKE:
49739 			case OWNERSHIP:
49740 			case DEFINITION:
49741 			case APPLICATION:
49742 			case ASSEMBLY:
49743 			case SYMMETRIC:
49744 			case ASYMMETRIC:
49745 			case SERVER:
49746 			case RECEIVE:
49747 			case CHANGE:
49748 			case TRACE:
49749 			case TRACKING:
49750 			case RESOURCES:
49751 			case SETTINGS:
49752 			case STATE:
49753 			case AVAILABILITY:
49754 			case CREDENTIAL:
49755 			case ENDPOINT:
49756 			case EVENT:
49757 			case NOTIFICATION:
49758 			case LINKED:
49759 			case AUDIT:
49760 			case DDL:
49761 			case XML:
49762 			case IMPERSONATE:
49763 			case SECURABLES:
49764 			case AUTHENTICATE:
49765 			case EXTERNAL:
49766 			case ACCESS:
49767 			case ADMINISTER:
49768 			case BULK:
49769 			case OPERATIONS:
49770 			case UNSAFE:
49771 			case SHUTDOWN:
49772 			case SCOPED:
49773 			case CONFIGURATION:
49774 			case DATASPACE:
49775 			case SERVICE:
49776 			case CERTIFICATE:
49777 			case CONTRACT:
49778 			case ENCRYPTION:
49779 			case MASTER:
49780 			case DATA:
49781 			case SOURCE:
49782 			case FILE:
49783 			case FORMAT:
49784 			case LIBRARY:
49785 			case FULLTEXT:
49786 			case MASK:
49787 			case UNMASK:
49788 			case MESSAGE:
49789 			case REMOTE:
49790 			case BINDING:
49791 			case ROUTE:
49792 			case SECURITY:
49793 			case POLICY:
49794 			case AGGREGATE:
49795 			case QUEUE:
49796 			case RULE:
49797 			case SYNONYM:
49798 			case COLLECTION:
49799 			case SCRIPT:
49800 			case KILL:
49801 			case BACKUP:
49802 			case LOG:
49803 			case SHOWPLAN:
49804 			case SUBSCRIBE:
49805 			case QUERY:
49806 			case NOTIFICATIONS:
49807 			case CHECKPOINT:
49808 			case SEQUENCE:
49809 			case ABORT_AFTER_WAIT:
49810 			case ALLOW_PAGE_LOCKS:
49811 			case ALLOW_ROW_LOCKS:
49812 			case ALL_SPARSE_COLUMNS:
49813 			case BUCKET_COUNT:
49814 			case COLUMNSTORE_ARCHIVE:
49815 			case COLUMN_ENCRYPTION_KEY:
49816 			case COLUMN_SET:
49817 			case COMPRESSION_DELAY:
49818 			case DATABASE_DEAULT:
49819 			case DATA_COMPRESSION:
49820 			case DATA_CONSISTENCY_CHECK:
49821 			case ENCRYPTION_TYPE:
49822 			case SYSTEM_TIME:
49823 			case SYSTEM_VERSIONING:
49824 			case TEXTIMAGE_ON:
49825 			case WAIT_AT_LOW_PRIORITY:
49826 			case STATISTICS_INCREMENTAL:
49827 			case STATISTICS_NORECOMPUTE:
49828 			case ROUND_ROBIN:
49829 			case SCHEMA_AND_DATA:
49830 			case SCHEMA_ONLY:
49831 			case SORT_IN_TEMPDB:
49832 			case IGNORE_DUP_KEY:
49833 			case IMPLICIT_TRANSACTIONS:
49834 			case MAX_DURATION:
49835 			case MEMORY_OPTIMIZED:
49836 			case MIGRATION_STATE:
49837 			case PAD_INDEX:
49838 			case REMOTE_DATA_ARCHIVE:
49839 			case FILESTREAM_ON:
49840 			case FILETABLE_COLLATE_FILENAME:
49841 			case FILETABLE_DIRECTORY:
49842 			case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
49843 			case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
49844 			case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
49845 			case FILTER_PREDICATE:
49846 			case HISTORY_RETENTION_PERIOD:
49847 			case HISTORY_TABLE:
49848 			case LOCK_ESCALATION:
49849 			case DROP_EXISTING:
49850 			case ROW_NUMBER:
49851 			case FIRST:
49852 			case DATETIME2:
49853 			case OUTPUT:
49854 			case INSERTED:
49855 			case DELETED:
49856 			case FILENAME:
49857 			case SIZE:
49858 			case MAXSIZE:
49859 			case FILEGROWTH:
49860 			case UNLIMITED:
49861 			case KB:
49862 			case MB:
49863 			case GB:
49864 			case TB:
49865 			case CONTAINS:
49866 			case MEMORY_OPTIMIZED_DATA:
49867 			case FILEGROUP:
49868 			case NON_TRANSACTED_ACCESS:
49869 			case DB_CHAINING:
49870 			case TRUSTWORTHY:
49871 			case FORWARD_ONLY:
49872 			case KEYSET:
49873 			case FAST_FORWARD:
49874 			case SCROLL_LOCKS:
49875 			case OPTIMISTIC:
49876 			case TYPE_WARNING:
49877 			case SCHEMABINDING:
49878 			case CALLER:
49879 			case INPUT:
49880 			case OWNER:
49881 			case SNAPSHOT:
49882 			case REPEATABLE:
49883 			case SERIALIZABLE:
49884 			case NATIVE_COMPILATION:
49885 			case VIEW_METADATA:
49886 			case INSTEAD:
49887 			case APPEND:
49888 			case INCREMENT:
49889 			case CACHE:
49890 			case MINVALUE:
49891 			case MAXVALUE:
49892 			case RESTART:
49893 			case LOB_COMPACTION:
49894 			case COMPRESS_ALL_ROW_GROUPS:
49895 			case REORGANIZE:
49896 			case RESUME:
49897 			case PAUSE:
49898 			case ABORT:
49899 			case ACCELERATED_DATABASE_RECOVERY:
49900 			case PERSISTENT_VERSION_STORE_FILEGROUP:
49901 			case IMMEDIATE:
49902 			case NO_WAIT:
49903 			case TARGET_RECOVERY_TIME:
49904 			case SECONDS:
49905 			case HONOR_BROKER_PRIORITY:
49906 			case ERROR_BROKER_CONVERSATIONS:
49907 			case NEW_BROKER:
49908 			case DISABLE_BROKER:
49909 			case ENABLE_BROKER:
49910 			case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
49911 			case READ_COMMITTED_SNAPSHOT:
49912 			case ALLOW_SNAPSHOT_ISOLATION:
49913 			case RECURSIVE_TRIGGERS:
49914 			case QUOTED_IDENTIFIER:
49915 			case NUMERIC_ROUNDABORT:
49916 			case CONCAT_NULL_YIELDS_NULL:
49917 			case COMPATIBILITY_LEVEL:
49918 			case ARITHABORT:
49919 			case ANSI_WARNINGS:
49920 			case ANSI_PADDING:
49921 			case ANSI_NULLS:
49922 			case ANSI_NULL_DEFAULT:
49923 			case PAGE_VERIFY:
49924 			case CHECKSUM:
49925 			case TORN_PAGE_DETECTION:
49926 			case BULK_LOGGED:
49927 			case RECOVERY:
49928 			case TOTAL_EXECUTION_CPU_TIME_MS:
49929 			case TOTAL_COMPILE_CPU_TIME_MS:
49930 			case STALE_CAPTURE_POLICY_THRESHOLD:
49931 			case EXECUTION_COUNT:
49932 			case QUERY_CAPTURE_POLICY:
49933 			case WAIT_STATS_CAPTURE_MODE:
49934 			case MAX_PLANS_PER_QUERY:
49935 			case QUERY_CAPTURE_MODE:
49936 			case SIZE_BASED_CLEANUP_MODE:
49937 			case INTERVAL_LENGTH_MINUTES:
49938 			case MAX_STORAGE_SIZE_MB:
49939 			case DATA_FLUSH_INTERVAL_SECONDS:
49940 			case CLEANUP_POLICY:
49941 			case CUSTOM:
49942 			case STALE_QUERY_THRESHOLD_DAYS:
49943 			case OPERATION_MODE:
49944 			case QUERY_STORE:
49945 			case CURSOR_DEFAULT:
49946 			case GLOBAL:
49947 			case CURSOR_CLOSE_ON_COMMIT:
49948 			case HOURS:
49949 			case CHANGE_RETENTION:
49950 			case AUTO_CLEANUP:
49951 			case CHANGE_TRACKING:
49952 			case AUTOMATIC_TUNING:
49953 			case FORCE_LAST_GOOD_PLAN:
49954 			case AUTO_UPDATE_STATISTICS_ASYNC:
49955 			case AUTO_UPDATE_STATISTICS:
49956 			case AUTO_SHRINK:
49957 			case AUTO_CREATE_STATISTICS:
49958 			case INCREMENTAL:
49959 			case AUTO_CLOSE:
49960 			case DATA_RETENTION:
49961 			case TEMPORAL_HISTORY_RETENTION:
49962 			case EDITION:
49963 			case MIXED_PAGE_ALLOCATION:
49964 			case DISABLED:
49965 			case ALLOWED:
49966 			case HADR:
49967 			case MULTI_USER:
49968 			case RESTRICTED_USER:
49969 			case SINGLE_USER:
49970 			case OFFLINE:
49971 			case EMERGENCY:
49972 			case SUSPEND:
49973 			case DATE_CORRELATION_OPTIMIZATION:
49974 			case ELASTIC_POOL:
49975 			case SERVICE_OBJECTIVE:
49976 			case DATABASE_NAME:
49977 			case ALLOW_CONNECTIONS:
49978 			case GEO:
49979 			case NAMED:
49980 			case DATEFIRST:
49981 			case BACKUP_STORAGE_REDUNDANCY:
49982 			case FORCE_FAILOVER_ALLOW_DATA_LOSS:
49983 			case SECONDARY:
49984 			case FAILOVER:
49985 			case DEFAULT_FULLTEXT_LANGUAGE:
49986 			case DEFAULT_LANGUAGE:
49987 			case INLINE:
49988 			case NESTED_TRIGGERS:
49989 			case TRANSFORM_NOISE_WORDS:
49990 			case TWO_DIGIT_YEAR_CUTOFF:
49991 			case PERSISTENT_LOG_BUFFER:
49992 			case DIRECTORY_NAME:
49993 			case DATEFORMAT:
49994 			case DELAYED_DURABILITY:
49995 			case AUTHORIZATION:
49996 			case TRANSFER:
49997 			case PROVIDER:
49998 			case SID:
49999 			case SEARCH:
50000 			case MEMBER:
50001 			case JSON:
50002 			case IDENTIFIER_:
50003 			case DELIMITED_IDENTIFIER_:
50004 				enterOuterAlt(_localctx, 1);
50005 				{
50006 				setState(6894);
50007 				userName();
50008 				setState(6898);
50009 				_errHandler.sync(this);
50010 				_la = _input.LA(1);
50011 				if (_la==FROM || _la==FOR) {
50012 					{
50013 					setState(6895);
50014 					_la = _input.LA(1);
50015 					if ( !(_la==FROM || _la==FOR) ) {
50016 					_errHandler.recoverInline(this);
50017 					}
50018 					else {
50019 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
50020 						_errHandler.reportMatch(this);
50021 						consume();
50022 					}
50023 					setState(6896);
50024 					match(LOGIN);
50025 					setState(6897);
50026 					identifier();
50027 					}
50028 				}
50029 
50030 				}
50031 				break;
50032 			case FROM:
50033 				enterOuterAlt(_localctx, 2);
50034 				{
50035 				setState(6900);
50036 				match(FROM);
50037 				setState(6901);
50038 				match(EXTERNAL);
50039 				setState(6902);
50040 				match(PROVIDER);
50041 				setState(6912);
50042 				_errHandler.sync(this);
50043 				_la = _input.LA(1);
50044 				if (_la==WITH) {
50045 					{
50046 					setState(6903);
50047 					match(WITH);
50048 					setState(6904);
50049 					limitedOptionsList();
50050 					setState(6909);
50051 					_errHandler.sync(this);
50052 					_la = _input.LA(1);
50053 					while (_la==COMMA_) {
50054 						{
50055 						{
50056 						setState(6905);
50057 						match(COMMA_);
50058 						setState(6906);
50059 						limitedOptionsList();
50060 						}
50061 						}
50062 						setState(6911);
50063 						_errHandler.sync(this);
50064 						_la = _input.LA(1);
50065 					}
50066 					}
50067 				}
50068 
50069 				}
50070 				break;
50071 			default:
50072 				throw new NoViableAltException(this);
50073 			}
50074 		}
50075 		catch (RecognitionException re) {
50076 			_localctx.exception = re;
50077 			_errHandler.reportError(this, re);
50078 			_errHandler.recover(this, re);
50079 		}
50080 		finally {
50081 			exitRule();
50082 		}
50083 		return _localctx;
50084 	}
50085 
50086 	public static class CreateUserWithDefaultSchemaContext extends ParserRuleContext {
50087 		public UserNameContext userName() {
50088 			return getRuleContext(UserNameContext.class,0);
50089 		}
50090 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
50091 		public IdentifierContext identifier() {
50092 			return getRuleContext(IdentifierContext.class,0);
50093 		}
50094 		public TerminalNode WITHOUT() { return getToken(SQLServerStatementParser.WITHOUT, 0); }
50095 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
50096 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
50097 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
50098 		public SchemaNameContext schemaName() {
50099 			return getRuleContext(SchemaNameContext.class,0);
50100 		}
50101 		public TerminalNode FOR() { return getToken(SQLServerStatementParser.FOR, 0); }
50102 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
50103 		public CreateUserWithDefaultSchemaContext(ParserRuleContext parent, int invokingState) {
50104 			super(parent, invokingState);
50105 		}
50106 		@Override public int getRuleIndex() { return RULE_createUserWithDefaultSchema; }
50107 		@Override
50108 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50109 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWithDefaultSchema(this);
50110 			else return visitor.visitChildren(this);
50111 		}
50112 	}
50113 
50114 	public final CreateUserWithDefaultSchemaContext createUserWithDefaultSchema() throws RecognitionException {
50115 		CreateUserWithDefaultSchemaContext _localctx = new CreateUserWithDefaultSchemaContext(_ctx, getState());
50116 		enterRule(_localctx, 938, RULE_createUserWithDefaultSchema);
50117 		int _la;
50118 		try {
50119 			enterOuterAlt(_localctx, 1);
50120 			{
50121 			setState(6916);
50122 			userName();
50123 			setState(6922);
50124 			_errHandler.sync(this);
50125 			switch (_input.LA(1)) {
50126 			case FROM:
50127 			case FOR:
50128 				{
50129 				setState(6917);
50130 				_la = _input.LA(1);
50131 				if ( !(_la==FROM || _la==FOR) ) {
50132 				_errHandler.recoverInline(this);
50133 				}
50134 				else {
50135 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
50136 					_errHandler.reportMatch(this);
50137 					consume();
50138 				}
50139 				setState(6918);
50140 				match(LOGIN);
50141 				setState(6919);
50142 				identifier();
50143 				}
50144 				break;
50145 			case WITHOUT:
50146 				{
50147 				setState(6920);
50148 				match(WITHOUT);
50149 				setState(6921);
50150 				match(LOGIN);
50151 				}
50152 				break;
50153 			case EOF:
50154 			case SEMI_:
50155 			case WITH:
50156 				break;
50157 			default:
50158 				break;
50159 			}
50160 			setState(6928);
50161 			_errHandler.sync(this);
50162 			_la = _input.LA(1);
50163 			if (_la==WITH) {
50164 				{
50165 				setState(6924);
50166 				match(WITH);
50167 				setState(6925);
50168 				match(DEFAULT_SCHEMA);
50169 				setState(6926);
50170 				match(EQ_);
50171 				setState(6927);
50172 				schemaName();
50173 				}
50174 			}
50175 
50176 			}
50177 		}
50178 		catch (RecognitionException re) {
50179 			_localctx.exception = re;
50180 			_errHandler.reportError(this, re);
50181 			_errHandler.recover(this, re);
50182 		}
50183 		finally {
50184 			exitRule();
50185 		}
50186 		return _localctx;
50187 	}
50188 
50189 	public static class CreateUserWithAzureActiveDirectoryPrincipalClauseContext extends ParserRuleContext {
50190 		public AzureActiveDirectoryPrincipalContext azureActiveDirectoryPrincipal() {
50191 			return getRuleContext(AzureActiveDirectoryPrincipalContext.class,0);
50192 		}
50193 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
50194 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
50195 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
50196 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
50197 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
50198 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
50199 		public SchemaNameContext schemaName() {
50200 			return getRuleContext(SchemaNameContext.class,0);
50201 		}
50202 		public CreateUserWithAzureActiveDirectoryPrincipalClauseContext(ParserRuleContext parent, int invokingState) {
50203 			super(parent, invokingState);
50204 		}
50205 		@Override public int getRuleIndex() { return RULE_createUserWithAzureActiveDirectoryPrincipalClause; }
50206 		@Override
50207 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50208 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateUserWithAzureActiveDirectoryPrincipalClause(this);
50209 			else return visitor.visitChildren(this);
50210 		}
50211 	}
50212 
50213 	public final CreateUserWithAzureActiveDirectoryPrincipalClauseContext createUserWithAzureActiveDirectoryPrincipalClause() throws RecognitionException {
50214 		CreateUserWithAzureActiveDirectoryPrincipalClauseContext _localctx = new CreateUserWithAzureActiveDirectoryPrincipalClauseContext(_ctx, getState());
50215 		enterRule(_localctx, 940, RULE_createUserWithAzureActiveDirectoryPrincipalClause);
50216 		int _la;
50217 		try {
50218 			enterOuterAlt(_localctx, 1);
50219 			{
50220 			setState(6930);
50221 			azureActiveDirectoryPrincipal();
50222 			setState(6931);
50223 			match(FROM);
50224 			setState(6932);
50225 			match(EXTERNAL);
50226 			setState(6933);
50227 			match(PROVIDER);
50228 			setState(6938);
50229 			_errHandler.sync(this);
50230 			_la = _input.LA(1);
50231 			if (_la==WITH) {
50232 				{
50233 				setState(6934);
50234 				match(WITH);
50235 				setState(6935);
50236 				match(DEFAULT_SCHEMA);
50237 				setState(6936);
50238 				match(EQ_);
50239 				setState(6937);
50240 				schemaName();
50241 				}
50242 			}
50243 
50244 			}
50245 		}
50246 		catch (RecognitionException re) {
50247 			_localctx.exception = re;
50248 			_errHandler.reportError(this, re);
50249 			_errHandler.recover(this, re);
50250 		}
50251 		finally {
50252 			exitRule();
50253 		}
50254 		return _localctx;
50255 	}
50256 
50257 	public static class WindowsPrincipalContext extends ParserRuleContext {
50258 		public UserNameContext userName() {
50259 			return getRuleContext(UserNameContext.class,0);
50260 		}
50261 		public WindowsPrincipalContext(ParserRuleContext parent, int invokingState) {
50262 			super(parent, invokingState);
50263 		}
50264 		@Override public int getRuleIndex() { return RULE_windowsPrincipal; }
50265 		@Override
50266 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50267 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowsPrincipal(this);
50268 			else return visitor.visitChildren(this);
50269 		}
50270 	}
50271 
50272 	public final WindowsPrincipalContext windowsPrincipal() throws RecognitionException {
50273 		WindowsPrincipalContext _localctx = new WindowsPrincipalContext(_ctx, getState());
50274 		enterRule(_localctx, 942, RULE_windowsPrincipal);
50275 		try {
50276 			enterOuterAlt(_localctx, 1);
50277 			{
50278 			setState(6940);
50279 			userName();
50280 			}
50281 		}
50282 		catch (RecognitionException re) {
50283 			_localctx.exception = re;
50284 			_errHandler.reportError(this, re);
50285 			_errHandler.recover(this, re);
50286 		}
50287 		finally {
50288 			exitRule();
50289 		}
50290 		return _localctx;
50291 	}
50292 
50293 	public static class AzureActiveDirectoryPrincipalContext extends ParserRuleContext {
50294 		public UserNameContext userName() {
50295 			return getRuleContext(UserNameContext.class,0);
50296 		}
50297 		public AzureActiveDirectoryPrincipalContext(ParserRuleContext parent, int invokingState) {
50298 			super(parent, invokingState);
50299 		}
50300 		@Override public int getRuleIndex() { return RULE_azureActiveDirectoryPrincipal; }
50301 		@Override
50302 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50303 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAzureActiveDirectoryPrincipal(this);
50304 			else return visitor.visitChildren(this);
50305 		}
50306 	}
50307 
50308 	public final AzureActiveDirectoryPrincipalContext azureActiveDirectoryPrincipal() throws RecognitionException {
50309 		AzureActiveDirectoryPrincipalContext _localctx = new AzureActiveDirectoryPrincipalContext(_ctx, getState());
50310 		enterRule(_localctx, 944, RULE_azureActiveDirectoryPrincipal);
50311 		try {
50312 			enterOuterAlt(_localctx, 1);
50313 			{
50314 			setState(6942);
50315 			userName();
50316 			}
50317 		}
50318 		catch (RecognitionException re) {
50319 			_localctx.exception = re;
50320 			_errHandler.reportError(this, re);
50321 			_errHandler.recover(this, re);
50322 		}
50323 		finally {
50324 			exitRule();
50325 		}
50326 		return _localctx;
50327 	}
50328 
50329 	public static class UserNameContext extends ParserRuleContext {
50330 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
50331 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
50332 		}
50333 		public UserNameContext(ParserRuleContext parent, int invokingState) {
50334 			super(parent, invokingState);
50335 		}
50336 		@Override public int getRuleIndex() { return RULE_userName; }
50337 		@Override
50338 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50339 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitUserName(this);
50340 			else return visitor.visitChildren(this);
50341 		}
50342 	}
50343 
50344 	public final UserNameContext userName() throws RecognitionException {
50345 		UserNameContext _localctx = new UserNameContext(_ctx, getState());
50346 		enterRule(_localctx, 946, RULE_userName);
50347 		try {
50348 			enterOuterAlt(_localctx, 1);
50349 			{
50350 			setState(6944);
50351 			ignoredNameIdentifier();
50352 			}
50353 		}
50354 		catch (RecognitionException re) {
50355 			_localctx.exception = re;
50356 			_errHandler.reportError(this, re);
50357 			_errHandler.recover(this, re);
50358 		}
50359 		finally {
50360 			exitRule();
50361 		}
50362 		return _localctx;
50363 	}
50364 
50365 	public static class IgnoredNameIdentifierContext extends ParserRuleContext {
50366 		public List<IdentifierContext> identifier() {
50367 			return getRuleContexts(IdentifierContext.class);
50368 		}
50369 		public IdentifierContext identifier(int i) {
50370 			return getRuleContext(IdentifierContext.class,i);
50371 		}
50372 		public TerminalNode DOT_() { return getToken(SQLServerStatementParser.DOT_, 0); }
50373 		public IgnoredNameIdentifierContext(ParserRuleContext parent, int invokingState) {
50374 			super(parent, invokingState);
50375 		}
50376 		@Override public int getRuleIndex() { return RULE_ignoredNameIdentifier; }
50377 		@Override
50378 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50379 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitIgnoredNameIdentifier(this);
50380 			else return visitor.visitChildren(this);
50381 		}
50382 	}
50383 
50384 	public final IgnoredNameIdentifierContext ignoredNameIdentifier() throws RecognitionException {
50385 		IgnoredNameIdentifierContext _localctx = new IgnoredNameIdentifierContext(_ctx, getState());
50386 		enterRule(_localctx, 948, RULE_ignoredNameIdentifier);
50387 		int _la;
50388 		try {
50389 			enterOuterAlt(_localctx, 1);
50390 			{
50391 			setState(6946);
50392 			identifier();
50393 			setState(6949);
50394 			_errHandler.sync(this);
50395 			_la = _input.LA(1);
50396 			if (_la==DOT_) {
50397 				{
50398 				setState(6947);
50399 				match(DOT_);
50400 				setState(6948);
50401 				identifier();
50402 				}
50403 			}
50404 
50405 			}
50406 		}
50407 		catch (RecognitionException re) {
50408 			_localctx.exception = re;
50409 			_errHandler.reportError(this, re);
50410 			_errHandler.recover(this, re);
50411 		}
50412 		finally {
50413 			exitRule();
50414 		}
50415 		return _localctx;
50416 	}
50417 
50418 	public static class DropUserContext extends ParserRuleContext {
50419 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
50420 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
50421 		public UserNameContext userName() {
50422 			return getRuleContext(UserNameContext.class,0);
50423 		}
50424 		public IfExistsContext ifExists() {
50425 			return getRuleContext(IfExistsContext.class,0);
50426 		}
50427 		public DropUserContext(ParserRuleContext parent, int invokingState) {
50428 			super(parent, invokingState);
50429 		}
50430 		@Override public int getRuleIndex() { return RULE_dropUser; }
50431 		@Override
50432 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50433 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropUser(this);
50434 			else return visitor.visitChildren(this);
50435 		}
50436 	}
50437 
50438 	public final DropUserContext dropUser() throws RecognitionException {
50439 		DropUserContext _localctx = new DropUserContext(_ctx, getState());
50440 		enterRule(_localctx, 950, RULE_dropUser);
50441 		int _la;
50442 		try {
50443 			enterOuterAlt(_localctx, 1);
50444 			{
50445 			setState(6951);
50446 			match(DROP);
50447 			setState(6952);
50448 			match(USER);
50449 			setState(6954);
50450 			_errHandler.sync(this);
50451 			_la = _input.LA(1);
50452 			if (_la==IF) {
50453 				{
50454 				setState(6953);
50455 				ifExists();
50456 				}
50457 			}
50458 
50459 			setState(6956);
50460 			userName();
50461 			}
50462 		}
50463 		catch (RecognitionException re) {
50464 			_localctx.exception = re;
50465 			_errHandler.reportError(this, re);
50466 			_errHandler.recover(this, re);
50467 		}
50468 		finally {
50469 			exitRule();
50470 		}
50471 		return _localctx;
50472 	}
50473 
50474 	public static class AlterUserContext extends ParserRuleContext {
50475 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
50476 		public TerminalNode USER() { return getToken(SQLServerStatementParser.USER, 0); }
50477 		public UserNameContext userName() {
50478 			return getRuleContext(UserNameContext.class,0);
50479 		}
50480 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
50481 		public List<SetItemContext> setItem() {
50482 			return getRuleContexts(SetItemContext.class);
50483 		}
50484 		public SetItemContext setItem(int i) {
50485 			return getRuleContext(SetItemContext.class,i);
50486 		}
50487 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
50488 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
50489 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
50490 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
50491 		public TerminalNode COMMA_(int i) {
50492 			return getToken(SQLServerStatementParser.COMMA_, i);
50493 		}
50494 		public AlterUserContext(ParserRuleContext parent, int invokingState) {
50495 			super(parent, invokingState);
50496 		}
50497 		@Override public int getRuleIndex() { return RULE_alterUser; }
50498 		@Override
50499 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50500 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterUser(this);
50501 			else return visitor.visitChildren(this);
50502 		}
50503 	}
50504 
50505 	public final AlterUserContext alterUser() throws RecognitionException {
50506 		AlterUserContext _localctx = new AlterUserContext(_ctx, getState());
50507 		enterRule(_localctx, 952, RULE_alterUser);
50508 		int _la;
50509 		try {
50510 			enterOuterAlt(_localctx, 1);
50511 			{
50512 			setState(6958);
50513 			match(ALTER);
50514 			setState(6959);
50515 			match(USER);
50516 			setState(6960);
50517 			userName();
50518 			setState(6973);
50519 			_errHandler.sync(this);
50520 			switch (_input.LA(1)) {
50521 			case WITH:
50522 				{
50523 				setState(6961);
50524 				match(WITH);
50525 				setState(6962);
50526 				setItem();
50527 				setState(6967);
50528 				_errHandler.sync(this);
50529 				_la = _input.LA(1);
50530 				while (_la==COMMA_) {
50531 					{
50532 					{
50533 					setState(6963);
50534 					match(COMMA_);
50535 					setState(6964);
50536 					setItem();
50537 					}
50538 					}
50539 					setState(6969);
50540 					_errHandler.sync(this);
50541 					_la = _input.LA(1);
50542 				}
50543 				}
50544 				break;
50545 			case FROM:
50546 				{
50547 				setState(6970);
50548 				match(FROM);
50549 				setState(6971);
50550 				match(EXTERNAL);
50551 				setState(6972);
50552 				match(PROVIDER);
50553 				}
50554 				break;
50555 			default:
50556 				throw new NoViableAltException(this);
50557 			}
50558 			}
50559 		}
50560 		catch (RecognitionException re) {
50561 			_localctx.exception = re;
50562 			_errHandler.reportError(this, re);
50563 			_errHandler.recover(this, re);
50564 		}
50565 		finally {
50566 			exitRule();
50567 		}
50568 		return _localctx;
50569 	}
50570 
50571 	public static class SetItemContext extends ParserRuleContext {
50572 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
50573 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
50574 		public TerminalNode EQ_(int i) {
50575 			return getToken(SQLServerStatementParser.EQ_, i);
50576 		}
50577 		public UserNameContext userName() {
50578 			return getRuleContext(UserNameContext.class,0);
50579 		}
50580 		public TerminalNode DEFAULT_SCHEMA() { return getToken(SQLServerStatementParser.DEFAULT_SCHEMA, 0); }
50581 		public SchemaNameContext schemaName() {
50582 			return getRuleContext(SchemaNameContext.class,0);
50583 		}
50584 		public TerminalNode NULL() { return getToken(SQLServerStatementParser.NULL, 0); }
50585 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
50586 		public IdentifierContext identifier() {
50587 			return getRuleContext(IdentifierContext.class,0);
50588 		}
50589 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
50590 		public List<StringLiteralsContext> stringLiterals() {
50591 			return getRuleContexts(StringLiteralsContext.class);
50592 		}
50593 		public StringLiteralsContext stringLiterals(int i) {
50594 			return getRuleContext(StringLiteralsContext.class,i);
50595 		}
50596 		public TerminalNode OLD_PASSWORD() { return getToken(SQLServerStatementParser.OLD_PASSWORD, 0); }
50597 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
50598 		public TerminalNode NONE() { return getToken(SQLServerStatementParser.NONE, 0); }
50599 		public TerminalNode ALLOW_ENCRYPTED_VALUE_MODIFICATIONS() { return getToken(SQLServerStatementParser.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS, 0); }
50600 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
50601 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
50602 		public SetItemContext(ParserRuleContext parent, int invokingState) {
50603 			super(parent, invokingState);
50604 		}
50605 		@Override public int getRuleIndex() { return RULE_setItem; }
50606 		@Override
50607 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
50608 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetItem(this);
50609 			else return visitor.visitChildren(this);
50610 		}
50611 	}
50612 
50613 	public final SetItemContext setItem() throws RecognitionException {
50614 		SetItemContext _localctx = new SetItemContext(_ctx, getState());
50615 		enterRule(_localctx, 954, RULE_setItem);
50616 		int _la;
50617 		try {
50618 			setState(7006);
50619 			_errHandler.sync(this);
50620 			switch (_input.LA(1)) {
50621 			case NAME:
50622 				enterOuterAlt(_localctx, 1);
50623 				{
50624 				setState(6975);
50625 				match(NAME);
50626 				setState(6976);
50627 				match(EQ_);
50628 				setState(6977);
50629 				userName();
50630 				}
50631 				break;
50632 			case DEFAULT_SCHEMA:
50633 				enterOuterAlt(_localctx, 2);
50634 				{
50635 				setState(6978);
50636 				match(DEFAULT_SCHEMA);
50637 				setState(6979);
50638 				match(EQ_);
50639 				setState(6982);
50640 				_errHandler.sync(this);
50641 				switch (_input.LA(1)) {
50642 				case TRUNCATE:
50643 				case SCHEMA:
50644 				case COLUMNS:
50645 				case PRECISION:
50646 				case FUNCTION:
50647 				case TRIGGER:
50648 				case CAST:
50649 				case TRIM:
50650 				case SUBSTRING:
50651 				case RIGHT:
50652 				case OFF:
50653 				case GROUP:
50654 				case LIMIT:
50655 				case OFFSET:
50656 				case SAVEPOINT:
50657 				case BOOLEAN:
50658 				case ARRAY:
50659 				case DATE:
50660 				case TIMESTAMP:
50661 				case LOCALTIME:
50662 				case LOCALTIMESTAMP:
50663 				case YEAR:
50664 				case QUARTER:
50665 				case MONTH:
50666 				case WEEK:
50667 				case DAY:
50668 				case SECOND:
50669 				case MICROSECOND:
50670 				case MAX:
50671 				case MIN:
50672 				case SUM:
50673 				case COUNT:
50674 				case AVG:
50675 				case ENABLE:
50676 				case DISABLE:
50677 				case INSTANCE:
50678 				case DO:
50679 				case DEFINER:
50680 				case SQL:
50681 				case CASCADED:
50682 				case LOCAL:
50683 				case NEXT:
50684 				case NAME:
50685 				case INTEGER:
50686 				case TYPE:
50687 				case TEXT:
50688 				case VIEWS:
50689 				case READ_ONLY:
50690 				case DATABASE:
50691 				case RETURNS:
50692 				case DATEPART:
50693 				case PASSWORD:
50694 				case BINARY:
50695 				case HIDDEN_:
50696 				case MOD:
50697 				case PARTITION:
50698 				case PARTITIONS:
50699 				case TOP:
50700 				case ROW:
50701 				case ROWS:
50702 				case XOR:
50703 				case ALWAYS:
50704 				case USER:
50705 				case ROLE:
50706 				case START:
50707 				case ALGORITHM:
50708 				case AUTO:
50709 				case BLOCKERS:
50710 				case CLUSTERED:
50711 				case NONCLUSTERED:
50712 				case COLUMNSTORE:
50713 				case CONTENT:
50714 				case YEARS:
50715 				case MONTHS:
50716 				case WEEKS:
50717 				case DAYS:
50718 				case MINUTES:
50719 				case DENY:
50720 				case DETERMINISTIC:
50721 				case DISTRIBUTION:
50722 				case DOCUMENT:
50723 				case DURABILITY:
50724 				case ENCRYPTED:
50725 				case FILESTREAM:
50726 				case FILETABLE:
50727 				case FILLFACTOR:
50728 				case FOLLOWING:
50729 				case HASH:
50730 				case HEAP:
50731 				case INBOUND:
50732 				case OUTBOUND:
50733 				case UNBOUNDED:
50734 				case INFINITE:
50735 				case LOGIN:
50736 				case MASKED:
50737 				case MAXDOP:
50738 				case MOVE:
50739 				case NOCHECK:
50740 				case OBJECT:
50741 				case ONLINE:
50742 				case OVER:
50743 				case PAGE:
50744 				case PAUSED:
50745 				case PERIOD:
50746 				case PERSISTED:
50747 				case PRECEDING:
50748 				case RANDOMIZED:
50749 				case RANGE:
50750 				case REBUILD:
50751 				case REPLICATE:
50752 				case REPLICATION:
50753 				case RESUMABLE:
50754 				case ROWGUIDCOL:
50755 				case SAVE:
50756 				case SELF:
50757 				case SPARSE:
50758 				case SWITCH:
50759 				case TRAN:
50760 				case TRANCOUNT:
50761 				case CONTROL:
50762 				case CONCAT:
50763 				case TAKE:
50764 				case OWNERSHIP:
50765 				case DEFINITION:
50766 				case APPLICATION:
50767 				case ASSEMBLY:
50768 				case SYMMETRIC:
50769 				case ASYMMETRIC:
50770 				case SERVER:
50771 				case RECEIVE:
50772 				case CHANGE:
50773 				case TRACE:
50774 				case TRACKING:
50775 				case RESOURCES:
50776 				case SETTINGS:
50777 				case STATE:
50778 				case AVAILABILITY:
50779 				case CREDENTIAL:
50780 				case ENDPOINT:
50781 				case EVENT:
50782 				case NOTIFICATION:
50783 				case LINKED:
50784 				case AUDIT:
50785 				case DDL:
50786 				case XML:
50787 				case IMPERSONATE:
50788 				case SECURABLES:
50789 				case AUTHENTICATE:
50790 				case EXTERNAL:
50791 				case ACCESS:
50792 				case ADMINISTER:
50793 				case BULK:
50794 				case OPERATIONS:
50795 				case UNSAFE:
50796 				case SHUTDOWN:
50797 				case SCOPED:
50798 				case CONFIGURATION:
50799 				case DATASPACE:
50800 				case SERVICE:
50801 				case CERTIFICATE:
50802 				case CONTRACT:
50803 				case ENCRYPTION:
50804 				case MASTER:
50805 				case DATA:
50806 				case SOURCE:
50807 				case FILE:
50808 				case FORMAT:
50809 				case LIBRARY:
50810 				case FULLTEXT:
50811 				case MASK:
50812 				case UNMASK:
50813 				case MESSAGE:
50814 				case REMOTE:
50815 				case BINDING:
50816 				case ROUTE:
50817 				case SECURITY:
50818 				case POLICY:
50819 				case AGGREGATE:
50820 				case QUEUE:
50821 				case RULE:
50822 				case SYNONYM:
50823 				case COLLECTION:
50824 				case SCRIPT:
50825 				case KILL:
50826 				case BACKUP:
50827 				case LOG:
50828 				case SHOWPLAN:
50829 				case SUBSCRIBE:
50830 				case QUERY:
50831 				case NOTIFICATIONS:
50832 				case CHECKPOINT:
50833 				case SEQUENCE:
50834 				case ABORT_AFTER_WAIT:
50835 				case ALLOW_PAGE_LOCKS:
50836 				case ALLOW_ROW_LOCKS:
50837 				case ALL_SPARSE_COLUMNS:
50838 				case BUCKET_COUNT:
50839 				case COLUMNSTORE_ARCHIVE:
50840 				case COLUMN_ENCRYPTION_KEY:
50841 				case COLUMN_SET:
50842 				case COMPRESSION_DELAY:
50843 				case DATABASE_DEAULT:
50844 				case DATA_COMPRESSION:
50845 				case DATA_CONSISTENCY_CHECK:
50846 				case ENCRYPTION_TYPE:
50847 				case SYSTEM_TIME:
50848 				case SYSTEM_VERSIONING:
50849 				case TEXTIMAGE_ON:
50850 				case WAIT_AT_LOW_PRIORITY:
50851 				case STATISTICS_INCREMENTAL:
50852 				case STATISTICS_NORECOMPUTE:
50853 				case ROUND_ROBIN:
50854 				case SCHEMA_AND_DATA:
50855 				case SCHEMA_ONLY:
50856 				case SORT_IN_TEMPDB:
50857 				case IGNORE_DUP_KEY:
50858 				case IMPLICIT_TRANSACTIONS:
50859 				case MAX_DURATION:
50860 				case MEMORY_OPTIMIZED:
50861 				case MIGRATION_STATE:
50862 				case PAD_INDEX:
50863 				case REMOTE_DATA_ARCHIVE:
50864 				case FILESTREAM_ON:
50865 				case FILETABLE_COLLATE_FILENAME:
50866 				case FILETABLE_DIRECTORY:
50867 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
50868 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
50869 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
50870 				case FILTER_PREDICATE:
50871 				case HISTORY_RETENTION_PERIOD:
50872 				case HISTORY_TABLE:
50873 				case LOCK_ESCALATION:
50874 				case DROP_EXISTING:
50875 				case ROW_NUMBER:
50876 				case FIRST:
50877 				case DATETIME2:
50878 				case OUTPUT:
50879 				case INSERTED:
50880 				case DELETED:
50881 				case FILENAME:
50882 				case SIZE:
50883 				case MAXSIZE:
50884 				case FILEGROWTH:
50885 				case UNLIMITED:
50886 				case KB:
50887 				case MB:
50888 				case GB:
50889 				case TB:
50890 				case CONTAINS:
50891 				case MEMORY_OPTIMIZED_DATA:
50892 				case FILEGROUP:
50893 				case NON_TRANSACTED_ACCESS:
50894 				case DB_CHAINING:
50895 				case TRUSTWORTHY:
50896 				case FORWARD_ONLY:
50897 				case KEYSET:
50898 				case FAST_FORWARD:
50899 				case SCROLL_LOCKS:
50900 				case OPTIMISTIC:
50901 				case TYPE_WARNING:
50902 				case SCHEMABINDING:
50903 				case CALLER:
50904 				case INPUT:
50905 				case OWNER:
50906 				case SNAPSHOT:
50907 				case REPEATABLE:
50908 				case SERIALIZABLE:
50909 				case NATIVE_COMPILATION:
50910 				case VIEW_METADATA:
50911 				case INSTEAD:
50912 				case APPEND:
50913 				case INCREMENT:
50914 				case CACHE:
50915 				case MINVALUE:
50916 				case MAXVALUE:
50917 				case RESTART:
50918 				case LOB_COMPACTION:
50919 				case COMPRESS_ALL_ROW_GROUPS:
50920 				case REORGANIZE:
50921 				case RESUME:
50922 				case PAUSE:
50923 				case ABORT:
50924 				case ACCELERATED_DATABASE_RECOVERY:
50925 				case PERSISTENT_VERSION_STORE_FILEGROUP:
50926 				case IMMEDIATE:
50927 				case NO_WAIT:
50928 				case TARGET_RECOVERY_TIME:
50929 				case SECONDS:
50930 				case HONOR_BROKER_PRIORITY:
50931 				case ERROR_BROKER_CONVERSATIONS:
50932 				case NEW_BROKER:
50933 				case DISABLE_BROKER:
50934 				case ENABLE_BROKER:
50935 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
50936 				case READ_COMMITTED_SNAPSHOT:
50937 				case ALLOW_SNAPSHOT_ISOLATION:
50938 				case RECURSIVE_TRIGGERS:
50939 				case QUOTED_IDENTIFIER:
50940 				case NUMERIC_ROUNDABORT:
50941 				case CONCAT_NULL_YIELDS_NULL:
50942 				case COMPATIBILITY_LEVEL:
50943 				case ARITHABORT:
50944 				case ANSI_WARNINGS:
50945 				case ANSI_PADDING:
50946 				case ANSI_NULLS:
50947 				case ANSI_NULL_DEFAULT:
50948 				case PAGE_VERIFY:
50949 				case CHECKSUM:
50950 				case TORN_PAGE_DETECTION:
50951 				case BULK_LOGGED:
50952 				case RECOVERY:
50953 				case TOTAL_EXECUTION_CPU_TIME_MS:
50954 				case TOTAL_COMPILE_CPU_TIME_MS:
50955 				case STALE_CAPTURE_POLICY_THRESHOLD:
50956 				case EXECUTION_COUNT:
50957 				case QUERY_CAPTURE_POLICY:
50958 				case WAIT_STATS_CAPTURE_MODE:
50959 				case MAX_PLANS_PER_QUERY:
50960 				case QUERY_CAPTURE_MODE:
50961 				case SIZE_BASED_CLEANUP_MODE:
50962 				case INTERVAL_LENGTH_MINUTES:
50963 				case MAX_STORAGE_SIZE_MB:
50964 				case DATA_FLUSH_INTERVAL_SECONDS:
50965 				case CLEANUP_POLICY:
50966 				case CUSTOM:
50967 				case STALE_QUERY_THRESHOLD_DAYS:
50968 				case OPERATION_MODE:
50969 				case QUERY_STORE:
50970 				case CURSOR_DEFAULT:
50971 				case GLOBAL:
50972 				case CURSOR_CLOSE_ON_COMMIT:
50973 				case HOURS:
50974 				case CHANGE_RETENTION:
50975 				case AUTO_CLEANUP:
50976 				case CHANGE_TRACKING:
50977 				case AUTOMATIC_TUNING:
50978 				case FORCE_LAST_GOOD_PLAN:
50979 				case AUTO_UPDATE_STATISTICS_ASYNC:
50980 				case AUTO_UPDATE_STATISTICS:
50981 				case AUTO_SHRINK:
50982 				case AUTO_CREATE_STATISTICS:
50983 				case INCREMENTAL:
50984 				case AUTO_CLOSE:
50985 				case DATA_RETENTION:
50986 				case TEMPORAL_HISTORY_RETENTION:
50987 				case EDITION:
50988 				case MIXED_PAGE_ALLOCATION:
50989 				case DISABLED:
50990 				case ALLOWED:
50991 				case HADR:
50992 				case MULTI_USER:
50993 				case RESTRICTED_USER:
50994 				case SINGLE_USER:
50995 				case OFFLINE:
50996 				case EMERGENCY:
50997 				case SUSPEND:
50998 				case DATE_CORRELATION_OPTIMIZATION:
50999 				case ELASTIC_POOL:
51000 				case SERVICE_OBJECTIVE:
51001 				case DATABASE_NAME:
51002 				case ALLOW_CONNECTIONS:
51003 				case GEO:
51004 				case NAMED:
51005 				case DATEFIRST:
51006 				case BACKUP_STORAGE_REDUNDANCY:
51007 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
51008 				case SECONDARY:
51009 				case FAILOVER:
51010 				case DEFAULT_FULLTEXT_LANGUAGE:
51011 				case DEFAULT_LANGUAGE:
51012 				case INLINE:
51013 				case NESTED_TRIGGERS:
51014 				case TRANSFORM_NOISE_WORDS:
51015 				case TWO_DIGIT_YEAR_CUTOFF:
51016 				case PERSISTENT_LOG_BUFFER:
51017 				case DIRECTORY_NAME:
51018 				case DATEFORMAT:
51019 				case DELAYED_DURABILITY:
51020 				case AUTHORIZATION:
51021 				case TRANSFER:
51022 				case PROVIDER:
51023 				case SID:
51024 				case SEARCH:
51025 				case MEMBER:
51026 				case JSON:
51027 				case IDENTIFIER_:
51028 				case DELIMITED_IDENTIFIER_:
51029 					{
51030 					setState(6980);
51031 					schemaName();
51032 					}
51033 					break;
51034 				case NULL:
51035 					{
51036 					setState(6981);
51037 					match(NULL);
51038 					}
51039 					break;
51040 				default:
51041 					throw new NoViableAltException(this);
51042 				}
51043 				}
51044 				break;
51045 			case LOGIN:
51046 				enterOuterAlt(_localctx, 3);
51047 				{
51048 				setState(6984);
51049 				match(LOGIN);
51050 				setState(6985);
51051 				match(EQ_);
51052 				setState(6986);
51053 				identifier();
51054 				}
51055 				break;
51056 			case PASSWORD:
51057 				enterOuterAlt(_localctx, 4);
51058 				{
51059 				setState(6987);
51060 				match(PASSWORD);
51061 				setState(6988);
51062 				match(EQ_);
51063 				setState(6989);
51064 				stringLiterals();
51065 				setState(6993);
51066 				_errHandler.sync(this);
51067 				_la = _input.LA(1);
51068 				if (_la==OLD_PASSWORD) {
51069 					{
51070 					setState(6990);
51071 					match(OLD_PASSWORD);
51072 					setState(6991);
51073 					match(EQ_);
51074 					setState(6992);
51075 					stringLiterals();
51076 					}
51077 				}
51078 
51079 				}
51080 				break;
51081 			case DEFAULT_LANGUAGE:
51082 				enterOuterAlt(_localctx, 5);
51083 				{
51084 				setState(6995);
51085 				match(DEFAULT_LANGUAGE);
51086 				setState(6996);
51087 				match(EQ_);
51088 				setState(6999);
51089 				_errHandler.sync(this);
51090 				switch (_input.LA(1)) {
51091 				case NONE:
51092 					{
51093 					setState(6997);
51094 					match(NONE);
51095 					}
51096 					break;
51097 				case TRUNCATE:
51098 				case SCHEMA:
51099 				case COLUMNS:
51100 				case PRECISION:
51101 				case FUNCTION:
51102 				case TRIGGER:
51103 				case CAST:
51104 				case TRIM:
51105 				case SUBSTRING:
51106 				case RIGHT:
51107 				case OFF:
51108 				case GROUP:
51109 				case LIMIT:
51110 				case OFFSET:
51111 				case SAVEPOINT:
51112 				case BOOLEAN:
51113 				case ARRAY:
51114 				case DATE:
51115 				case TIMESTAMP:
51116 				case LOCALTIME:
51117 				case LOCALTIMESTAMP:
51118 				case YEAR:
51119 				case QUARTER:
51120 				case MONTH:
51121 				case WEEK:
51122 				case DAY:
51123 				case SECOND:
51124 				case MICROSECOND:
51125 				case MAX:
51126 				case MIN:
51127 				case SUM:
51128 				case COUNT:
51129 				case AVG:
51130 				case ENABLE:
51131 				case DISABLE:
51132 				case INSTANCE:
51133 				case DO:
51134 				case DEFINER:
51135 				case SQL:
51136 				case CASCADED:
51137 				case LOCAL:
51138 				case NEXT:
51139 				case NAME:
51140 				case INTEGER:
51141 				case TYPE:
51142 				case TEXT:
51143 				case VIEWS:
51144 				case READ_ONLY:
51145 				case DATABASE:
51146 				case RETURNS:
51147 				case DATEPART:
51148 				case PASSWORD:
51149 				case BINARY:
51150 				case HIDDEN_:
51151 				case MOD:
51152 				case PARTITION:
51153 				case PARTITIONS:
51154 				case TOP:
51155 				case ROW:
51156 				case ROWS:
51157 				case XOR:
51158 				case ALWAYS:
51159 				case USER:
51160 				case ROLE:
51161 				case START:
51162 				case ALGORITHM:
51163 				case AUTO:
51164 				case BLOCKERS:
51165 				case CLUSTERED:
51166 				case NONCLUSTERED:
51167 				case COLUMNSTORE:
51168 				case CONTENT:
51169 				case YEARS:
51170 				case MONTHS:
51171 				case WEEKS:
51172 				case DAYS:
51173 				case MINUTES:
51174 				case DENY:
51175 				case DETERMINISTIC:
51176 				case DISTRIBUTION:
51177 				case DOCUMENT:
51178 				case DURABILITY:
51179 				case ENCRYPTED:
51180 				case FILESTREAM:
51181 				case FILETABLE:
51182 				case FILLFACTOR:
51183 				case FOLLOWING:
51184 				case HASH:
51185 				case HEAP:
51186 				case INBOUND:
51187 				case OUTBOUND:
51188 				case UNBOUNDED:
51189 				case INFINITE:
51190 				case LOGIN:
51191 				case MASKED:
51192 				case MAXDOP:
51193 				case MOVE:
51194 				case NOCHECK:
51195 				case OBJECT:
51196 				case ONLINE:
51197 				case OVER:
51198 				case PAGE:
51199 				case PAUSED:
51200 				case PERIOD:
51201 				case PERSISTED:
51202 				case PRECEDING:
51203 				case RANDOMIZED:
51204 				case RANGE:
51205 				case REBUILD:
51206 				case REPLICATE:
51207 				case REPLICATION:
51208 				case RESUMABLE:
51209 				case ROWGUIDCOL:
51210 				case SAVE:
51211 				case SELF:
51212 				case SPARSE:
51213 				case SWITCH:
51214 				case TRAN:
51215 				case TRANCOUNT:
51216 				case CONTROL:
51217 				case CONCAT:
51218 				case TAKE:
51219 				case OWNERSHIP:
51220 				case DEFINITION:
51221 				case APPLICATION:
51222 				case ASSEMBLY:
51223 				case SYMMETRIC:
51224 				case ASYMMETRIC:
51225 				case SERVER:
51226 				case RECEIVE:
51227 				case CHANGE:
51228 				case TRACE:
51229 				case TRACKING:
51230 				case RESOURCES:
51231 				case SETTINGS:
51232 				case STATE:
51233 				case AVAILABILITY:
51234 				case CREDENTIAL:
51235 				case ENDPOINT:
51236 				case EVENT:
51237 				case NOTIFICATION:
51238 				case LINKED:
51239 				case AUDIT:
51240 				case DDL:
51241 				case XML:
51242 				case IMPERSONATE:
51243 				case SECURABLES:
51244 				case AUTHENTICATE:
51245 				case EXTERNAL:
51246 				case ACCESS:
51247 				case ADMINISTER:
51248 				case BULK:
51249 				case OPERATIONS:
51250 				case UNSAFE:
51251 				case SHUTDOWN:
51252 				case SCOPED:
51253 				case CONFIGURATION:
51254 				case DATASPACE:
51255 				case SERVICE:
51256 				case CERTIFICATE:
51257 				case CONTRACT:
51258 				case ENCRYPTION:
51259 				case MASTER:
51260 				case DATA:
51261 				case SOURCE:
51262 				case FILE:
51263 				case FORMAT:
51264 				case LIBRARY:
51265 				case FULLTEXT:
51266 				case MASK:
51267 				case UNMASK:
51268 				case MESSAGE:
51269 				case REMOTE:
51270 				case BINDING:
51271 				case ROUTE:
51272 				case SECURITY:
51273 				case POLICY:
51274 				case AGGREGATE:
51275 				case QUEUE:
51276 				case RULE:
51277 				case SYNONYM:
51278 				case COLLECTION:
51279 				case SCRIPT:
51280 				case KILL:
51281 				case BACKUP:
51282 				case LOG:
51283 				case SHOWPLAN:
51284 				case SUBSCRIBE:
51285 				case QUERY:
51286 				case NOTIFICATIONS:
51287 				case CHECKPOINT:
51288 				case SEQUENCE:
51289 				case ABORT_AFTER_WAIT:
51290 				case ALLOW_PAGE_LOCKS:
51291 				case ALLOW_ROW_LOCKS:
51292 				case ALL_SPARSE_COLUMNS:
51293 				case BUCKET_COUNT:
51294 				case COLUMNSTORE_ARCHIVE:
51295 				case COLUMN_ENCRYPTION_KEY:
51296 				case COLUMN_SET:
51297 				case COMPRESSION_DELAY:
51298 				case DATABASE_DEAULT:
51299 				case DATA_COMPRESSION:
51300 				case DATA_CONSISTENCY_CHECK:
51301 				case ENCRYPTION_TYPE:
51302 				case SYSTEM_TIME:
51303 				case SYSTEM_VERSIONING:
51304 				case TEXTIMAGE_ON:
51305 				case WAIT_AT_LOW_PRIORITY:
51306 				case STATISTICS_INCREMENTAL:
51307 				case STATISTICS_NORECOMPUTE:
51308 				case ROUND_ROBIN:
51309 				case SCHEMA_AND_DATA:
51310 				case SCHEMA_ONLY:
51311 				case SORT_IN_TEMPDB:
51312 				case IGNORE_DUP_KEY:
51313 				case IMPLICIT_TRANSACTIONS:
51314 				case MAX_DURATION:
51315 				case MEMORY_OPTIMIZED:
51316 				case MIGRATION_STATE:
51317 				case PAD_INDEX:
51318 				case REMOTE_DATA_ARCHIVE:
51319 				case FILESTREAM_ON:
51320 				case FILETABLE_COLLATE_FILENAME:
51321 				case FILETABLE_DIRECTORY:
51322 				case FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME:
51323 				case FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME:
51324 				case FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME:
51325 				case FILTER_PREDICATE:
51326 				case HISTORY_RETENTION_PERIOD:
51327 				case HISTORY_TABLE:
51328 				case LOCK_ESCALATION:
51329 				case DROP_EXISTING:
51330 				case ROW_NUMBER:
51331 				case FIRST:
51332 				case DATETIME2:
51333 				case OUTPUT:
51334 				case INSERTED:
51335 				case DELETED:
51336 				case FILENAME:
51337 				case SIZE:
51338 				case MAXSIZE:
51339 				case FILEGROWTH:
51340 				case UNLIMITED:
51341 				case KB:
51342 				case MB:
51343 				case GB:
51344 				case TB:
51345 				case CONTAINS:
51346 				case MEMORY_OPTIMIZED_DATA:
51347 				case FILEGROUP:
51348 				case NON_TRANSACTED_ACCESS:
51349 				case DB_CHAINING:
51350 				case TRUSTWORTHY:
51351 				case FORWARD_ONLY:
51352 				case KEYSET:
51353 				case FAST_FORWARD:
51354 				case SCROLL_LOCKS:
51355 				case OPTIMISTIC:
51356 				case TYPE_WARNING:
51357 				case SCHEMABINDING:
51358 				case CALLER:
51359 				case INPUT:
51360 				case OWNER:
51361 				case SNAPSHOT:
51362 				case REPEATABLE:
51363 				case SERIALIZABLE:
51364 				case NATIVE_COMPILATION:
51365 				case VIEW_METADATA:
51366 				case INSTEAD:
51367 				case APPEND:
51368 				case INCREMENT:
51369 				case CACHE:
51370 				case MINVALUE:
51371 				case MAXVALUE:
51372 				case RESTART:
51373 				case LOB_COMPACTION:
51374 				case COMPRESS_ALL_ROW_GROUPS:
51375 				case REORGANIZE:
51376 				case RESUME:
51377 				case PAUSE:
51378 				case ABORT:
51379 				case ACCELERATED_DATABASE_RECOVERY:
51380 				case PERSISTENT_VERSION_STORE_FILEGROUP:
51381 				case IMMEDIATE:
51382 				case NO_WAIT:
51383 				case TARGET_RECOVERY_TIME:
51384 				case SECONDS:
51385 				case HONOR_BROKER_PRIORITY:
51386 				case ERROR_BROKER_CONVERSATIONS:
51387 				case NEW_BROKER:
51388 				case DISABLE_BROKER:
51389 				case ENABLE_BROKER:
51390 				case MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT:
51391 				case READ_COMMITTED_SNAPSHOT:
51392 				case ALLOW_SNAPSHOT_ISOLATION:
51393 				case RECURSIVE_TRIGGERS:
51394 				case QUOTED_IDENTIFIER:
51395 				case NUMERIC_ROUNDABORT:
51396 				case CONCAT_NULL_YIELDS_NULL:
51397 				case COMPATIBILITY_LEVEL:
51398 				case ARITHABORT:
51399 				case ANSI_WARNINGS:
51400 				case ANSI_PADDING:
51401 				case ANSI_NULLS:
51402 				case ANSI_NULL_DEFAULT:
51403 				case PAGE_VERIFY:
51404 				case CHECKSUM:
51405 				case TORN_PAGE_DETECTION:
51406 				case BULK_LOGGED:
51407 				case RECOVERY:
51408 				case TOTAL_EXECUTION_CPU_TIME_MS:
51409 				case TOTAL_COMPILE_CPU_TIME_MS:
51410 				case STALE_CAPTURE_POLICY_THRESHOLD:
51411 				case EXECUTION_COUNT:
51412 				case QUERY_CAPTURE_POLICY:
51413 				case WAIT_STATS_CAPTURE_MODE:
51414 				case MAX_PLANS_PER_QUERY:
51415 				case QUERY_CAPTURE_MODE:
51416 				case SIZE_BASED_CLEANUP_MODE:
51417 				case INTERVAL_LENGTH_MINUTES:
51418 				case MAX_STORAGE_SIZE_MB:
51419 				case DATA_FLUSH_INTERVAL_SECONDS:
51420 				case CLEANUP_POLICY:
51421 				case CUSTOM:
51422 				case STALE_QUERY_THRESHOLD_DAYS:
51423 				case OPERATION_MODE:
51424 				case QUERY_STORE:
51425 				case CURSOR_DEFAULT:
51426 				case GLOBAL:
51427 				case CURSOR_CLOSE_ON_COMMIT:
51428 				case HOURS:
51429 				case CHANGE_RETENTION:
51430 				case AUTO_CLEANUP:
51431 				case CHANGE_TRACKING:
51432 				case AUTOMATIC_TUNING:
51433 				case FORCE_LAST_GOOD_PLAN:
51434 				case AUTO_UPDATE_STATISTICS_ASYNC:
51435 				case AUTO_UPDATE_STATISTICS:
51436 				case AUTO_SHRINK:
51437 				case AUTO_CREATE_STATISTICS:
51438 				case INCREMENTAL:
51439 				case AUTO_CLOSE:
51440 				case DATA_RETENTION:
51441 				case TEMPORAL_HISTORY_RETENTION:
51442 				case EDITION:
51443 				case MIXED_PAGE_ALLOCATION:
51444 				case DISABLED:
51445 				case ALLOWED:
51446 				case HADR:
51447 				case MULTI_USER:
51448 				case RESTRICTED_USER:
51449 				case SINGLE_USER:
51450 				case OFFLINE:
51451 				case EMERGENCY:
51452 				case SUSPEND:
51453 				case DATE_CORRELATION_OPTIMIZATION:
51454 				case ELASTIC_POOL:
51455 				case SERVICE_OBJECTIVE:
51456 				case DATABASE_NAME:
51457 				case ALLOW_CONNECTIONS:
51458 				case GEO:
51459 				case NAMED:
51460 				case DATEFIRST:
51461 				case BACKUP_STORAGE_REDUNDANCY:
51462 				case FORCE_FAILOVER_ALLOW_DATA_LOSS:
51463 				case SECONDARY:
51464 				case FAILOVER:
51465 				case DEFAULT_FULLTEXT_LANGUAGE:
51466 				case DEFAULT_LANGUAGE:
51467 				case INLINE:
51468 				case NESTED_TRIGGERS:
51469 				case TRANSFORM_NOISE_WORDS:
51470 				case TWO_DIGIT_YEAR_CUTOFF:
51471 				case PERSISTENT_LOG_BUFFER:
51472 				case DIRECTORY_NAME:
51473 				case DATEFORMAT:
51474 				case DELAYED_DURABILITY:
51475 				case AUTHORIZATION:
51476 				case TRANSFER:
51477 				case PROVIDER:
51478 				case SID:
51479 				case SEARCH:
51480 				case MEMBER:
51481 				case JSON:
51482 				case IDENTIFIER_:
51483 				case DELIMITED_IDENTIFIER_:
51484 					{
51485 					setState(6998);
51486 					identifier();
51487 					}
51488 					break;
51489 				default:
51490 					throw new NoViableAltException(this);
51491 				}
51492 				}
51493 				break;
51494 			case ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:
51495 				enterOuterAlt(_localctx, 6);
51496 				{
51497 				setState(7001);
51498 				match(ALLOW_ENCRYPTED_VALUE_MODIFICATIONS);
51499 				setState(7002);
51500 				match(EQ_);
51501 				setState(7004);
51502 				_errHandler.sync(this);
51503 				_la = _input.LA(1);
51504 				if (_la==ON || _la==OFF) {
51505 					{
51506 					setState(7003);
51507 					_la = _input.LA(1);
51508 					if ( !(_la==ON || _la==OFF) ) {
51509 					_errHandler.recoverInline(this);
51510 					}
51511 					else {
51512 						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
51513 						_errHandler.reportMatch(this);
51514 						consume();
51515 					}
51516 					}
51517 				}
51518 
51519 				}
51520 				break;
51521 			default:
51522 				throw new NoViableAltException(this);
51523 			}
51524 		}
51525 		catch (RecognitionException re) {
51526 			_localctx.exception = re;
51527 			_errHandler.reportError(this, re);
51528 			_errHandler.recover(this, re);
51529 		}
51530 		finally {
51531 			exitRule();
51532 		}
51533 		return _localctx;
51534 	}
51535 
51536 	public static class CreateRoleContext extends ParserRuleContext {
51537 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
51538 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
51539 		public List<NameContext> name() {
51540 			return getRuleContexts(NameContext.class);
51541 		}
51542 		public NameContext name(int i) {
51543 			return getRuleContext(NameContext.class,i);
51544 		}
51545 		public TerminalNode AUTHORIZATION() { return getToken(SQLServerStatementParser.AUTHORIZATION, 0); }
51546 		public CreateRoleContext(ParserRuleContext parent, int invokingState) {
51547 			super(parent, invokingState);
51548 		}
51549 		@Override public int getRuleIndex() { return RULE_createRole; }
51550 		@Override
51551 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51552 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateRole(this);
51553 			else return visitor.visitChildren(this);
51554 		}
51555 	}
51556 
51557 	public final CreateRoleContext createRole() throws RecognitionException {
51558 		CreateRoleContext _localctx = new CreateRoleContext(_ctx, getState());
51559 		enterRule(_localctx, 956, RULE_createRole);
51560 		int _la;
51561 		try {
51562 			enterOuterAlt(_localctx, 1);
51563 			{
51564 			setState(7008);
51565 			match(CREATE);
51566 			setState(7009);
51567 			match(ROLE);
51568 			setState(7010);
51569 			name();
51570 			setState(7013);
51571 			_errHandler.sync(this);
51572 			_la = _input.LA(1);
51573 			if (_la==AUTHORIZATION) {
51574 				{
51575 				setState(7011);
51576 				match(AUTHORIZATION);
51577 				setState(7012);
51578 				name();
51579 				}
51580 			}
51581 
51582 			}
51583 		}
51584 		catch (RecognitionException re) {
51585 			_localctx.exception = re;
51586 			_errHandler.reportError(this, re);
51587 			_errHandler.recover(this, re);
51588 		}
51589 		finally {
51590 			exitRule();
51591 		}
51592 		return _localctx;
51593 	}
51594 
51595 	public static class DropRoleContext extends ParserRuleContext {
51596 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
51597 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
51598 		public NameContext name() {
51599 			return getRuleContext(NameContext.class,0);
51600 		}
51601 		public IfExistsContext ifExists() {
51602 			return getRuleContext(IfExistsContext.class,0);
51603 		}
51604 		public DropRoleContext(ParserRuleContext parent, int invokingState) {
51605 			super(parent, invokingState);
51606 		}
51607 		@Override public int getRuleIndex() { return RULE_dropRole; }
51608 		@Override
51609 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51610 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropRole(this);
51611 			else return visitor.visitChildren(this);
51612 		}
51613 	}
51614 
51615 	public final DropRoleContext dropRole() throws RecognitionException {
51616 		DropRoleContext _localctx = new DropRoleContext(_ctx, getState());
51617 		enterRule(_localctx, 958, RULE_dropRole);
51618 		int _la;
51619 		try {
51620 			enterOuterAlt(_localctx, 1);
51621 			{
51622 			setState(7015);
51623 			match(DROP);
51624 			setState(7016);
51625 			match(ROLE);
51626 			setState(7018);
51627 			_errHandler.sync(this);
51628 			_la = _input.LA(1);
51629 			if (_la==IF) {
51630 				{
51631 				setState(7017);
51632 				ifExists();
51633 				}
51634 			}
51635 
51636 			setState(7020);
51637 			name();
51638 			}
51639 		}
51640 		catch (RecognitionException re) {
51641 			_localctx.exception = re;
51642 			_errHandler.reportError(this, re);
51643 			_errHandler.recover(this, re);
51644 		}
51645 		finally {
51646 			exitRule();
51647 		}
51648 		return _localctx;
51649 	}
51650 
51651 	public static class AlterRoleContext extends ParserRuleContext {
51652 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
51653 		public TerminalNode ROLE() { return getToken(SQLServerStatementParser.ROLE, 0); }
51654 		public List<NameContext> name() {
51655 			return getRuleContexts(NameContext.class);
51656 		}
51657 		public NameContext name(int i) {
51658 			return getRuleContext(NameContext.class,i);
51659 		}
51660 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
51661 		public TerminalNode MEMBER() { return getToken(SQLServerStatementParser.MEMBER, 0); }
51662 		public PrincipalContext principal() {
51663 			return getRuleContext(PrincipalContext.class,0);
51664 		}
51665 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
51666 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
51667 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
51668 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
51669 		public AlterRoleContext(ParserRuleContext parent, int invokingState) {
51670 			super(parent, invokingState);
51671 		}
51672 		@Override public int getRuleIndex() { return RULE_alterRole; }
51673 		@Override
51674 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51675 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterRole(this);
51676 			else return visitor.visitChildren(this);
51677 		}
51678 	}
51679 
51680 	public final AlterRoleContext alterRole() throws RecognitionException {
51681 		AlterRoleContext _localctx = new AlterRoleContext(_ctx, getState());
51682 		enterRule(_localctx, 960, RULE_alterRole);
51683 		try {
51684 			enterOuterAlt(_localctx, 1);
51685 			{
51686 			setState(7022);
51687 			match(ALTER);
51688 			setState(7023);
51689 			match(ROLE);
51690 			setState(7024);
51691 			name();
51692 			setState(7035);
51693 			_errHandler.sync(this);
51694 			switch (_input.LA(1)) {
51695 			case ADD:
51696 				{
51697 				setState(7025);
51698 				match(ADD);
51699 				setState(7026);
51700 				match(MEMBER);
51701 				setState(7027);
51702 				principal();
51703 				}
51704 				break;
51705 			case DROP:
51706 				{
51707 				setState(7028);
51708 				match(DROP);
51709 				setState(7029);
51710 				match(MEMBER);
51711 				setState(7030);
51712 				principal();
51713 				}
51714 				break;
51715 			case WITH:
51716 				{
51717 				setState(7031);
51718 				match(WITH);
51719 				setState(7032);
51720 				match(NAME);
51721 				setState(7033);
51722 				match(EQ_);
51723 				setState(7034);
51724 				name();
51725 				}
51726 				break;
51727 			default:
51728 				throw new NoViableAltException(this);
51729 			}
51730 			}
51731 		}
51732 		catch (RecognitionException re) {
51733 			_localctx.exception = re;
51734 			_errHandler.reportError(this, re);
51735 			_errHandler.recover(this, re);
51736 		}
51737 		finally {
51738 			exitRule();
51739 		}
51740 		return _localctx;
51741 	}
51742 
51743 	public static class CreateLoginContext extends ParserRuleContext {
51744 		public TerminalNode CREATE() { return getToken(SQLServerStatementParser.CREATE, 0); }
51745 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
51746 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
51747 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
51748 		}
51749 		public CreateLoginForSQLServerClauseContext createLoginForSQLServerClause() {
51750 			return getRuleContext(CreateLoginForSQLServerClauseContext.class,0);
51751 		}
51752 		public CreateLoginForAzureSQLDatabaseClauseContext createLoginForAzureSQLDatabaseClause() {
51753 			return getRuleContext(CreateLoginForAzureSQLDatabaseClauseContext.class,0);
51754 		}
51755 		public CreateLoginForAzureManagedInstanceClauseContext createLoginForAzureManagedInstanceClause() {
51756 			return getRuleContext(CreateLoginForAzureManagedInstanceClauseContext.class,0);
51757 		}
51758 		public CreateLoginForAzureSynapseAnalyticsClauseContext createLoginForAzureSynapseAnalyticsClause() {
51759 			return getRuleContext(CreateLoginForAzureSynapseAnalyticsClauseContext.class,0);
51760 		}
51761 		public CreateLoginForAnalyticsPlatformSystemClauseContext createLoginForAnalyticsPlatformSystemClause() {
51762 			return getRuleContext(CreateLoginForAnalyticsPlatformSystemClauseContext.class,0);
51763 		}
51764 		public CreateLoginContext(ParserRuleContext parent, int invokingState) {
51765 			super(parent, invokingState);
51766 		}
51767 		@Override public int getRuleIndex() { return RULE_createLogin; }
51768 		@Override
51769 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51770 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLogin(this);
51771 			else return visitor.visitChildren(this);
51772 		}
51773 	}
51774 
51775 	public final CreateLoginContext createLogin() throws RecognitionException {
51776 		CreateLoginContext _localctx = new CreateLoginContext(_ctx, getState());
51777 		enterRule(_localctx, 962, RULE_createLogin);
51778 		try {
51779 			enterOuterAlt(_localctx, 1);
51780 			{
51781 			setState(7037);
51782 			match(CREATE);
51783 			setState(7038);
51784 			match(LOGIN);
51785 			setState(7039);
51786 			ignoredNameIdentifier();
51787 			setState(7045);
51788 			_errHandler.sync(this);
51789 			switch ( getInterpreter().adaptivePredict(_input,820,_ctx) ) {
51790 			case 1:
51791 				{
51792 				setState(7040);
51793 				createLoginForSQLServerClause();
51794 				}
51795 				break;
51796 			case 2:
51797 				{
51798 				setState(7041);
51799 				createLoginForAzureSQLDatabaseClause();
51800 				}
51801 				break;
51802 			case 3:
51803 				{
51804 				setState(7042);
51805 				createLoginForAzureManagedInstanceClause();
51806 				}
51807 				break;
51808 			case 4:
51809 				{
51810 				setState(7043);
51811 				createLoginForAzureSynapseAnalyticsClause();
51812 				}
51813 				break;
51814 			case 5:
51815 				{
51816 				setState(7044);
51817 				createLoginForAnalyticsPlatformSystemClause();
51818 				}
51819 				break;
51820 			}
51821 			}
51822 		}
51823 		catch (RecognitionException re) {
51824 			_localctx.exception = re;
51825 			_errHandler.reportError(this, re);
51826 			_errHandler.recover(this, re);
51827 		}
51828 		finally {
51829 			exitRule();
51830 		}
51831 		return _localctx;
51832 	}
51833 
51834 	public static class CreateLoginForSQLServerClauseContext extends ParserRuleContext {
51835 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
51836 		public CreateLoginForSQLServerOptionListContext createLoginForSQLServerOptionList() {
51837 			return getRuleContext(CreateLoginForSQLServerOptionListContext.class,0);
51838 		}
51839 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
51840 		public SourcesContext sources() {
51841 			return getRuleContext(SourcesContext.class,0);
51842 		}
51843 		public CreateLoginForSQLServerClauseContext(ParserRuleContext parent, int invokingState) {
51844 			super(parent, invokingState);
51845 		}
51846 		@Override public int getRuleIndex() { return RULE_createLoginForSQLServerClause; }
51847 		@Override
51848 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51849 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForSQLServerClause(this);
51850 			else return visitor.visitChildren(this);
51851 		}
51852 	}
51853 
51854 	public final CreateLoginForSQLServerClauseContext createLoginForSQLServerClause() throws RecognitionException {
51855 		CreateLoginForSQLServerClauseContext _localctx = new CreateLoginForSQLServerClauseContext(_ctx, getState());
51856 		enterRule(_localctx, 964, RULE_createLoginForSQLServerClause);
51857 		try {
51858 			setState(7051);
51859 			_errHandler.sync(this);
51860 			switch (_input.LA(1)) {
51861 			case WITH:
51862 				enterOuterAlt(_localctx, 1);
51863 				{
51864 				setState(7047);
51865 				match(WITH);
51866 				setState(7048);
51867 				createLoginForSQLServerOptionList();
51868 				}
51869 				break;
51870 			case FROM:
51871 				enterOuterAlt(_localctx, 2);
51872 				{
51873 				setState(7049);
51874 				match(FROM);
51875 				setState(7050);
51876 				sources();
51877 				}
51878 				break;
51879 			default:
51880 				throw new NoViableAltException(this);
51881 			}
51882 		}
51883 		catch (RecognitionException re) {
51884 			_localctx.exception = re;
51885 			_errHandler.reportError(this, re);
51886 			_errHandler.recover(this, re);
51887 		}
51888 		finally {
51889 			exitRule();
51890 		}
51891 		return _localctx;
51892 	}
51893 
51894 	public static class CreateLoginForSQLServerOptionListContext extends ParserRuleContext {
51895 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
51896 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
51897 		public StringLiteralsContext stringLiterals() {
51898 			return getRuleContext(StringLiteralsContext.class,0);
51899 		}
51900 		public HashedPasswordContext hashedPassword() {
51901 			return getRuleContext(HashedPasswordContext.class,0);
51902 		}
51903 		public TerminalNode HASHED() { return getToken(SQLServerStatementParser.HASHED, 0); }
51904 		public TerminalNode MUST_CHANGE() { return getToken(SQLServerStatementParser.MUST_CHANGE, 0); }
51905 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
51906 		public TerminalNode COMMA_(int i) {
51907 			return getToken(SQLServerStatementParser.COMMA_, i);
51908 		}
51909 		public List<CreateLoginForSQLServerOptionListClauseContext> createLoginForSQLServerOptionListClause() {
51910 			return getRuleContexts(CreateLoginForSQLServerOptionListClauseContext.class);
51911 		}
51912 		public CreateLoginForSQLServerOptionListClauseContext createLoginForSQLServerOptionListClause(int i) {
51913 			return getRuleContext(CreateLoginForSQLServerOptionListClauseContext.class,i);
51914 		}
51915 		public CreateLoginForSQLServerOptionListContext(ParserRuleContext parent, int invokingState) {
51916 			super(parent, invokingState);
51917 		}
51918 		@Override public int getRuleIndex() { return RULE_createLoginForSQLServerOptionList; }
51919 		@Override
51920 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
51921 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForSQLServerOptionList(this);
51922 			else return visitor.visitChildren(this);
51923 		}
51924 	}
51925 
51926 	public final CreateLoginForSQLServerOptionListContext createLoginForSQLServerOptionList() throws RecognitionException {
51927 		CreateLoginForSQLServerOptionListContext _localctx = new CreateLoginForSQLServerOptionListContext(_ctx, getState());
51928 		enterRule(_localctx, 966, RULE_createLoginForSQLServerOptionList);
51929 		int _la;
51930 		try {
51931 			enterOuterAlt(_localctx, 1);
51932 			{
51933 			setState(7053);
51934 			match(PASSWORD);
51935 			setState(7054);
51936 			match(EQ_);
51937 			setState(7059);
51938 			_errHandler.sync(this);
51939 			switch (_input.LA(1)) {
51940 			case STRING_:
51941 			case NCHAR_TEXT:
51942 				{
51943 				setState(7055);
51944 				stringLiterals();
51945 				}
51946 				break;
51947 			case HEX_DIGIT_:
51948 				{
51949 				setState(7056);
51950 				hashedPassword();
51951 				setState(7057);
51952 				match(HASHED);
51953 				}
51954 				break;
51955 			default:
51956 				throw new NoViableAltException(this);
51957 			}
51958 			setState(7062);
51959 			_errHandler.sync(this);
51960 			_la = _input.LA(1);
51961 			if (_la==MUST_CHANGE) {
51962 				{
51963 				setState(7061);
51964 				match(MUST_CHANGE);
51965 				}
51966 			}
51967 
51968 			setState(7073);
51969 			_errHandler.sync(this);
51970 			_la = _input.LA(1);
51971 			if (_la==COMMA_) {
51972 				{
51973 				setState(7064);
51974 				match(COMMA_);
51975 				setState(7065);
51976 				createLoginForSQLServerOptionListClause();
51977 				setState(7070);
51978 				_errHandler.sync(this);
51979 				_la = _input.LA(1);
51980 				while (_la==COMMA_) {
51981 					{
51982 					{
51983 					setState(7066);
51984 					match(COMMA_);
51985 					setState(7067);
51986 					createLoginForSQLServerOptionListClause();
51987 					}
51988 					}
51989 					setState(7072);
51990 					_errHandler.sync(this);
51991 					_la = _input.LA(1);
51992 				}
51993 				}
51994 			}
51995 
51996 			}
51997 		}
51998 		catch (RecognitionException re) {
51999 			_localctx.exception = re;
52000 			_errHandler.reportError(this, re);
52001 			_errHandler.recover(this, re);
52002 		}
52003 		finally {
52004 			exitRule();
52005 		}
52006 		return _localctx;
52007 	}
52008 
52009 	public static class CreateLoginForSQLServerOptionListClauseContext extends ParserRuleContext {
52010 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
52011 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
52012 		public SidContext sid() {
52013 			return getRuleContext(SidContext.class,0);
52014 		}
52015 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
52016 		public DatabaseNameContext databaseName() {
52017 			return getRuleContext(DatabaseNameContext.class,0);
52018 		}
52019 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
52020 		public IdentifierContext identifier() {
52021 			return getRuleContext(IdentifierContext.class,0);
52022 		}
52023 		public TerminalNode CHECK_EXPIRATION() { return getToken(SQLServerStatementParser.CHECK_EXPIRATION, 0); }
52024 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
52025 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
52026 		public TerminalNode CHECK_POLICY() { return getToken(SQLServerStatementParser.CHECK_POLICY, 0); }
52027 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
52028 		public CreateLoginForSQLServerOptionListClauseContext(ParserRuleContext parent, int invokingState) {
52029 			super(parent, invokingState);
52030 		}
52031 		@Override public int getRuleIndex() { return RULE_createLoginForSQLServerOptionListClause; }
52032 		@Override
52033 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52034 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForSQLServerOptionListClause(this);
52035 			else return visitor.visitChildren(this);
52036 		}
52037 	}
52038 
52039 	public final CreateLoginForSQLServerOptionListClauseContext createLoginForSQLServerOptionListClause() throws RecognitionException {
52040 		CreateLoginForSQLServerOptionListClauseContext _localctx = new CreateLoginForSQLServerOptionListClauseContext(_ctx, getState());
52041 		enterRule(_localctx, 968, RULE_createLoginForSQLServerOptionListClause);
52042 		int _la;
52043 		try {
52044 			setState(7093);
52045 			_errHandler.sync(this);
52046 			switch (_input.LA(1)) {
52047 			case SID:
52048 				enterOuterAlt(_localctx, 1);
52049 				{
52050 				setState(7075);
52051 				match(SID);
52052 				setState(7076);
52053 				match(EQ_);
52054 				setState(7077);
52055 				sid();
52056 				}
52057 				break;
52058 			case DEFAULT_DATABASE:
52059 				enterOuterAlt(_localctx, 2);
52060 				{
52061 				setState(7078);
52062 				match(DEFAULT_DATABASE);
52063 				setState(7079);
52064 				match(EQ_);
52065 				setState(7080);
52066 				databaseName();
52067 				}
52068 				break;
52069 			case DEFAULT_LANGUAGE:
52070 				enterOuterAlt(_localctx, 3);
52071 				{
52072 				setState(7081);
52073 				match(DEFAULT_LANGUAGE);
52074 				setState(7082);
52075 				match(EQ_);
52076 				setState(7083);
52077 				identifier();
52078 				}
52079 				break;
52080 			case CHECK_EXPIRATION:
52081 				enterOuterAlt(_localctx, 4);
52082 				{
52083 				setState(7084);
52084 				match(CHECK_EXPIRATION);
52085 				setState(7085);
52086 				match(EQ_);
52087 				setState(7086);
52088 				_la = _input.LA(1);
52089 				if ( !(_la==ON || _la==OFF) ) {
52090 				_errHandler.recoverInline(this);
52091 				}
52092 				else {
52093 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
52094 					_errHandler.reportMatch(this);
52095 					consume();
52096 				}
52097 				}
52098 				break;
52099 			case CHECK_POLICY:
52100 				enterOuterAlt(_localctx, 5);
52101 				{
52102 				setState(7087);
52103 				match(CHECK_POLICY);
52104 				setState(7088);
52105 				match(EQ_);
52106 				setState(7089);
52107 				_la = _input.LA(1);
52108 				if ( !(_la==ON || _la==OFF) ) {
52109 				_errHandler.recoverInline(this);
52110 				}
52111 				else {
52112 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
52113 					_errHandler.reportMatch(this);
52114 					consume();
52115 				}
52116 				}
52117 				break;
52118 			case CREDENTIAL:
52119 				enterOuterAlt(_localctx, 6);
52120 				{
52121 				setState(7090);
52122 				match(CREDENTIAL);
52123 				setState(7091);
52124 				match(EQ_);
52125 				setState(7092);
52126 				identifier();
52127 				}
52128 				break;
52129 			default:
52130 				throw new NoViableAltException(this);
52131 			}
52132 		}
52133 		catch (RecognitionException re) {
52134 			_localctx.exception = re;
52135 			_errHandler.reportError(this, re);
52136 			_errHandler.recover(this, re);
52137 		}
52138 		finally {
52139 			exitRule();
52140 		}
52141 		return _localctx;
52142 	}
52143 
52144 	public static class HashedPasswordContext extends ParserRuleContext {
52145 		public TerminalNode HEX_DIGIT_() { return getToken(SQLServerStatementParser.HEX_DIGIT_, 0); }
52146 		public HashedPasswordContext(ParserRuleContext parent, int invokingState) {
52147 			super(parent, invokingState);
52148 		}
52149 		@Override public int getRuleIndex() { return RULE_hashedPassword; }
52150 		@Override
52151 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52152 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitHashedPassword(this);
52153 			else return visitor.visitChildren(this);
52154 		}
52155 	}
52156 
52157 	public final HashedPasswordContext hashedPassword() throws RecognitionException {
52158 		HashedPasswordContext _localctx = new HashedPasswordContext(_ctx, getState());
52159 		enterRule(_localctx, 970, RULE_hashedPassword);
52160 		try {
52161 			enterOuterAlt(_localctx, 1);
52162 			{
52163 			setState(7095);
52164 			match(HEX_DIGIT_);
52165 			}
52166 		}
52167 		catch (RecognitionException re) {
52168 			_localctx.exception = re;
52169 			_errHandler.reportError(this, re);
52170 			_errHandler.recover(this, re);
52171 		}
52172 		finally {
52173 			exitRule();
52174 		}
52175 		return _localctx;
52176 	}
52177 
52178 	public static class SidContext extends ParserRuleContext {
52179 		public TerminalNode NCHAR_TEXT() { return getToken(SQLServerStatementParser.NCHAR_TEXT, 0); }
52180 		public TerminalNode HEX_DIGIT_() { return getToken(SQLServerStatementParser.HEX_DIGIT_, 0); }
52181 		public SidContext(ParserRuleContext parent, int invokingState) {
52182 			super(parent, invokingState);
52183 		}
52184 		@Override public int getRuleIndex() { return RULE_sid; }
52185 		@Override
52186 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52187 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSid(this);
52188 			else return visitor.visitChildren(this);
52189 		}
52190 	}
52191 
52192 	public final SidContext sid() throws RecognitionException {
52193 		SidContext _localctx = new SidContext(_ctx, getState());
52194 		enterRule(_localctx, 972, RULE_sid);
52195 		int _la;
52196 		try {
52197 			enterOuterAlt(_localctx, 1);
52198 			{
52199 			setState(7097);
52200 			_la = _input.LA(1);
52201 			if ( !(_la==HEX_DIGIT_ || _la==NCHAR_TEXT) ) {
52202 			_errHandler.recoverInline(this);
52203 			}
52204 			else {
52205 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
52206 				_errHandler.reportMatch(this);
52207 				consume();
52208 			}
52209 			}
52210 		}
52211 		catch (RecognitionException re) {
52212 			_localctx.exception = re;
52213 			_errHandler.reportError(this, re);
52214 			_errHandler.recover(this, re);
52215 		}
52216 		finally {
52217 			exitRule();
52218 		}
52219 		return _localctx;
52220 	}
52221 
52222 	public static class SourcesContext extends ParserRuleContext {
52223 		public TerminalNode WINDOWS() { return getToken(SQLServerStatementParser.WINDOWS, 0); }
52224 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
52225 		public List<WindowsOptionsContext> windowsOptions() {
52226 			return getRuleContexts(WindowsOptionsContext.class);
52227 		}
52228 		public WindowsOptionsContext windowsOptions(int i) {
52229 			return getRuleContext(WindowsOptionsContext.class,i);
52230 		}
52231 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
52232 		public TerminalNode COMMA_(int i) {
52233 			return getToken(SQLServerStatementParser.COMMA_, i);
52234 		}
52235 		public TerminalNode CERTIFICATE() { return getToken(SQLServerStatementParser.CERTIFICATE, 0); }
52236 		public IdentifierContext identifier() {
52237 			return getRuleContext(IdentifierContext.class,0);
52238 		}
52239 		public TerminalNode ASYMMETRIC() { return getToken(SQLServerStatementParser.ASYMMETRIC, 0); }
52240 		public TerminalNode KEY() { return getToken(SQLServerStatementParser.KEY, 0); }
52241 		public SourcesContext(ParserRuleContext parent, int invokingState) {
52242 			super(parent, invokingState);
52243 		}
52244 		@Override public int getRuleIndex() { return RULE_sources; }
52245 		@Override
52246 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52247 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSources(this);
52248 			else return visitor.visitChildren(this);
52249 		}
52250 	}
52251 
52252 	public final SourcesContext sources() throws RecognitionException {
52253 		SourcesContext _localctx = new SourcesContext(_ctx, getState());
52254 		enterRule(_localctx, 974, RULE_sources);
52255 		int _la;
52256 		try {
52257 			setState(7116);
52258 			_errHandler.sync(this);
52259 			switch (_input.LA(1)) {
52260 			case WINDOWS:
52261 				enterOuterAlt(_localctx, 1);
52262 				{
52263 				setState(7099);
52264 				match(WINDOWS);
52265 				setState(7109);
52266 				_errHandler.sync(this);
52267 				_la = _input.LA(1);
52268 				if (_la==WITH) {
52269 					{
52270 					setState(7100);
52271 					match(WITH);
52272 					setState(7101);
52273 					windowsOptions();
52274 					setState(7106);
52275 					_errHandler.sync(this);
52276 					_la = _input.LA(1);
52277 					while (_la==COMMA_) {
52278 						{
52279 						{
52280 						setState(7102);
52281 						match(COMMA_);
52282 						setState(7103);
52283 						windowsOptions();
52284 						}
52285 						}
52286 						setState(7108);
52287 						_errHandler.sync(this);
52288 						_la = _input.LA(1);
52289 					}
52290 					}
52291 				}
52292 
52293 				}
52294 				break;
52295 			case CERTIFICATE:
52296 				enterOuterAlt(_localctx, 2);
52297 				{
52298 				setState(7111);
52299 				match(CERTIFICATE);
52300 				setState(7112);
52301 				identifier();
52302 				}
52303 				break;
52304 			case ASYMMETRIC:
52305 				enterOuterAlt(_localctx, 3);
52306 				{
52307 				setState(7113);
52308 				match(ASYMMETRIC);
52309 				setState(7114);
52310 				match(KEY);
52311 				setState(7115);
52312 				identifier();
52313 				}
52314 				break;
52315 			default:
52316 				throw new NoViableAltException(this);
52317 			}
52318 		}
52319 		catch (RecognitionException re) {
52320 			_localctx.exception = re;
52321 			_errHandler.reportError(this, re);
52322 			_errHandler.recover(this, re);
52323 		}
52324 		finally {
52325 			exitRule();
52326 		}
52327 		return _localctx;
52328 	}
52329 
52330 	public static class WindowsOptionsContext extends ParserRuleContext {
52331 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
52332 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
52333 		public DatabaseNameContext databaseName() {
52334 			return getRuleContext(DatabaseNameContext.class,0);
52335 		}
52336 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
52337 		public IdentifierContext identifier() {
52338 			return getRuleContext(IdentifierContext.class,0);
52339 		}
52340 		public WindowsOptionsContext(ParserRuleContext parent, int invokingState) {
52341 			super(parent, invokingState);
52342 		}
52343 		@Override public int getRuleIndex() { return RULE_windowsOptions; }
52344 		@Override
52345 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52346 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitWindowsOptions(this);
52347 			else return visitor.visitChildren(this);
52348 		}
52349 	}
52350 
52351 	public final WindowsOptionsContext windowsOptions() throws RecognitionException {
52352 		WindowsOptionsContext _localctx = new WindowsOptionsContext(_ctx, getState());
52353 		enterRule(_localctx, 976, RULE_windowsOptions);
52354 		try {
52355 			setState(7124);
52356 			_errHandler.sync(this);
52357 			switch (_input.LA(1)) {
52358 			case DEFAULT_DATABASE:
52359 				enterOuterAlt(_localctx, 1);
52360 				{
52361 				setState(7118);
52362 				match(DEFAULT_DATABASE);
52363 				setState(7119);
52364 				match(EQ_);
52365 				setState(7120);
52366 				databaseName();
52367 				}
52368 				break;
52369 			case DEFAULT_LANGUAGE:
52370 				enterOuterAlt(_localctx, 2);
52371 				{
52372 				setState(7121);
52373 				match(DEFAULT_LANGUAGE);
52374 				setState(7122);
52375 				match(EQ_);
52376 				setState(7123);
52377 				identifier();
52378 				}
52379 				break;
52380 			default:
52381 				throw new NoViableAltException(this);
52382 			}
52383 		}
52384 		catch (RecognitionException re) {
52385 			_localctx.exception = re;
52386 			_errHandler.reportError(this, re);
52387 			_errHandler.recover(this, re);
52388 		}
52389 		finally {
52390 			exitRule();
52391 		}
52392 		return _localctx;
52393 	}
52394 
52395 	public static class CreateLoginForAzureSQLDatabaseClauseContext extends ParserRuleContext {
52396 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
52397 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
52398 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
52399 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
52400 		public List<CreateLoginForAzureSQLDatabaseOptionListContext> createLoginForAzureSQLDatabaseOptionList() {
52401 			return getRuleContexts(CreateLoginForAzureSQLDatabaseOptionListContext.class);
52402 		}
52403 		public CreateLoginForAzureSQLDatabaseOptionListContext createLoginForAzureSQLDatabaseOptionList(int i) {
52404 			return getRuleContext(CreateLoginForAzureSQLDatabaseOptionListContext.class,i);
52405 		}
52406 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
52407 		public TerminalNode COMMA_(int i) {
52408 			return getToken(SQLServerStatementParser.COMMA_, i);
52409 		}
52410 		public CreateLoginForAzureSQLDatabaseClauseContext(ParserRuleContext parent, int invokingState) {
52411 			super(parent, invokingState);
52412 		}
52413 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSQLDatabaseClause; }
52414 		@Override
52415 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52416 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSQLDatabaseClause(this);
52417 			else return visitor.visitChildren(this);
52418 		}
52419 	}
52420 
52421 	public final CreateLoginForAzureSQLDatabaseClauseContext createLoginForAzureSQLDatabaseClause() throws RecognitionException {
52422 		CreateLoginForAzureSQLDatabaseClauseContext _localctx = new CreateLoginForAzureSQLDatabaseClauseContext(_ctx, getState());
52423 		enterRule(_localctx, 978, RULE_createLoginForAzureSQLDatabaseClause);
52424 		int _la;
52425 		try {
52426 			setState(7138);
52427 			_errHandler.sync(this);
52428 			switch (_input.LA(1)) {
52429 			case FROM:
52430 				enterOuterAlt(_localctx, 1);
52431 				{
52432 				setState(7126);
52433 				match(FROM);
52434 				setState(7127);
52435 				match(EXTERNAL);
52436 				setState(7128);
52437 				match(PROVIDER);
52438 				}
52439 				break;
52440 			case WITH:
52441 				enterOuterAlt(_localctx, 2);
52442 				{
52443 				setState(7129);
52444 				match(WITH);
52445 				setState(7130);
52446 				createLoginForAzureSQLDatabaseOptionList();
52447 				setState(7135);
52448 				_errHandler.sync(this);
52449 				_la = _input.LA(1);
52450 				while (_la==COMMA_) {
52451 					{
52452 					{
52453 					setState(7131);
52454 					match(COMMA_);
52455 					setState(7132);
52456 					createLoginForAzureSQLDatabaseOptionList();
52457 					}
52458 					}
52459 					setState(7137);
52460 					_errHandler.sync(this);
52461 					_la = _input.LA(1);
52462 				}
52463 				}
52464 				break;
52465 			default:
52466 				throw new NoViableAltException(this);
52467 			}
52468 		}
52469 		catch (RecognitionException re) {
52470 			_localctx.exception = re;
52471 			_errHandler.reportError(this, re);
52472 			_errHandler.recover(this, re);
52473 		}
52474 		finally {
52475 			exitRule();
52476 		}
52477 		return _localctx;
52478 	}
52479 
52480 	public static class CreateLoginForAzureSQLDatabaseOptionListContext extends ParserRuleContext {
52481 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
52482 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
52483 		public TerminalNode EQ_(int i) {
52484 			return getToken(SQLServerStatementParser.EQ_, i);
52485 		}
52486 		public StringLiteralsContext stringLiterals() {
52487 			return getRuleContext(StringLiteralsContext.class,0);
52488 		}
52489 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
52490 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
52491 		public SidContext sid() {
52492 			return getRuleContext(SidContext.class,0);
52493 		}
52494 		public CreateLoginForAzureSQLDatabaseOptionListContext(ParserRuleContext parent, int invokingState) {
52495 			super(parent, invokingState);
52496 		}
52497 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSQLDatabaseOptionList; }
52498 		@Override
52499 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52500 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSQLDatabaseOptionList(this);
52501 			else return visitor.visitChildren(this);
52502 		}
52503 	}
52504 
52505 	public final CreateLoginForAzureSQLDatabaseOptionListContext createLoginForAzureSQLDatabaseOptionList() throws RecognitionException {
52506 		CreateLoginForAzureSQLDatabaseOptionListContext _localctx = new CreateLoginForAzureSQLDatabaseOptionListContext(_ctx, getState());
52507 		enterRule(_localctx, 980, RULE_createLoginForAzureSQLDatabaseOptionList);
52508 		try {
52509 			enterOuterAlt(_localctx, 1);
52510 			{
52511 			setState(7140);
52512 			match(PASSWORD);
52513 			setState(7141);
52514 			match(EQ_);
52515 			setState(7142);
52516 			stringLiterals();
52517 			setState(7147);
52518 			_errHandler.sync(this);
52519 			switch ( getInterpreter().adaptivePredict(_input,833,_ctx) ) {
52520 			case 1:
52521 				{
52522 				setState(7143);
52523 				match(COMMA_);
52524 				setState(7144);
52525 				match(SID);
52526 				setState(7145);
52527 				match(EQ_);
52528 				setState(7146);
52529 				sid();
52530 				}
52531 				break;
52532 			}
52533 			}
52534 		}
52535 		catch (RecognitionException re) {
52536 			_localctx.exception = re;
52537 			_errHandler.reportError(this, re);
52538 			_errHandler.recover(this, re);
52539 		}
52540 		finally {
52541 			exitRule();
52542 		}
52543 		return _localctx;
52544 	}
52545 
52546 	public static class CreateLoginForAzureManagedInstanceClauseContext extends ParserRuleContext {
52547 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
52548 		public List<AzureManagedInstanceOptionListContext> azureManagedInstanceOptionList() {
52549 			return getRuleContexts(AzureManagedInstanceOptionListContext.class);
52550 		}
52551 		public AzureManagedInstanceOptionListContext azureManagedInstanceOptionList(int i) {
52552 			return getRuleContext(AzureManagedInstanceOptionListContext.class,i);
52553 		}
52554 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
52555 		public TerminalNode EXTERNAL() { return getToken(SQLServerStatementParser.EXTERNAL, 0); }
52556 		public TerminalNode PROVIDER() { return getToken(SQLServerStatementParser.PROVIDER, 0); }
52557 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
52558 		public TerminalNode COMMA_(int i) {
52559 			return getToken(SQLServerStatementParser.COMMA_, i);
52560 		}
52561 		public CreateLoginForAzureManagedInstanceClauseContext(ParserRuleContext parent, int invokingState) {
52562 			super(parent, invokingState);
52563 		}
52564 		@Override public int getRuleIndex() { return RULE_createLoginForAzureManagedInstanceClause; }
52565 		@Override
52566 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52567 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureManagedInstanceClause(this);
52568 			else return visitor.visitChildren(this);
52569 		}
52570 	}
52571 
52572 	public final CreateLoginForAzureManagedInstanceClauseContext createLoginForAzureManagedInstanceClause() throws RecognitionException {
52573 		CreateLoginForAzureManagedInstanceClauseContext _localctx = new CreateLoginForAzureManagedInstanceClauseContext(_ctx, getState());
52574 		enterRule(_localctx, 982, RULE_createLoginForAzureManagedInstanceClause);
52575 		int _la;
52576 		try {
52577 			enterOuterAlt(_localctx, 1);
52578 			{
52579 			setState(7152);
52580 			_errHandler.sync(this);
52581 			_la = _input.LA(1);
52582 			if (_la==FROM) {
52583 				{
52584 				setState(7149);
52585 				match(FROM);
52586 				setState(7150);
52587 				match(EXTERNAL);
52588 				setState(7151);
52589 				match(PROVIDER);
52590 				}
52591 			}
52592 
52593 			setState(7154);
52594 			match(WITH);
52595 			setState(7155);
52596 			azureManagedInstanceOptionList();
52597 			setState(7160);
52598 			_errHandler.sync(this);
52599 			_la = _input.LA(1);
52600 			while (_la==COMMA_) {
52601 				{
52602 				{
52603 				setState(7156);
52604 				match(COMMA_);
52605 				setState(7157);
52606 				azureManagedInstanceOptionList();
52607 				}
52608 				}
52609 				setState(7162);
52610 				_errHandler.sync(this);
52611 				_la = _input.LA(1);
52612 			}
52613 			}
52614 		}
52615 		catch (RecognitionException re) {
52616 			_localctx.exception = re;
52617 			_errHandler.reportError(this, re);
52618 			_errHandler.recover(this, re);
52619 		}
52620 		finally {
52621 			exitRule();
52622 		}
52623 		return _localctx;
52624 	}
52625 
52626 	public static class AzureManagedInstanceOptionListContext extends ParserRuleContext {
52627 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
52628 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
52629 		public StringLiteralsContext stringLiterals() {
52630 			return getRuleContext(StringLiteralsContext.class,0);
52631 		}
52632 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
52633 		public SidContext sid() {
52634 			return getRuleContext(SidContext.class,0);
52635 		}
52636 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
52637 		public DatabaseNameContext databaseName() {
52638 			return getRuleContext(DatabaseNameContext.class,0);
52639 		}
52640 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
52641 		public IdentifierContext identifier() {
52642 			return getRuleContext(IdentifierContext.class,0);
52643 		}
52644 		public AzureManagedInstanceOptionListContext(ParserRuleContext parent, int invokingState) {
52645 			super(parent, invokingState);
52646 		}
52647 		@Override public int getRuleIndex() { return RULE_azureManagedInstanceOptionList; }
52648 		@Override
52649 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52650 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAzureManagedInstanceOptionList(this);
52651 			else return visitor.visitChildren(this);
52652 		}
52653 	}
52654 
52655 	public final AzureManagedInstanceOptionListContext azureManagedInstanceOptionList() throws RecognitionException {
52656 		AzureManagedInstanceOptionListContext _localctx = new AzureManagedInstanceOptionListContext(_ctx, getState());
52657 		enterRule(_localctx, 984, RULE_azureManagedInstanceOptionList);
52658 		try {
52659 			setState(7175);
52660 			_errHandler.sync(this);
52661 			switch (_input.LA(1)) {
52662 			case PASSWORD:
52663 				enterOuterAlt(_localctx, 1);
52664 				{
52665 				setState(7163);
52666 				match(PASSWORD);
52667 				setState(7164);
52668 				match(EQ_);
52669 				setState(7165);
52670 				stringLiterals();
52671 				}
52672 				break;
52673 			case SID:
52674 				enterOuterAlt(_localctx, 2);
52675 				{
52676 				setState(7166);
52677 				match(SID);
52678 				setState(7167);
52679 				match(EQ_);
52680 				setState(7168);
52681 				sid();
52682 				}
52683 				break;
52684 			case DEFAULT_DATABASE:
52685 				enterOuterAlt(_localctx, 3);
52686 				{
52687 				setState(7169);
52688 				match(DEFAULT_DATABASE);
52689 				setState(7170);
52690 				match(EQ_);
52691 				setState(7171);
52692 				databaseName();
52693 				}
52694 				break;
52695 			case DEFAULT_LANGUAGE:
52696 				enterOuterAlt(_localctx, 4);
52697 				{
52698 				setState(7172);
52699 				match(DEFAULT_LANGUAGE);
52700 				setState(7173);
52701 				match(EQ_);
52702 				setState(7174);
52703 				identifier();
52704 				}
52705 				break;
52706 			default:
52707 				throw new NoViableAltException(this);
52708 			}
52709 		}
52710 		catch (RecognitionException re) {
52711 			_localctx.exception = re;
52712 			_errHandler.reportError(this, re);
52713 			_errHandler.recover(this, re);
52714 		}
52715 		finally {
52716 			exitRule();
52717 		}
52718 		return _localctx;
52719 	}
52720 
52721 	public static class CreateLoginForAzureSynapseAnalyticsClauseContext extends ParserRuleContext {
52722 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
52723 		public CreateLoginForAzureSynapseAnalyticsOptionListContext createLoginForAzureSynapseAnalyticsOptionList() {
52724 			return getRuleContext(CreateLoginForAzureSynapseAnalyticsOptionListContext.class,0);
52725 		}
52726 		public CreateLoginForAzureSynapseAnalyticsClauseContext(ParserRuleContext parent, int invokingState) {
52727 			super(parent, invokingState);
52728 		}
52729 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSynapseAnalyticsClause; }
52730 		@Override
52731 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52732 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSynapseAnalyticsClause(this);
52733 			else return visitor.visitChildren(this);
52734 		}
52735 	}
52736 
52737 	public final CreateLoginForAzureSynapseAnalyticsClauseContext createLoginForAzureSynapseAnalyticsClause() throws RecognitionException {
52738 		CreateLoginForAzureSynapseAnalyticsClauseContext _localctx = new CreateLoginForAzureSynapseAnalyticsClauseContext(_ctx, getState());
52739 		enterRule(_localctx, 986, RULE_createLoginForAzureSynapseAnalyticsClause);
52740 		try {
52741 			enterOuterAlt(_localctx, 1);
52742 			{
52743 			setState(7177);
52744 			match(WITH);
52745 			setState(7178);
52746 			createLoginForAzureSynapseAnalyticsOptionList();
52747 			}
52748 		}
52749 		catch (RecognitionException re) {
52750 			_localctx.exception = re;
52751 			_errHandler.reportError(this, re);
52752 			_errHandler.recover(this, re);
52753 		}
52754 		finally {
52755 			exitRule();
52756 		}
52757 		return _localctx;
52758 	}
52759 
52760 	public static class CreateLoginForAzureSynapseAnalyticsOptionListContext extends ParserRuleContext {
52761 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
52762 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
52763 		public TerminalNode EQ_(int i) {
52764 			return getToken(SQLServerStatementParser.EQ_, i);
52765 		}
52766 		public StringLiteralsContext stringLiterals() {
52767 			return getRuleContext(StringLiteralsContext.class,0);
52768 		}
52769 		public TerminalNode COMMA_() { return getToken(SQLServerStatementParser.COMMA_, 0); }
52770 		public TerminalNode SID() { return getToken(SQLServerStatementParser.SID, 0); }
52771 		public SidContext sid() {
52772 			return getRuleContext(SidContext.class,0);
52773 		}
52774 		public CreateLoginForAzureSynapseAnalyticsOptionListContext(ParserRuleContext parent, int invokingState) {
52775 			super(parent, invokingState);
52776 		}
52777 		@Override public int getRuleIndex() { return RULE_createLoginForAzureSynapseAnalyticsOptionList; }
52778 		@Override
52779 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52780 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAzureSynapseAnalyticsOptionList(this);
52781 			else return visitor.visitChildren(this);
52782 		}
52783 	}
52784 
52785 	public final CreateLoginForAzureSynapseAnalyticsOptionListContext createLoginForAzureSynapseAnalyticsOptionList() throws RecognitionException {
52786 		CreateLoginForAzureSynapseAnalyticsOptionListContext _localctx = new CreateLoginForAzureSynapseAnalyticsOptionListContext(_ctx, getState());
52787 		enterRule(_localctx, 988, RULE_createLoginForAzureSynapseAnalyticsOptionList);
52788 		int _la;
52789 		try {
52790 			enterOuterAlt(_localctx, 1);
52791 			{
52792 			setState(7180);
52793 			match(PASSWORD);
52794 			setState(7181);
52795 			match(EQ_);
52796 			setState(7182);
52797 			stringLiterals();
52798 			setState(7187);
52799 			_errHandler.sync(this);
52800 			_la = _input.LA(1);
52801 			if (_la==COMMA_) {
52802 				{
52803 				setState(7183);
52804 				match(COMMA_);
52805 				setState(7184);
52806 				match(SID);
52807 				setState(7185);
52808 				match(EQ_);
52809 				setState(7186);
52810 				sid();
52811 				}
52812 			}
52813 
52814 			}
52815 		}
52816 		catch (RecognitionException re) {
52817 			_localctx.exception = re;
52818 			_errHandler.reportError(this, re);
52819 			_errHandler.recover(this, re);
52820 		}
52821 		finally {
52822 			exitRule();
52823 		}
52824 		return _localctx;
52825 	}
52826 
52827 	public static class CreateLoginForAnalyticsPlatformSystemClauseContext extends ParserRuleContext {
52828 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
52829 		public CreateLoginForAnalyticsPlatformSystemOptionListContext createLoginForAnalyticsPlatformSystemOptionList() {
52830 			return getRuleContext(CreateLoginForAnalyticsPlatformSystemOptionListContext.class,0);
52831 		}
52832 		public TerminalNode FROM() { return getToken(SQLServerStatementParser.FROM, 0); }
52833 		public TerminalNode WINDOWS() { return getToken(SQLServerStatementParser.WINDOWS, 0); }
52834 		public CreateLoginForAnalyticsPlatformSystemClauseContext(ParserRuleContext parent, int invokingState) {
52835 			super(parent, invokingState);
52836 		}
52837 		@Override public int getRuleIndex() { return RULE_createLoginForAnalyticsPlatformSystemClause; }
52838 		@Override
52839 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52840 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAnalyticsPlatformSystemClause(this);
52841 			else return visitor.visitChildren(this);
52842 		}
52843 	}
52844 
52845 	public final CreateLoginForAnalyticsPlatformSystemClauseContext createLoginForAnalyticsPlatformSystemClause() throws RecognitionException {
52846 		CreateLoginForAnalyticsPlatformSystemClauseContext _localctx = new CreateLoginForAnalyticsPlatformSystemClauseContext(_ctx, getState());
52847 		enterRule(_localctx, 990, RULE_createLoginForAnalyticsPlatformSystemClause);
52848 		try {
52849 			setState(7193);
52850 			_errHandler.sync(this);
52851 			switch (_input.LA(1)) {
52852 			case WITH:
52853 				enterOuterAlt(_localctx, 1);
52854 				{
52855 				setState(7189);
52856 				match(WITH);
52857 				setState(7190);
52858 				createLoginForAnalyticsPlatformSystemOptionList();
52859 				}
52860 				break;
52861 			case FROM:
52862 				enterOuterAlt(_localctx, 2);
52863 				{
52864 				setState(7191);
52865 				match(FROM);
52866 				setState(7192);
52867 				match(WINDOWS);
52868 				}
52869 				break;
52870 			default:
52871 				throw new NoViableAltException(this);
52872 			}
52873 		}
52874 		catch (RecognitionException re) {
52875 			_localctx.exception = re;
52876 			_errHandler.reportError(this, re);
52877 			_errHandler.recover(this, re);
52878 		}
52879 		finally {
52880 			exitRule();
52881 		}
52882 		return _localctx;
52883 	}
52884 
52885 	public static class CreateLoginForAnalyticsPlatformSystemOptionListContext extends ParserRuleContext {
52886 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
52887 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
52888 		public StringLiteralsContext stringLiterals() {
52889 			return getRuleContext(StringLiteralsContext.class,0);
52890 		}
52891 		public TerminalNode MUST_CHANGE() { return getToken(SQLServerStatementParser.MUST_CHANGE, 0); }
52892 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
52893 		public TerminalNode COMMA_(int i) {
52894 			return getToken(SQLServerStatementParser.COMMA_, i);
52895 		}
52896 		public List<CreateLoginForAnalyticsPlatformSystemOptionListClauseContext> createLoginForAnalyticsPlatformSystemOptionListClause() {
52897 			return getRuleContexts(CreateLoginForAnalyticsPlatformSystemOptionListClauseContext.class);
52898 		}
52899 		public CreateLoginForAnalyticsPlatformSystemOptionListClauseContext createLoginForAnalyticsPlatformSystemOptionListClause(int i) {
52900 			return getRuleContext(CreateLoginForAnalyticsPlatformSystemOptionListClauseContext.class,i);
52901 		}
52902 		public CreateLoginForAnalyticsPlatformSystemOptionListContext(ParserRuleContext parent, int invokingState) {
52903 			super(parent, invokingState);
52904 		}
52905 		@Override public int getRuleIndex() { return RULE_createLoginForAnalyticsPlatformSystemOptionList; }
52906 		@Override
52907 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52908 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAnalyticsPlatformSystemOptionList(this);
52909 			else return visitor.visitChildren(this);
52910 		}
52911 	}
52912 
52913 	public final CreateLoginForAnalyticsPlatformSystemOptionListContext createLoginForAnalyticsPlatformSystemOptionList() throws RecognitionException {
52914 		CreateLoginForAnalyticsPlatformSystemOptionListContext _localctx = new CreateLoginForAnalyticsPlatformSystemOptionListContext(_ctx, getState());
52915 		enterRule(_localctx, 992, RULE_createLoginForAnalyticsPlatformSystemOptionList);
52916 		int _la;
52917 		try {
52918 			enterOuterAlt(_localctx, 1);
52919 			{
52920 			setState(7195);
52921 			match(PASSWORD);
52922 			setState(7196);
52923 			match(EQ_);
52924 			setState(7197);
52925 			stringLiterals();
52926 			setState(7199);
52927 			_errHandler.sync(this);
52928 			_la = _input.LA(1);
52929 			if (_la==MUST_CHANGE) {
52930 				{
52931 				setState(7198);
52932 				match(MUST_CHANGE);
52933 				}
52934 			}
52935 
52936 			setState(7210);
52937 			_errHandler.sync(this);
52938 			_la = _input.LA(1);
52939 			if (_la==COMMA_) {
52940 				{
52941 				setState(7201);
52942 				match(COMMA_);
52943 				setState(7202);
52944 				createLoginForAnalyticsPlatformSystemOptionListClause();
52945 				setState(7207);
52946 				_errHandler.sync(this);
52947 				_la = _input.LA(1);
52948 				while (_la==COMMA_) {
52949 					{
52950 					{
52951 					setState(7203);
52952 					match(COMMA_);
52953 					setState(7204);
52954 					createLoginForAnalyticsPlatformSystemOptionListClause();
52955 					}
52956 					}
52957 					setState(7209);
52958 					_errHandler.sync(this);
52959 					_la = _input.LA(1);
52960 				}
52961 				}
52962 			}
52963 
52964 			}
52965 		}
52966 		catch (RecognitionException re) {
52967 			_localctx.exception = re;
52968 			_errHandler.reportError(this, re);
52969 			_errHandler.recover(this, re);
52970 		}
52971 		finally {
52972 			exitRule();
52973 		}
52974 		return _localctx;
52975 	}
52976 
52977 	public static class CreateLoginForAnalyticsPlatformSystemOptionListClauseContext extends ParserRuleContext {
52978 		public TerminalNode CHECK_EXPIRATION() { return getToken(SQLServerStatementParser.CHECK_EXPIRATION, 0); }
52979 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
52980 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
52981 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
52982 		public TerminalNode CHECK_POLICY() { return getToken(SQLServerStatementParser.CHECK_POLICY, 0); }
52983 		public CreateLoginForAnalyticsPlatformSystemOptionListClauseContext(ParserRuleContext parent, int invokingState) {
52984 			super(parent, invokingState);
52985 		}
52986 		@Override public int getRuleIndex() { return RULE_createLoginForAnalyticsPlatformSystemOptionListClause; }
52987 		@Override
52988 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
52989 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCreateLoginForAnalyticsPlatformSystemOptionListClause(this);
52990 			else return visitor.visitChildren(this);
52991 		}
52992 	}
52993 
52994 	public final CreateLoginForAnalyticsPlatformSystemOptionListClauseContext createLoginForAnalyticsPlatformSystemOptionListClause() throws RecognitionException {
52995 		CreateLoginForAnalyticsPlatformSystemOptionListClauseContext _localctx = new CreateLoginForAnalyticsPlatformSystemOptionListClauseContext(_ctx, getState());
52996 		enterRule(_localctx, 994, RULE_createLoginForAnalyticsPlatformSystemOptionListClause);
52997 		int _la;
52998 		try {
52999 			setState(7218);
53000 			_errHandler.sync(this);
53001 			switch (_input.LA(1)) {
53002 			case CHECK_EXPIRATION:
53003 				enterOuterAlt(_localctx, 1);
53004 				{
53005 				setState(7212);
53006 				match(CHECK_EXPIRATION);
53007 				setState(7213);
53008 				match(EQ_);
53009 				setState(7214);
53010 				_la = _input.LA(1);
53011 				if ( !(_la==ON || _la==OFF) ) {
53012 				_errHandler.recoverInline(this);
53013 				}
53014 				else {
53015 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
53016 					_errHandler.reportMatch(this);
53017 					consume();
53018 				}
53019 				}
53020 				break;
53021 			case CHECK_POLICY:
53022 				enterOuterAlt(_localctx, 2);
53023 				{
53024 				setState(7215);
53025 				match(CHECK_POLICY);
53026 				setState(7216);
53027 				match(EQ_);
53028 				setState(7217);
53029 				_la = _input.LA(1);
53030 				if ( !(_la==ON || _la==OFF) ) {
53031 				_errHandler.recoverInline(this);
53032 				}
53033 				else {
53034 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
53035 					_errHandler.reportMatch(this);
53036 					consume();
53037 				}
53038 				}
53039 				break;
53040 			default:
53041 				throw new NoViableAltException(this);
53042 			}
53043 		}
53044 		catch (RecognitionException re) {
53045 			_localctx.exception = re;
53046 			_errHandler.reportError(this, re);
53047 			_errHandler.recover(this, re);
53048 		}
53049 		finally {
53050 			exitRule();
53051 		}
53052 		return _localctx;
53053 	}
53054 
53055 	public static class DropLoginContext extends ParserRuleContext {
53056 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
53057 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
53058 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
53059 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
53060 		}
53061 		public DropLoginContext(ParserRuleContext parent, int invokingState) {
53062 			super(parent, invokingState);
53063 		}
53064 		@Override public int getRuleIndex() { return RULE_dropLogin; }
53065 		@Override
53066 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
53067 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitDropLogin(this);
53068 			else return visitor.visitChildren(this);
53069 		}
53070 	}
53071 
53072 	public final DropLoginContext dropLogin() throws RecognitionException {
53073 		DropLoginContext _localctx = new DropLoginContext(_ctx, getState());
53074 		enterRule(_localctx, 996, RULE_dropLogin);
53075 		try {
53076 			enterOuterAlt(_localctx, 1);
53077 			{
53078 			setState(7220);
53079 			match(DROP);
53080 			setState(7221);
53081 			match(LOGIN);
53082 			setState(7222);
53083 			ignoredNameIdentifier();
53084 			}
53085 		}
53086 		catch (RecognitionException re) {
53087 			_localctx.exception = re;
53088 			_errHandler.reportError(this, re);
53089 			_errHandler.recover(this, re);
53090 		}
53091 		finally {
53092 			exitRule();
53093 		}
53094 		return _localctx;
53095 	}
53096 
53097 	public static class AlterLoginContext extends ParserRuleContext {
53098 		public TerminalNode ALTER() { return getToken(SQLServerStatementParser.ALTER, 0); }
53099 		public TerminalNode LOGIN() { return getToken(SQLServerStatementParser.LOGIN, 0); }
53100 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
53101 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
53102 		}
53103 		public StatusOptionClauseContext statusOptionClause() {
53104 			return getRuleContext(StatusOptionClauseContext.class,0);
53105 		}
53106 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
53107 		public List<SetOptionClauseContext> setOptionClause() {
53108 			return getRuleContexts(SetOptionClauseContext.class);
53109 		}
53110 		public SetOptionClauseContext setOptionClause(int i) {
53111 			return getRuleContext(SetOptionClauseContext.class,i);
53112 		}
53113 		public CryptographicCredentialsOptionClauseContext cryptographicCredentialsOptionClause() {
53114 			return getRuleContext(CryptographicCredentialsOptionClauseContext.class,0);
53115 		}
53116 		public List<TerminalNode> COMMA_() { return getTokens(SQLServerStatementParser.COMMA_); }
53117 		public TerminalNode COMMA_(int i) {
53118 			return getToken(SQLServerStatementParser.COMMA_, i);
53119 		}
53120 		public AlterLoginContext(ParserRuleContext parent, int invokingState) {
53121 			super(parent, invokingState);
53122 		}
53123 		@Override public int getRuleIndex() { return RULE_alterLogin; }
53124 		@Override
53125 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
53126 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitAlterLogin(this);
53127 			else return visitor.visitChildren(this);
53128 		}
53129 	}
53130 
53131 	public final AlterLoginContext alterLogin() throws RecognitionException {
53132 		AlterLoginContext _localctx = new AlterLoginContext(_ctx, getState());
53133 		enterRule(_localctx, 998, RULE_alterLogin);
53134 		int _la;
53135 		try {
53136 			enterOuterAlt(_localctx, 1);
53137 			{
53138 			setState(7224);
53139 			match(ALTER);
53140 			setState(7225);
53141 			match(LOGIN);
53142 			setState(7226);
53143 			ignoredNameIdentifier();
53144 			setState(7238);
53145 			_errHandler.sync(this);
53146 			switch (_input.LA(1)) {
53147 			case ENABLE:
53148 			case DISABLE:
53149 				{
53150 				setState(7227);
53151 				statusOptionClause();
53152 				}
53153 				break;
53154 			case WITH:
53155 				{
53156 				setState(7228);
53157 				match(WITH);
53158 				setState(7229);
53159 				setOptionClause();
53160 				setState(7234);
53161 				_errHandler.sync(this);
53162 				_la = _input.LA(1);
53163 				while (_la==COMMA_) {
53164 					{
53165 					{
53166 					setState(7230);
53167 					match(COMMA_);
53168 					setState(7231);
53169 					setOptionClause();
53170 					}
53171 					}
53172 					setState(7236);
53173 					_errHandler.sync(this);
53174 					_la = _input.LA(1);
53175 				}
53176 				}
53177 				break;
53178 			case DROP:
53179 			case ADD:
53180 				{
53181 				setState(7237);
53182 				cryptographicCredentialsOptionClause();
53183 				}
53184 				break;
53185 			default:
53186 				throw new NoViableAltException(this);
53187 			}
53188 			}
53189 		}
53190 		catch (RecognitionException re) {
53191 			_localctx.exception = re;
53192 			_errHandler.reportError(this, re);
53193 			_errHandler.recover(this, re);
53194 		}
53195 		finally {
53196 			exitRule();
53197 		}
53198 		return _localctx;
53199 	}
53200 
53201 	public static class StatusOptionClauseContext extends ParserRuleContext {
53202 		public TerminalNode ENABLE() { return getToken(SQLServerStatementParser.ENABLE, 0); }
53203 		public TerminalNode DISABLE() { return getToken(SQLServerStatementParser.DISABLE, 0); }
53204 		public StatusOptionClauseContext(ParserRuleContext parent, int invokingState) {
53205 			super(parent, invokingState);
53206 		}
53207 		@Override public int getRuleIndex() { return RULE_statusOptionClause; }
53208 		@Override
53209 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
53210 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitStatusOptionClause(this);
53211 			else return visitor.visitChildren(this);
53212 		}
53213 	}
53214 
53215 	public final StatusOptionClauseContext statusOptionClause() throws RecognitionException {
53216 		StatusOptionClauseContext _localctx = new StatusOptionClauseContext(_ctx, getState());
53217 		enterRule(_localctx, 1000, RULE_statusOptionClause);
53218 		int _la;
53219 		try {
53220 			enterOuterAlt(_localctx, 1);
53221 			{
53222 			setState(7240);
53223 			_la = _input.LA(1);
53224 			if ( !(_la==ENABLE || _la==DISABLE) ) {
53225 			_errHandler.recoverInline(this);
53226 			}
53227 			else {
53228 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
53229 				_errHandler.reportMatch(this);
53230 				consume();
53231 			}
53232 			}
53233 		}
53234 		catch (RecognitionException re) {
53235 			_localctx.exception = re;
53236 			_errHandler.reportError(this, re);
53237 			_errHandler.recover(this, re);
53238 		}
53239 		finally {
53240 			exitRule();
53241 		}
53242 		return _localctx;
53243 	}
53244 
53245 	public static class SetOptionClauseContext extends ParserRuleContext {
53246 		public TerminalNode PASSWORD() { return getToken(SQLServerStatementParser.PASSWORD, 0); }
53247 		public List<TerminalNode> EQ_() { return getTokens(SQLServerStatementParser.EQ_); }
53248 		public TerminalNode EQ_(int i) {
53249 			return getToken(SQLServerStatementParser.EQ_, i);
53250 		}
53251 		public List<StringLiteralsContext> stringLiterals() {
53252 			return getRuleContexts(StringLiteralsContext.class);
53253 		}
53254 		public StringLiteralsContext stringLiterals(int i) {
53255 			return getRuleContext(StringLiteralsContext.class,i);
53256 		}
53257 		public HashedPasswordContext hashedPassword() {
53258 			return getRuleContext(HashedPasswordContext.class,0);
53259 		}
53260 		public TerminalNode HASHED() { return getToken(SQLServerStatementParser.HASHED, 0); }
53261 		public TerminalNode OLD_PASSWORD() { return getToken(SQLServerStatementParser.OLD_PASSWORD, 0); }
53262 		public List<PasswordOptionClauseContext> passwordOptionClause() {
53263 			return getRuleContexts(PasswordOptionClauseContext.class);
53264 		}
53265 		public PasswordOptionClauseContext passwordOptionClause(int i) {
53266 			return getRuleContext(PasswordOptionClauseContext.class,i);
53267 		}
53268 		public TerminalNode DEFAULT_DATABASE() { return getToken(SQLServerStatementParser.DEFAULT_DATABASE, 0); }
53269 		public DatabaseNameContext databaseName() {
53270 			return getRuleContext(DatabaseNameContext.class,0);
53271 		}
53272 		public TerminalNode DEFAULT_LANGUAGE() { return getToken(SQLServerStatementParser.DEFAULT_LANGUAGE, 0); }
53273 		public IdentifierContext identifier() {
53274 			return getRuleContext(IdentifierContext.class,0);
53275 		}
53276 		public TerminalNode NAME() { return getToken(SQLServerStatementParser.NAME, 0); }
53277 		public IgnoredNameIdentifierContext ignoredNameIdentifier() {
53278 			return getRuleContext(IgnoredNameIdentifierContext.class,0);
53279 		}
53280 		public TerminalNode CHECK_POLICY() { return getToken(SQLServerStatementParser.CHECK_POLICY, 0); }
53281 		public TerminalNode ON() { return getToken(SQLServerStatementParser.ON, 0); }
53282 		public TerminalNode OFF() { return getToken(SQLServerStatementParser.OFF, 0); }
53283 		public TerminalNode CHECK_EXPIRATION() { return getToken(SQLServerStatementParser.CHECK_EXPIRATION, 0); }
53284 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
53285 		public TerminalNode NO() { return getToken(SQLServerStatementParser.NO, 0); }
53286 		public SetOptionClauseContext(ParserRuleContext parent, int invokingState) {
53287 			super(parent, invokingState);
53288 		}
53289 		@Override public int getRuleIndex() { return RULE_setOptionClause; }
53290 		@Override
53291 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
53292 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitSetOptionClause(this);
53293 			else return visitor.visitChildren(this);
53294 		}
53295 	}
53296 
53297 	public final SetOptionClauseContext setOptionClause() throws RecognitionException {
53298 		SetOptionClauseContext _localctx = new SetOptionClauseContext(_ctx, getState());
53299 		enterRule(_localctx, 1002, RULE_setOptionClause);
53300 		int _la;
53301 		try {
53302 			setState(7279);
53303 			_errHandler.sync(this);
53304 			switch (_input.LA(1)) {
53305 			case PASSWORD:
53306 				enterOuterAlt(_localctx, 1);
53307 				{
53308 				setState(7242);
53309 				match(PASSWORD);
53310 				setState(7243);
53311 				match(EQ_);
53312 				setState(7248);
53313 				_errHandler.sync(this);
53314 				switch (_input.LA(1)) {
53315 				case STRING_:
53316 				case NCHAR_TEXT:
53317 					{
53318 					setState(7244);
53319 					stringLiterals();
53320 					}
53321 					break;
53322 				case HEX_DIGIT_:
53323 					{
53324 					setState(7245);
53325 					hashedPassword();
53326 					setState(7246);
53327 					match(HASHED);
53328 					}
53329 					break;
53330 				default:
53331 					throw new NoViableAltException(this);
53332 				}
53333 				setState(7257);
53334 				_errHandler.sync(this);
53335 				switch (_input.LA(1)) {
53336 				case OLD_PASSWORD:
53337 					{
53338 					setState(7250);
53339 					match(OLD_PASSWORD);
53340 					setState(7251);
53341 					match(EQ_);
53342 					setState(7252);
53343 					stringLiterals();
53344 					}
53345 					break;
53346 				case MUST_CHANGE:
53347 				case UNLOCK:
53348 					{
53349 					setState(7253);
53350 					passwordOptionClause();
53351 					setState(7255);
53352 					_errHandler.sync(this);
53353 					_la = _input.LA(1);
53354 					if (_la==MUST_CHANGE || _la==UNLOCK) {
53355 						{
53356 						setState(7254);
53357 						passwordOptionClause();
53358 						}
53359 					}
53360 
53361 					}
53362 					break;
53363 				case EOF:
53364 				case COMMA_:
53365 				case SEMI_:
53366 					break;
53367 				default:
53368 					break;
53369 				}
53370 				}
53371 				break;
53372 			case DEFAULT_DATABASE:
53373 				enterOuterAlt(_localctx, 2);
53374 				{
53375 				setState(7259);
53376 				match(DEFAULT_DATABASE);
53377 				setState(7260);
53378 				match(EQ_);
53379 				setState(7261);
53380 				databaseName();
53381 				}
53382 				break;
53383 			case DEFAULT_LANGUAGE:
53384 				enterOuterAlt(_localctx, 3);
53385 				{
53386 				setState(7262);
53387 				match(DEFAULT_LANGUAGE);
53388 				setState(7263);
53389 				match(EQ_);
53390 				setState(7264);
53391 				identifier();
53392 				}
53393 				break;
53394 			case NAME:
53395 				enterOuterAlt(_localctx, 4);
53396 				{
53397 				setState(7265);
53398 				match(NAME);
53399 				setState(7266);
53400 				match(EQ_);
53401 				setState(7267);
53402 				ignoredNameIdentifier();
53403 				}
53404 				break;
53405 			case CHECK_POLICY:
53406 				enterOuterAlt(_localctx, 5);
53407 				{
53408 				setState(7268);
53409 				match(CHECK_POLICY);
53410 				setState(7269);
53411 				match(EQ_);
53412 				setState(7270);
53413 				_la = _input.LA(1);
53414 				if ( !(_la==ON || _la==OFF) ) {
53415 				_errHandler.recoverInline(this);
53416 				}
53417 				else {
53418 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
53419 					_errHandler.reportMatch(this);
53420 					consume();
53421 				}
53422 				}
53423 				break;
53424 			case CHECK_EXPIRATION:
53425 				enterOuterAlt(_localctx, 6);
53426 				{
53427 				setState(7271);
53428 				match(CHECK_EXPIRATION);
53429 				setState(7272);
53430 				match(EQ_);
53431 				setState(7273);
53432 				_la = _input.LA(1);
53433 				if ( !(_la==ON || _la==OFF) ) {
53434 				_errHandler.recoverInline(this);
53435 				}
53436 				else {
53437 					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
53438 					_errHandler.reportMatch(this);
53439 					consume();
53440 				}
53441 				}
53442 				break;
53443 			case CREDENTIAL:
53444 				enterOuterAlt(_localctx, 7);
53445 				{
53446 				setState(7274);
53447 				match(CREDENTIAL);
53448 				setState(7275);
53449 				match(EQ_);
53450 				setState(7276);
53451 				identifier();
53452 				}
53453 				break;
53454 			case NO:
53455 				enterOuterAlt(_localctx, 8);
53456 				{
53457 				setState(7277);
53458 				match(NO);
53459 				setState(7278);
53460 				match(CREDENTIAL);
53461 				}
53462 				break;
53463 			default:
53464 				throw new NoViableAltException(this);
53465 			}
53466 		}
53467 		catch (RecognitionException re) {
53468 			_localctx.exception = re;
53469 			_errHandler.reportError(this, re);
53470 			_errHandler.recover(this, re);
53471 		}
53472 		finally {
53473 			exitRule();
53474 		}
53475 		return _localctx;
53476 	}
53477 
53478 	public static class PasswordOptionClauseContext extends ParserRuleContext {
53479 		public TerminalNode MUST_CHANGE() { return getToken(SQLServerStatementParser.MUST_CHANGE, 0); }
53480 		public TerminalNode UNLOCK() { return getToken(SQLServerStatementParser.UNLOCK, 0); }
53481 		public PasswordOptionClauseContext(ParserRuleContext parent, int invokingState) {
53482 			super(parent, invokingState);
53483 		}
53484 		@Override public int getRuleIndex() { return RULE_passwordOptionClause; }
53485 		@Override
53486 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
53487 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitPasswordOptionClause(this);
53488 			else return visitor.visitChildren(this);
53489 		}
53490 	}
53491 
53492 	public final PasswordOptionClauseContext passwordOptionClause() throws RecognitionException {
53493 		PasswordOptionClauseContext _localctx = new PasswordOptionClauseContext(_ctx, getState());
53494 		enterRule(_localctx, 1004, RULE_passwordOptionClause);
53495 		int _la;
53496 		try {
53497 			enterOuterAlt(_localctx, 1);
53498 			{
53499 			setState(7281);
53500 			_la = _input.LA(1);
53501 			if ( !(_la==MUST_CHANGE || _la==UNLOCK) ) {
53502 			_errHandler.recoverInline(this);
53503 			}
53504 			else {
53505 				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
53506 				_errHandler.reportMatch(this);
53507 				consume();
53508 			}
53509 			}
53510 		}
53511 		catch (RecognitionException re) {
53512 			_localctx.exception = re;
53513 			_errHandler.reportError(this, re);
53514 			_errHandler.recover(this, re);
53515 		}
53516 		finally {
53517 			exitRule();
53518 		}
53519 		return _localctx;
53520 	}
53521 
53522 	public static class CryptographicCredentialsOptionClauseContext extends ParserRuleContext {
53523 		public TerminalNode ADD() { return getToken(SQLServerStatementParser.ADD, 0); }
53524 		public TerminalNode CREDENTIAL() { return getToken(SQLServerStatementParser.CREDENTIAL, 0); }
53525 		public IdentifierContext identifier() {
53526 			return getRuleContext(IdentifierContext.class,0);
53527 		}
53528 		public TerminalNode DROP() { return getToken(SQLServerStatementParser.DROP, 0); }
53529 		public CryptographicCredentialsOptionClauseContext(ParserRuleContext parent, int invokingState) {
53530 			super(parent, invokingState);
53531 		}
53532 		@Override public int getRuleIndex() { return RULE_cryptographicCredentialsOptionClause; }
53533 		@Override
53534 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
53535 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitCryptographicCredentialsOptionClause(this);
53536 			else return visitor.visitChildren(this);
53537 		}
53538 	}
53539 
53540 	public final CryptographicCredentialsOptionClauseContext cryptographicCredentialsOptionClause() throws RecognitionException {
53541 		CryptographicCredentialsOptionClauseContext _localctx = new CryptographicCredentialsOptionClauseContext(_ctx, getState());
53542 		enterRule(_localctx, 1006, RULE_cryptographicCredentialsOptionClause);
53543 		try {
53544 			setState(7289);
53545 			_errHandler.sync(this);
53546 			switch (_input.LA(1)) {
53547 			case ADD:
53548 				enterOuterAlt(_localctx, 1);
53549 				{
53550 				setState(7283);
53551 				match(ADD);
53552 				setState(7284);
53553 				match(CREDENTIAL);
53554 				setState(7285);
53555 				identifier();
53556 				}
53557 				break;
53558 			case DROP:
53559 				enterOuterAlt(_localctx, 2);
53560 				{
53561 				setState(7286);
53562 				match(DROP);
53563 				setState(7287);
53564 				match(CREDENTIAL);
53565 				setState(7288);
53566 				identifier();
53567 				}
53568 				break;
53569 			default:
53570 				throw new NoViableAltException(this);
53571 			}
53572 		}
53573 		catch (RecognitionException re) {
53574 			_localctx.exception = re;
53575 			_errHandler.reportError(this, re);
53576 			_errHandler.recover(this, re);
53577 		}
53578 		finally {
53579 			exitRule();
53580 		}
53581 		return _localctx;
53582 	}
53583 
53584 	public static class RevertContext extends ParserRuleContext {
53585 		public TerminalNode REVERT() { return getToken(SQLServerStatementParser.REVERT, 0); }
53586 		public TerminalNode WITH() { return getToken(SQLServerStatementParser.WITH, 0); }
53587 		public TerminalNode COOKIE() { return getToken(SQLServerStatementParser.COOKIE, 0); }
53588 		public TerminalNode EQ_() { return getToken(SQLServerStatementParser.EQ_, 0); }
53589 		public VariableNameContext variableName() {
53590 			return getRuleContext(VariableNameContext.class,0);
53591 		}
53592 		public RevertContext(ParserRuleContext parent, int invokingState) {
53593 			super(parent, invokingState);
53594 		}
53595 		@Override public int getRuleIndex() { return RULE_revert; }
53596 		@Override
53597 		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
53598 			if ( visitor instanceof SQLServerStatementVisitor ) return ((SQLServerStatementVisitor<? extends T>)visitor).visitRevert(this);
53599 			else return visitor.visitChildren(this);
53600 		}
53601 	}
53602 
53603 	public final RevertContext revert() throws RecognitionException {
53604 		RevertContext _localctx = new RevertContext(_ctx, getState());
53605 		enterRule(_localctx, 1008, RULE_revert);
53606 		int _la;
53607 		try {
53608 			enterOuterAlt(_localctx, 1);
53609 			{
53610 			setState(7291);
53611 			match(REVERT);
53612 			setState(7296);
53613 			_errHandler.sync(this);
53614 			_la = _input.LA(1);
53615 			if (_la==WITH) {
53616 				{
53617 				setState(7292);
53618 				match(WITH);
53619 				setState(7293);
53620 				match(COOKIE);
53621 				setState(7294);
53622 				match(EQ_);
53623 				setState(7295);
53624 				variableName();
53625 				}
53626 			}
53627 
53628 			}
53629 		}
53630 		catch (RecognitionException re) {
53631 			_localctx.exception = re;
53632 			_errHandler.reportError(this, re);
53633 			_errHandler.recover(this, re);
53634 		}
53635 		finally {
53636 			exitRule();
53637 		}
53638 		return _localctx;
53639 	}
53640 
53641 	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
53642 		switch (ruleIndex) {
53643 		case 49:
53644 			return expr_sempred((ExprContext)_localctx, predIndex);
53645 		case 54:
53646 			return booleanPrimary_sempred((BooleanPrimaryContext)_localctx, predIndex);
53647 		case 57:
53648 			return bitExpr_sempred((BitExprContext)_localctx, predIndex);
53649 		case 58:
53650 			return simpleExpr_sempred((SimpleExprContext)_localctx, predIndex);
53651 		}
53652 		return true;
53653 	}
53654 	private boolean expr_sempred(ExprContext _localctx, int predIndex) {
53655 		switch (predIndex) {
53656 		case 0:
53657 			return precpred(_ctx, 5);
53658 		case 1:
53659 			return precpred(_ctx, 4);
53660 		case 2:
53661 			return precpred(_ctx, 3);
53662 		}
53663 		return true;
53664 	}
53665 	private boolean booleanPrimary_sempred(BooleanPrimaryContext _localctx, int predIndex) {
53666 		switch (predIndex) {
53667 		case 3:
53668 			return precpred(_ctx, 5);
53669 		case 4:
53670 			return precpred(_ctx, 4);
53671 		case 5:
53672 			return precpred(_ctx, 3);
53673 		case 6:
53674 			return precpred(_ctx, 2);
53675 		}
53676 		return true;
53677 	}
53678 	private boolean bitExpr_sempred(BitExprContext _localctx, int predIndex) {
53679 		switch (predIndex) {
53680 		case 7:
53681 			return precpred(_ctx, 11);
53682 		case 8:
53683 			return precpred(_ctx, 10);
53684 		case 9:
53685 			return precpred(_ctx, 9);
53686 		case 10:
53687 			return precpred(_ctx, 8);
53688 		case 11:
53689 			return precpred(_ctx, 7);
53690 		case 12:
53691 			return precpred(_ctx, 6);
53692 		case 13:
53693 			return precpred(_ctx, 5);
53694 		case 14:
53695 			return precpred(_ctx, 4);
53696 		case 15:
53697 			return precpred(_ctx, 3);
53698 		case 16:
53699 			return precpred(_ctx, 2);
53700 		}
53701 		return true;
53702 	}
53703 	private boolean simpleExpr_sempred(SimpleExprContext _localctx, int predIndex) {
53704 		switch (predIndex) {
53705 		case 17:
53706 			return precpred(_ctx, 9);
53707 		}
53708 		return true;
53709 	}
53710 
53711 	private static final String _serializedATNSegment0 =
53712 		"\u0004\u0001\u02de\u1c83\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+
53713 		"\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+
53714 		"\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+
53715 		"\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+
53716 		"\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+
53717 		"\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007"+
53718 		"\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007"+
53719 		"\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007"+
53720 		"\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007"+
53721 		"\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007"+
53722 		"\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007"+
53723 		"\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007"+
53724 		"\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007"+
53725 		",\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u0007"+
53726 		"1\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u0007"+
53727 		"6\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007"+
53728 		";\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007"+
53729 		"@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007"+
53730 		"E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007"+
53731 		"J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007"+
53732 		"O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007"+
53733 		"T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007"+
53734 		"Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007]\u0002^\u0007"+
53735 		"^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007b\u0002c\u0007"+
53736 		"c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007g\u0002h\u0007"+
53737 		"h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007l\u0002m\u0007"+
53738 		"m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007q\u0002r\u0007"+
53739 		"r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007v\u0002w\u0007"+
53740 		"w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007{\u0002|\u0007"+
53741 		"|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002\u0080\u0007"+
53742 		"\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002\u0083\u0007"+
53743 		"\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002\u0086\u0007"+
53744 		"\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002\u0089\u0007"+
53745 		"\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b\u0002\u008c\u0007"+
53746 		"\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e\u0002\u008f\u0007"+
53747 		"\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091\u0002\u0092\u0007"+
53748 		"\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094\u0002\u0095\u0007"+
53749 		"\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097\u0002\u0098\u0007"+
53750 		"\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a\u0002\u009b\u0007"+
53751 		"\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d\u0002\u009e\u0007"+
53752 		"\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0\u0002\u00a1\u0007"+
53753 		"\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3\u0002\u00a4\u0007"+
53754 		"\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6\u0002\u00a7\u0007"+
53755 		"\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9\u0002\u00aa\u0007"+
53756 		"\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac\u0002\u00ad\u0007"+
53757 		"\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af\u0002\u00b0\u0007"+
53758 		"\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2\u0002\u00b3\u0007"+
53759 		"\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5\u0002\u00b6\u0007"+
53760 		"\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8\u0002\u00b9\u0007"+
53761 		"\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb\u0002\u00bc\u0007"+
53762 		"\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be\u0002\u00bf\u0007"+
53763 		"\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1\u0002\u00c2\u0007"+
53764 		"\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4\u0002\u00c5\u0007"+
53765 		"\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7\u0002\u00c8\u0007"+
53766 		"\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca\u0002\u00cb\u0007"+
53767 		"\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd\u0002\u00ce\u0007"+
53768 		"\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0\u0002\u00d1\u0007"+
53769 		"\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3\u0002\u00d4\u0007"+
53770 		"\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6\u0002\u00d7\u0007"+
53771 		"\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9\u0002\u00da\u0007"+
53772 		"\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc\u0002\u00dd\u0007"+
53773 		"\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df\u0002\u00e0\u0007"+
53774 		"\u00e0\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2\u0002\u00e3\u0007"+
53775 		"\u00e3\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5\u0002\u00e6\u0007"+
53776 		"\u00e6\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8\u0002\u00e9\u0007"+
53777 		"\u00e9\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb\u0002\u00ec\u0007"+
53778 		"\u00ec\u0002\u00ed\u0007\u00ed\u0002\u00ee\u0007\u00ee\u0002\u00ef\u0007"+
53779 		"\u00ef\u0002\u00f0\u0007\u00f0\u0002\u00f1\u0007\u00f1\u0002\u00f2\u0007"+
53780 		"\u00f2\u0002\u00f3\u0007\u00f3\u0002\u00f4\u0007\u00f4\u0002\u00f5\u0007"+
53781 		"\u00f5\u0002\u00f6\u0007\u00f6\u0002\u00f7\u0007\u00f7\u0002\u00f8\u0007"+
53782 		"\u00f8\u0002\u00f9\u0007\u00f9\u0002\u00fa\u0007\u00fa\u0002\u00fb\u0007"+
53783 		"\u00fb\u0002\u00fc\u0007\u00fc\u0002\u00fd\u0007\u00fd\u0002\u00fe\u0007"+
53784 		"\u00fe\u0002\u00ff\u0007\u00ff\u0002\u0100\u0007\u0100\u0002\u0101\u0007"+
53785 		"\u0101\u0002\u0102\u0007\u0102\u0002\u0103\u0007\u0103\u0002\u0104\u0007"+
53786 		"\u0104\u0002\u0105\u0007\u0105\u0002\u0106\u0007\u0106\u0002\u0107\u0007"+
53787 		"\u0107\u0002\u0108\u0007\u0108\u0002\u0109\u0007\u0109\u0002\u010a\u0007"+
53788 		"\u010a\u0002\u010b\u0007\u010b\u0002\u010c\u0007\u010c\u0002\u010d\u0007"+
53789 		"\u010d\u0002\u010e\u0007\u010e\u0002\u010f\u0007\u010f\u0002\u0110\u0007"+
53790 		"\u0110\u0002\u0111\u0007\u0111\u0002\u0112\u0007\u0112\u0002\u0113\u0007"+
53791 		"\u0113\u0002\u0114\u0007\u0114\u0002\u0115\u0007\u0115\u0002\u0116\u0007"+
53792 		"\u0116\u0002\u0117\u0007\u0117\u0002\u0118\u0007\u0118\u0002\u0119\u0007"+
53793 		"\u0119\u0002\u011a\u0007\u011a\u0002\u011b\u0007\u011b\u0002\u011c\u0007"+
53794 		"\u011c\u0002\u011d\u0007\u011d\u0002\u011e\u0007\u011e\u0002\u011f\u0007"+
53795 		"\u011f\u0002\u0120\u0007\u0120\u0002\u0121\u0007\u0121\u0002\u0122\u0007"+
53796 		"\u0122\u0002\u0123\u0007\u0123\u0002\u0124\u0007\u0124\u0002\u0125\u0007"+
53797 		"\u0125\u0002\u0126\u0007\u0126\u0002\u0127\u0007\u0127\u0002\u0128\u0007"+
53798 		"\u0128\u0002\u0129\u0007\u0129\u0002\u012a\u0007\u012a\u0002\u012b\u0007"+
53799 		"\u012b\u0002\u012c\u0007\u012c\u0002\u012d\u0007\u012d\u0002\u012e\u0007"+
53800 		"\u012e\u0002\u012f\u0007\u012f\u0002\u0130\u0007\u0130\u0002\u0131\u0007"+
53801 		"\u0131\u0002\u0132\u0007\u0132\u0002\u0133\u0007\u0133\u0002\u0134\u0007"+
53802 		"\u0134\u0002\u0135\u0007\u0135\u0002\u0136\u0007\u0136\u0002\u0137\u0007"+
53803 		"\u0137\u0002\u0138\u0007\u0138\u0002\u0139\u0007\u0139\u0002\u013a\u0007"+
53804 		"\u013a\u0002\u013b\u0007\u013b\u0002\u013c\u0007\u013c\u0002\u013d\u0007"+
53805 		"\u013d\u0002\u013e\u0007\u013e\u0002\u013f\u0007\u013f\u0002\u0140\u0007"+
53806 		"\u0140\u0002\u0141\u0007\u0141\u0002\u0142\u0007\u0142\u0002\u0143\u0007"+
53807 		"\u0143\u0002\u0144\u0007\u0144\u0002\u0145\u0007\u0145\u0002\u0146\u0007"+
53808 		"\u0146\u0002\u0147\u0007\u0147\u0002\u0148\u0007\u0148\u0002\u0149\u0007"+
53809 		"\u0149\u0002\u014a\u0007\u014a\u0002\u014b\u0007\u014b\u0002\u014c\u0007"+
53810 		"\u014c\u0002\u014d\u0007\u014d\u0002\u014e\u0007\u014e\u0002\u014f\u0007"+
53811 		"\u014f\u0002\u0150\u0007\u0150\u0002\u0151\u0007\u0151\u0002\u0152\u0007"+
53812 		"\u0152\u0002\u0153\u0007\u0153\u0002\u0154\u0007\u0154\u0002\u0155\u0007"+
53813 		"\u0155\u0002\u0156\u0007\u0156\u0002\u0157\u0007\u0157\u0002\u0158\u0007"+
53814 		"\u0158\u0002\u0159\u0007\u0159\u0002\u015a\u0007\u015a\u0002\u015b\u0007"+
53815 		"\u015b\u0002\u015c\u0007\u015c\u0002\u015d\u0007\u015d\u0002\u015e\u0007"+
53816 		"\u015e\u0002\u015f\u0007\u015f\u0002\u0160\u0007\u0160\u0002\u0161\u0007"+
53817 		"\u0161\u0002\u0162\u0007\u0162\u0002\u0163\u0007\u0163\u0002\u0164\u0007"+
53818 		"\u0164\u0002\u0165\u0007\u0165\u0002\u0166\u0007\u0166\u0002\u0167\u0007"+
53819 		"\u0167\u0002\u0168\u0007\u0168\u0002\u0169\u0007\u0169\u0002\u016a\u0007"+
53820 		"\u016a\u0002\u016b\u0007\u016b\u0002\u016c\u0007\u016c\u0002\u016d\u0007"+
53821 		"\u016d\u0002\u016e\u0007\u016e\u0002\u016f\u0007\u016f\u0002\u0170\u0007"+
53822 		"\u0170\u0002\u0171\u0007\u0171\u0002\u0172\u0007\u0172\u0002\u0173\u0007"+
53823 		"\u0173\u0002\u0174\u0007\u0174\u0002\u0175\u0007\u0175\u0002\u0176\u0007"+
53824 		"\u0176\u0002\u0177\u0007\u0177\u0002\u0178\u0007\u0178\u0002\u0179\u0007"+
53825 		"\u0179\u0002\u017a\u0007\u017a\u0002\u017b\u0007\u017b\u0002\u017c\u0007"+
53826 		"\u017c\u0002\u017d\u0007\u017d\u0002\u017e\u0007\u017e\u0002\u017f\u0007"+
53827 		"\u017f\u0002\u0180\u0007\u0180\u0002\u0181\u0007\u0181\u0002\u0182\u0007"+
53828 		"\u0182\u0002\u0183\u0007\u0183\u0002\u0184\u0007\u0184\u0002\u0185\u0007"+
53829 		"\u0185\u0002\u0186\u0007\u0186\u0002\u0187\u0007\u0187\u0002\u0188\u0007"+
53830 		"\u0188\u0002\u0189\u0007\u0189\u0002\u018a\u0007\u018a\u0002\u018b\u0007"+
53831 		"\u018b\u0002\u018c\u0007\u018c\u0002\u018d\u0007\u018d\u0002\u018e\u0007"+
53832 		"\u018e\u0002\u018f\u0007\u018f\u0002\u0190\u0007\u0190\u0002\u0191\u0007"+
53833 		"\u0191\u0002\u0192\u0007\u0192\u0002\u0193\u0007\u0193\u0002\u0194\u0007"+
53834 		"\u0194\u0002\u0195\u0007\u0195\u0002\u0196\u0007\u0196\u0002\u0197\u0007"+
53835 		"\u0197\u0002\u0198\u0007\u0198\u0002\u0199\u0007\u0199\u0002\u019a\u0007"+
53836 		"\u019a\u0002\u019b\u0007\u019b\u0002\u019c\u0007\u019c\u0002\u019d\u0007"+
53837 		"\u019d\u0002\u019e\u0007\u019e\u0002\u019f\u0007\u019f\u0002\u01a0\u0007"+
53838 		"\u01a0\u0002\u01a1\u0007\u01a1\u0002\u01a2\u0007\u01a2\u0002\u01a3\u0007"+
53839 		"\u01a3\u0002\u01a4\u0007\u01a4\u0002\u01a5\u0007\u01a5\u0002\u01a6\u0007"+
53840 		"\u01a6\u0002\u01a7\u0007\u01a7\u0002\u01a8\u0007\u01a8\u0002\u01a9\u0007"+
53841 		"\u01a9\u0002\u01aa\u0007\u01aa\u0002\u01ab\u0007\u01ab\u0002\u01ac\u0007"+
53842 		"\u01ac\u0002\u01ad\u0007\u01ad\u0002\u01ae\u0007\u01ae\u0002\u01af\u0007"+
53843 		"\u01af\u0002\u01b0\u0007\u01b0\u0002\u01b1\u0007\u01b1\u0002\u01b2\u0007"+
53844 		"\u01b2\u0002\u01b3\u0007\u01b3\u0002\u01b4\u0007\u01b4\u0002\u01b5\u0007"+
53845 		"\u01b5\u0002\u01b6\u0007\u01b6\u0002\u01b7\u0007\u01b7\u0002\u01b8\u0007"+
53846 		"\u01b8\u0002\u01b9\u0007\u01b9\u0002\u01ba\u0007\u01ba\u0002\u01bb\u0007"+
53847 		"\u01bb\u0002\u01bc\u0007\u01bc\u0002\u01bd\u0007\u01bd\u0002\u01be\u0007"+
53848 		"\u01be\u0002\u01bf\u0007\u01bf\u0002\u01c0\u0007\u01c0\u0002\u01c1\u0007"+
53849 		"\u01c1\u0002\u01c2\u0007\u01c2\u0002\u01c3\u0007\u01c3\u0002\u01c4\u0007"+
53850 		"\u01c4\u0002\u01c5\u0007\u01c5\u0002\u01c6\u0007\u01c6\u0002\u01c7\u0007"+
53851 		"\u01c7\u0002\u01c8\u0007\u01c8\u0002\u01c9\u0007\u01c9\u0002\u01ca\u0007"+
53852 		"\u01ca\u0002\u01cb\u0007\u01cb\u0002\u01cc\u0007\u01cc\u0002\u01cd\u0007"+
53853 		"\u01cd\u0002\u01ce\u0007\u01ce\u0002\u01cf\u0007\u01cf\u0002\u01d0\u0007"+
53854 		"\u01d0\u0002\u01d1\u0007\u01d1\u0002\u01d2\u0007\u01d2\u0002\u01d3\u0007"+
53855 		"\u01d3\u0002\u01d4\u0007\u01d4\u0002\u01d5\u0007\u01d5\u0002\u01d6\u0007"+
53856 		"\u01d6\u0002\u01d7\u0007\u01d7\u0002\u01d8\u0007\u01d8\u0002\u01d9\u0007"+
53857 		"\u01d9\u0002\u01da\u0007\u01da\u0002\u01db\u0007\u01db\u0002\u01dc\u0007"+
53858 		"\u01dc\u0002\u01dd\u0007\u01dd\u0002\u01de\u0007\u01de\u0002\u01df\u0007"+
53859 		"\u01df\u0002\u01e0\u0007\u01e0\u0002\u01e1\u0007\u01e1\u0002\u01e2\u0007"+
53860 		"\u01e2\u0002\u01e3\u0007\u01e3\u0002\u01e4\u0007\u01e4\u0002\u01e5\u0007"+
53861 		"\u01e5\u0002\u01e6\u0007\u01e6\u0002\u01e7\u0007\u01e7\u0002\u01e8\u0007"+
53862 		"\u01e8\u0002\u01e9\u0007\u01e9\u0002\u01ea\u0007\u01ea\u0002\u01eb\u0007"+
53863 		"\u01eb\u0002\u01ec\u0007\u01ec\u0002\u01ed\u0007\u01ed\u0002\u01ee\u0007"+
53864 		"\u01ee\u0002\u01ef\u0007\u01ef\u0002\u01f0\u0007\u01f0\u0002\u01f1\u0007"+
53865 		"\u01f1\u0002\u01f2\u0007\u01f2\u0002\u01f3\u0007\u01f3\u0002\u01f4\u0007"+
53866 		"\u01f4\u0002\u01f5\u0007\u01f5\u0002\u01f6\u0007\u01f6\u0002\u01f7\u0007"+
53867 		"\u01f7\u0002\u01f8\u0007\u01f8\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53868 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53869 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53870 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53871 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53872 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53873 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53874 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53875 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53876 		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
53877 		"\u0000\u0001\u0000\u0003\u0000\u042e\b\u0000\u0001\u0000\u0003\u0000\u0431"+
53878 		"\b\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
53879 		"\u0001\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001"+
53880 		"\u0002\u0001\u0002\u0001\u0002\u0003\u0002\u0441\b\u0002\u0001\u0003\u0001"+
53881 		"\u0003\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001"+
53882 		"\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u044d\b\u0005\u0001\u0005\u0001"+
53883 		"\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u0453\b\u0005\u0003\u0005\u0455"+
53884 		"\b\u0005\u0003\u0005\u0457\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006"+
53885 		"\u0001\u0006\u0001\u0006\u0003\u0006\u045e\b\u0006\u0001\u0007\u0001\u0007"+
53886 		"\u0001\u0007\u0001\u0007\u0003\u0007\u0464\b\u0007\u0003\u0007\u0466\b"+
53887 		"\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001"+
53888 		"\u0007\u0003\u0007\u046e\b\u0007\u0001\b\u0001\b\u0003\b\u0472\b\b\u0001"+
53889 		"\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0003\t\u047a\b\t\u0001\n\u0001"+
53890 		"\n\u0003\n\u047e\b\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0003"+
53891 		"\u000b\u0484\b\u000b\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
53892 		"\r\u0001\r\u0001\r\u0003\r\u048f\b\r\u0001\u000e\u0001\u000e\u0001\u000f"+
53893 		"\u0003\u000f\u0494\b\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010"+
53894 		"\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0003\u0010"+
53895 		"\u049f\b\u0010\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0013"+
53896 		"\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0003\u0015"+
53897 		"\u04ab\b\u0015\u0001\u0016\u0001\u0016\u0003\u0016\u04af\b\u0016\u0001"+
53898 		"\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001"+
53899 		"\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0003\u001b\u04bc"+
53900 		"\b\u001b\u0001\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0003"+
53901 		"\u001c\u04c3\b\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u04c8"+
53902 		"\b\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0003\u001d\u04cd\b\u001d"+
53903 		"\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0003\u001e"+
53904 		"\u04d4\b\u001e\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001\u001f"+
53905 		"\u0003\u001f\u04db\b\u001f\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001"+
53906 		" \u0003 \u04e2\b \u0001 \u0003 \u04e5\b \u0001 \u0003 \u04e8\b \u0001"+
53907 		" \u0001 \u0001!\u0001!\u0001!\u0003!\u04ef\b!\u0001!\u0001!\u0001\"\u0001"+
53908 		"\"\u0001#\u0001#\u0001$\u0001$\u0001$\u0003$\u04fa\b$\u0001$\u0001$\u0001"+
53909 		"$\u0003$\u04ff\b$\u0001$\u0001$\u0003$\u0503\b$\u0001%\u0001%\u0001%\u0001"+
53910 		"%\u0001%\u0001&\u0001&\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0005"+
53911 		"(\u0512\b(\n(\f(\u0515\t(\u0001(\u0001(\u0001)\u0001)\u0001)\u0001)\u0005"+
53912 		")\u051d\b)\n)\f)\u0520\t)\u0001)\u0001)\u0001*\u0003*\u0525\b*\u0001*"+
53913 		"\u0001*\u0001*\u0005*\u052a\b*\n*\f*\u052d\t*\u0001*\u0003*\u0530\b*\u0001"+
53914 		"+\u0001+\u0001,\u0001,\u0001-\u0001-\u0001.\u0001.\u0001.\u0003.\u053b"+
53915 		"\b.\u0001/\u0001/\u0001/\u0001/\u0003/\u0541\b/\u0003/\u0543\b/\u0001"+
53916 		"/\u0001/\u00010\u00030\u0548\b0\u00010\u00010\u00011\u00011\u00011\u0001"+
53917 		"1\u00011\u00011\u00011\u00011\u00011\u00031\u0555\b1\u00011\u00011\u0001"+
53918 		"1\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u00011\u0005"+
53919 		"1\u0563\b1\n1\f1\u0566\t1\u00012\u00012\u00013\u00013\u00014\u00014\u0003"+
53920 		"4\u056e\b4\u00014\u00014\u00014\u00015\u00015\u00016\u00016\u00016\u0001"+
53921 		"6\u00016\u00016\u00036\u057b\b6\u00016\u00016\u00016\u00016\u00016\u0001"+
53922 		"6\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00056\u058a\b6\n6"+
53923 		"\f6\u058d\t6\u00017\u00017\u00018\u00018\u00038\u0593\b8\u00018\u0001"+
53924 		"8\u00018\u00018\u00018\u00038\u059a\b8\u00018\u00018\u00018\u00018\u0001"+
53925 		"8\u00058\u05a1\b8\n8\f8\u05a4\t8\u00018\u00018\u00018\u00018\u00038\u05aa"+
53926 		"\b8\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00038\u05b3\b8\u0001"+
53927 		"8\u00018\u00018\u00018\u00038\u05b9\b8\u00018\u00038\u05bc\b8\u00019\u0001"+
53928 		"9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+
53929 		"9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+
53930 		"9\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u00019\u0001"+
53931 		"9\u00019\u00059\u05df\b9\n9\f9\u05e2\t9\u0001:\u0001:\u0001:\u0001:\u0001"+
53932 		":\u0001:\u0001:\u0001:\u0001:\u0001:\u0001:\u0003:\u05ef\b:\u0001:\u0001"+
53933 		":\u0003:\u05f3\b:\u0001:\u0001:\u0001:\u0001:\u0005:\u05f9\b:\n:\f:\u05fc"+
53934 		"\t:\u0001:\u0001:\u0001:\u0003:\u0601\b:\u0001:\u0001:\u0001:\u0001:\u0001"+
53935 		":\u0001:\u0001:\u0001:\u0001:\u0005:\u060c\b:\n:\f:\u060f\t:\u0001:\u0001"+
53936 		":\u0005:\u0613\b:\n:\f:\u0616\t:\u0001:\u0001:\u0001:\u0003:\u061b\b:"+
53937 		"\u0001:\u0001:\u0003:\u061f\b:\u0001:\u0001:\u0001:\u0005:\u0624\b:\n"+
53938 		":\f:\u0627\t:\u0001;\u0001;\u0001;\u0003;\u062c\b;\u0001<\u0001<\u0001"+
53939 		"<\u0003<\u0631\b<\u0001<\u0001<\u0001<\u0005<\u0636\b<\n<\f<\u0639\t<"+
53940 		"\u0001<\u0003<\u063c\b<\u0001<\u0001<\u0001=\u0001=\u0001>\u0001>\u0001"+
53941 		"?\u0001?\u0001?\u0001?\u0001?\u0001?\u0001?\u0001?\u0003?\u064c\b?\u0001"+
53942 		"@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0001@\u0003@\u0657"+
53943 		"\b@\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001"+
53944 		"A\u0001A\u0003A\u0664\bA\u0001A\u0001A\u0001B\u0001B\u0003B\u066a\bB\u0001"+
53945 		"C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001D\u0001D\u0001D\u0001"+
53946 		"D\u0001D\u0001D\u0001D\u0003D\u067a\bD\u0001D\u0001D\u0001E\u0001E\u0003"+
53947 		"E\u0680\bE\u0001F\u0001F\u0001F\u0001F\u0001F\u0005F\u0687\bF\nF\fF\u068a"+
53948 		"\tF\u0001F\u0003F\u068d\bF\u0003F\u068f\bF\u0001F\u0001F\u0001G\u0001"+
53949 		"G\u0001G\u0001G\u0001G\u0005G\u0698\bG\nG\fG\u069b\tG\u0001G\u0003G\u069e"+
53950 		"\bG\u0001G\u0001G\u0001H\u0001H\u0001H\u0001H\u0001I\u0001I\u0001I\u0001"+
53951 		"I\u0001I\u0001I\u0003I\u06ac\bI\u0001J\u0001J\u0001J\u0001J\u0001J\u0005"+
53952 		"J\u06b3\bJ\nJ\fJ\u06b6\tJ\u0001J\u0001J\u0003J\u06ba\bJ\u0001J\u0001J"+
53953 		"\u0001K\u0001K\u0001K\u0001K\u0001K\u0003K\u06c3\bK\u0001K\u0001K\u0003"+
53954 		"K\u06c7\bK\u0001L\u0001L\u0001L\u0001L\u0001L\u0005L\u06ce\bL\nL\fL\u06d1"+
53955 		"\tL\u0001L\u0001L\u0001M\u0001M\u0001M\u0003M\u06d8\bM\u0001M\u0001M\u0003"+
53956 		"M\u06dc\bM\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001"+
53957 		"N\u0001N\u0001N\u0003N\u06e9\bN\u0001N\u0001N\u0001N\u0003N\u06ee\bN\u0001"+
53958 		"N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0005N\u06f8\bN\nN"+
53959 		"\fN\u06fb\tN\u0001N\u0001N\u0003N\u06ff\bN\u0001O\u0001O\u0001O\u0001"+
53960 		"O\u0001O\u0005O\u0706\bO\nO\fO\u0709\tO\u0001O\u0003O\u070c\bO\u0001O"+
53961 		"\u0001O\u0001P\u0001P\u0001P\u0003P\u0713\bP\u0001P\u0001P\u0001P\u0001"+
53962 		"P\u0001P\u0003P\u071a\bP\u0001Q\u0001Q\u0003Q\u071e\bQ\u0001Q\u0004Q\u0721"+
53963 		"\bQ\u000bQ\fQ\u0722\u0001Q\u0003Q\u0726\bQ\u0001Q\u0001Q\u0001R\u0001"+
53964 		"R\u0001R\u0001R\u0001R\u0001S\u0001S\u0001S\u0001T\u0001T\u0001T\u0001"+
53965 		"T\u0003T\u0736\bT\u0001U\u0001U\u0001U\u0001U\u0001U\u0005U\u073d\bU\n"+
53966 		"U\fU\u0740\tU\u0001U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001U\u0001U"+
53967 		"\u0001U\u0003U\u074b\bU\u0003U\u074d\bU\u0001V\u0001V\u0001V\u0003V\u0752"+
53968 		"\bV\u0001V\u0001V\u0003V\u0756\bV\u0001V\u0003V\u0759\bV\u0001W\u0001"+
53969 		"W\u0001W\u0003W\u075e\bW\u0001W\u0001W\u0001W\u0001W\u0001W\u0001W\u0001"+
53970 		"W\u0003W\u0767\bW\u0001W\u0001W\u0001W\u0003W\u076c\bW\u0001X\u0001X\u0001"+
53971 		"Y\u0001Y\u0001Y\u0001Y\u0003Y\u0774\bY\u0001Y\u0001Y\u0001Z\u0001Z\u0001"+
53972 		"Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0003Z\u0780\bZ\u0001Z\u0001Z\u0001"+
53973 		"[\u0001[\u0001[\u0001[\u0001[\u0003[\u0789\b[\u0001[\u0001[\u0001[\u0001"+
53974 		"[\u0003[\u078f\b[\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0003\\\u0796"+
53975 		"\b\\\u0001\\\u0001\\\u0001]\u0001]\u0001]\u0001^\u0001^\u0001^\u0003^"+
53976 		"\u07a0\b^\u0001^\u0003^\u07a3\b^\u0001^\u0003^\u07a6\b^\u0001^\u0001^"+
53977 		"\u0001_\u0001_\u0001_\u0001_\u0001_\u0005_\u07af\b_\n_\f_\u07b2\t_\u0001"+
53978 		"`\u0001`\u0001`\u0001a\u0001a\u0003a\u07b9\ba\u0001b\u0001b\u0001b\u0001"+
53979 		"b\u0001b\u0001c\u0001c\u0003c\u07c2\bc\u0001d\u0001d\u0001d\u0001d\u0001"+
53980 		"d\u0001d\u0003d\u07ca\bd\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0003"+
53981 		"e\u07d2\be\u0001f\u0001f\u0003f\u07d6\bf\u0001g\u0001g\u0001g\u0001g\u0001"+
53982 		"g\u0001g\u0001g\u0001g\u0001g\u0001g\u0001g\u0003g\u07e3\bg\u0003g\u07e5"+
53983 		"\bg\u0001h\u0001h\u0001h\u0001h\u0001i\u0001i\u0001i\u0003i\u07ee\bi\u0001"+
53984 		"j\u0001j\u0001j\u0001k\u0001k\u0001l\u0001l\u0001l\u0001m\u0001m\u0001"+
53985 		"m\u0001m\u0001m\u0001m\u0001n\u0001n\u0001n\u0005n\u0801\bn\nn\fn\u0804"+
53986 		"\tn\u0001o\u0001o\u0003o\u0808\bo\u0001p\u0001p\u0001p\u0001p\u0001q\u0001"+
53987 		"q\u0001q\u0001q\u0001q\u0001q\u0003q\u0814\bq\u0001q\u0001q\u0001q\u0001"+
53988 		"q\u0001q\u0001q\u0001r\u0001r\u0001r\u0001r\u0001r\u0003r\u0821\br\u0001"+
53989 		"s\u0001s\u0001t\u0001t\u0001t\u0005t\u0828\bt\nt\ft\u082b\tt\u0001u\u0001"+
53990 		"u\u0001v\u0001v\u0001w\u0001w\u0001w\u0001w\u0001w\u0001w\u0003w\u0837"+
53991 		"\bw\u0001x\u0001x\u0001y\u0001y\u0001z\u0001z\u0001{\u0001{\u0001|\u0001"+
53992 		"|\u0001}\u0001}\u0001}\u0001~\u0001~\u0001\u007f\u0001\u007f\u0001\u0080"+
53993 		"\u0001\u0080\u0003\u0080\u084c\b\u0080\u0001\u0080\u0001\u0080\u0001\u0081"+
53994 		"\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0081\u0003\u0081\u0855\b\u0081"+
53995 		"\u0001\u0082\u0001\u0082\u0003\u0082\u0859\b\u0082\u0001\u0083\u0001\u0083"+
53996 		"\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0084\u0001\u0084"+
53997 		"\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084"+
53998 		"\u0001\u0084\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085"+
53999 		"\u0001\u0086\u0001\u0086\u0001\u0086\u0003\u0086\u0872\b\u0086\u0001\u0086"+
54000 		"\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0087\u0001\u0087"+
54001 		"\u0001\u0087\u0003\u0087\u087c\b\u0087\u0001\u0087\u0001\u0087\u0001\u0087"+
54002 		"\u0001\u0087\u0001\u0087\u0001\u0088\u0001\u0088\u0001\u0088\u0003\u0088"+
54003 		"\u0886\b\u0088\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0089"+
54004 		"\u0001\u0089\u0001\u0089\u0003\u0089\u088f\b\u0089\u0001\u0089\u0001\u0089"+
54005 		"\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u008a\u0001\u008a"+
54006 		"\u0001\u008a\u0001\u008a\u0005\u008a\u089b\b\u008a\n\u008a\f\u008a\u089e"+
54007 		"\t\u008a\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0003"+
54008 		"\u008b\u08a5\b\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008b\u0003"+
54009 		"\u008b\u08ab\b\u008b\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0005"+
54010 		"\u008c\u08b1\b\u008c\n\u008c\f\u008c\u08b4\t\u008c\u0001\u008d\u0001\u008d"+
54011 		"\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0005\u008d\u08bc\b\u008d"+
54012 		"\n\u008d\f\u008d\u08bf\t\u008d\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+
54013 		"\u008e\u0003\u008e\u08c5\b\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001"+
54014 		"\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0003\u008f\u08cf"+
54015 		"\b\u008f\u0001\u008f\u0005\u008f\u08d2\b\u008f\n\u008f\f\u008f\u08d5\t"+
54016 		"\u008f\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001"+
54017 		"\u0090\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0001"+
54018 		"\u0091\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001"+
54019 		"\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001"+
54020 		"\u0093\u0001\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0005\u0094\u08f3"+
54021 		"\b\u0094\n\u0094\f\u0094\u08f6\t\u0094\u0001\u0095\u0001\u0095\u0001\u0095"+
54022 		"\u0001\u0095\u0001\u0095\u0001\u0095\u0003\u0095\u08fe\b\u0095\u0001\u0095"+
54023 		"\u0003\u0095\u0901\b\u0095\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096"+
54024 		"\u0001\u0096\u0003\u0096\u0908\b\u0096\u0001\u0096\u0001\u0096\u0001\u0097"+
54025 		"\u0001\u0097\u0001\u0097\u0003\u0097\u090f\b\u0097\u0001\u0097\u0001\u0097"+
54026 		"\u0001\u0098\u0001\u0098\u0001\u0098\u0003\u0098\u0916\b\u0098\u0001\u0098"+
54027 		"\u0001\u0098\u0001\u0098\u0001\u0098\u0001\u0099\u0001\u0099\u0001\u0099"+
54028 		"\u0003\u0099\u091f\b\u0099\u0001\u0099\u0001\u0099\u0001\u0099\u0005\u0099"+
54029 		"\u0924\b\u0099\n\u0099\f\u0099\u0927\t\u0099\u0001\u009a\u0001\u009a\u0001"+
54030 		"\u009a\u0003\u009a\u092c\b\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0005"+
54031 		"\u009a\u0931\b\u009a\n\u009a\f\u009a\u0934\t\u009a\u0001\u009b\u0001\u009b"+
54032 		"\u0001\u009b\u0003\u009b\u0939\b\u009b\u0001\u009b\u0001\u009b\u0001\u009b"+
54033 		"\u0005\u009b\u093e\b\u009b\n\u009b\f\u009b\u0941\t\u009b\u0001\u009c\u0001"+
54034 		"\u009c\u0001\u009c\u0003\u009c\u0946\b\u009c\u0001\u009c\u0001\u009c\u0001"+
54035 		"\u009c\u0005\u009c\u094b\b\u009c\n\u009c\f\u009c\u094e\t\u009c\u0001\u009d"+
54036 		"\u0001\u009d\u0001\u009d\u0003\u009d\u0953\b\u009d\u0001\u009d\u0001\u009d"+
54037 		"\u0001\u009d\u0005\u009d\u0958\b\u009d\n\u009d\f\u009d\u095b\t\u009d\u0001"+
54038 		"\u009d\u0001\u009d\u0001\u009d\u0001\u009d\u0003\u009d\u0961\b\u009d\u0003"+
54039 		"\u009d\u0963\b\u009d\u0001\u009e\u0001\u009e\u0001\u009e\u0003\u009e\u0968"+
54040 		"\b\u009e\u0001\u009e\u0001\u009e\u0001\u009e\u0005\u009e\u096d\b\u009e"+
54041 		"\n\u009e\f\u009e\u0970\t\u009e\u0001\u009f\u0001\u009f\u0001\u009f\u0001"+
54042 		"\u009f\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0003\u00a0\u0979\b\u00a0\u0001"+
54043 		"\u00a0\u0001\u00a0\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a1\u0001"+
54044 		"\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0003\u00a2\u0985\b\u00a2\u0001"+
54045 		"\u00a2\u0001\u00a2\u0001\u00a2\u0005\u00a2\u098a\b\u00a2\n\u00a2\f\u00a2"+
54046 		"\u098d\t\u00a2\u0001\u00a2\u0003\u00a2\u0990\b\u00a2\u0003\u00a2\u0992"+
54047 		"\b\u00a2\u0001\u00a2\u0003\u00a2\u0995\b\u00a2\u0001\u00a3\u0001\u00a3"+
54048 		"\u0003\u00a3\u0999\b\u00a3\u0001\u00a3\u0003\u00a3\u099c\b\u00a3\u0001"+
54049 		"\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0003\u00a4\u09a2\b\u00a4\u0001"+
54050 		"\u00a4\u0001\u00a4\u0001\u00a4\u0003\u00a4\u09a7\b\u00a4\u0001\u00a4\u0001"+
54051 		"\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0005"+
54052 		"\u00a4\u09b0\b\u00a4\n\u00a4\f\u00a4\u09b3\t\u00a4\u0001\u00a4\u0003\u00a4"+
54053 		"\u09b6\b\u00a4\u0003\u00a4\u09b8\b\u00a4\u0001\u00a5\u0003\u00a5\u09bb"+
54054 		"\b\u00a5\u0001\u00a5\u0004\u00a5\u09be\b\u00a5\u000b\u00a5\f\u00a5\u09bf"+
54055 		"\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6"+
54056 		"\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6"+
54057 		"\u0001\u00a6\u0003\u00a6\u09cf\b\u00a6\u0001\u00a7\u0001\u00a7\u0003\u00a7"+
54058 		"\u09d3\b\u00a7\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a9"+
54059 		"\u0001\u00a9\u0001\u00a9\u0001\u00a9\u0005\u00a9\u09dd\b\u00a9\n\u00a9"+
54060 		"\f\u00a9\u09e0\t\u00a9\u0001\u00a9\u0001\u00a9\u0003\u00a9\u09e4\b\u00a9"+
54061 		"\u0001\u00a9\u0001\u00a9\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0001\u00aa"+
54062 		"\u0001\u00aa\u0003\u00aa\u09ed\b\u00aa\u0001\u00ab\u0001\u00ab\u0001\u00ab"+
54063 		"\u0005\u00ab\u09f2\b\u00ab\n\u00ab\f\u00ab\u09f5\t\u00ab\u0001\u00ab\u0001"+
54064 		"\u00ab\u0003\u00ab\u09f9\b\u00ab\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001"+
54065 		"\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001"+
54066 		"\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0003\u00ac\u0a08\b\u00ac\u0001"+
54067 		"\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001"+
54068 		"\u00ac\u0001\u00ac\u0003\u00ac\u0a12\b\u00ac\u0001\u00ac\u0001\u00ac\u0001"+
54069 		"\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001"+
54070 		"\u00ac\u0003\u00ac\u0a1d\b\u00ac\u0001\u00ac\u0003\u00ac\u0a20\b\u00ac"+
54071 		"\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac"+
54072 		"\u0001\u00ac\u0001\u00ac\u0005\u00ac\u0a2a\b\u00ac\n\u00ac\f\u00ac\u0a2d"+
54073 		"\t\u00ac\u0001\u00ac\u0003\u00ac\u0a30\b\u00ac\u0001\u00ad\u0001\u00ad"+
54074 		"\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad"+
54075 		"\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ad"+
54076 		"\u0001\u00ae\u0001\u00ae\u0003\u00ae\u0a42\b\u00ae\u0001\u00ae\u0001\u00ae"+
54077 		"\u0001\u00ae\u0003\u00ae\u0a47\b\u00ae\u0001\u00af\u0001\u00af\u0003\u00af"+
54078 		"\u0a4b\b\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0003\u00af\u0a50\b"+
54079 		"\u00af\u0001\u00b0\u0001\u00b0\u0003\u00b0\u0a54\b\u00b0\u0001\u00b0\u0001"+
54080 		"\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0003\u00b0\u0a5b\b\u00b0\u0001"+
54081 		"\u00b0\u0005\u00b0\u0a5e\b\u00b0\n\u00b0\f\u00b0\u0a61\t\u00b0\u0001\u00b1"+
54082 		"\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0003\u00b1\u0a68\b\u00b1"+
54083 		"\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1"+
54084 		"\u0001\u00b1\u0003\u00b1\u0a71\b\u00b1\u0001\u00b2\u0001\u00b2\u0003\u00b2"+
54085 		"\u0a75\b\u00b2\u0001\u00b2\u0001\u00b2\u0003\u00b2\u0a79\b\u00b2\u0001"+
54086 		"\u00b3\u0003\u00b3\u0a7c\b\u00b3\u0001\u00b3\u0003\u00b3\u0a7f\b\u00b3"+
54087 		"\u0001\u00b3\u0003\u00b3\u0a82\b\u00b3\u0001\u00b4\u0001\u00b4\u0001\u00b5"+
54088 		"\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5"+
54089 		"\u0001\u00b5\u0005\u00b5\u0a8e\b\u00b5\n\u00b5\f\u00b5\u0a91\t\u00b5\u0001"+
54090 		"\u00b5\u0001\u00b5\u0003\u00b5\u0a95\b\u00b5\u0001\u00b6\u0001\u00b6\u0001"+
54091 		"\u00b6\u0003\u00b6\u0a9a\b\u00b6\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001"+
54092 		"\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b8\u0001\u00b8\u0001\u00b8\u0001"+
54093 		"\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001"+
54094 		"\u00ba\u0003\u00ba\u0aac\b\u00ba\u0003\u00ba\u0aae\b\u00ba\u0001\u00bb"+
54095 		"\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb"+
54096 		"\u0001\u00bc\u0001\u00bc\u0003\u00bc\u0ab9\b\u00bc\u0001\u00bc\u0001\u00bc"+
54097 		"\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0003\u00bc\u0ac1\b\u00bc"+
54098 		"\u0001\u00bc\u0005\u00bc\u0ac4\b\u00bc\n\u00bc\f\u00bc\u0ac7\t\u00bc\u0001"+
54099 		"\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0003"+
54100 		"\u00bd\u0acf\b\u00bd\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001"+
54101 		"\u00be\u0003\u00be\u0ad6\b\u00be\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001"+
54102 		"\u00bf\u0003\u00bf\u0adc\b\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001"+
54103 		"\u00bf\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0003\u00c0\u0ae5\b\u00c0\u0001"+
54104 		"\u00c0\u0003\u00c0\u0ae8\b\u00c0\u0001\u00c0\u0003\u00c0\u0aeb\b\u00c0"+
54105 		"\u0001\u00c0\u0003\u00c0\u0aee\b\u00c0\u0001\u00c1\u0001\u00c1\u0001\u00c1"+
54106 		"\u0001\u00c1\u0001\u00c1\u0005\u00c1\u0af5\b\u00c1\n\u00c1\f\u00c1\u0af8"+
54107 		"\t\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0003"+
54108 		"\u00c2\u0aff\b\u00c2\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c4\u0001"+
54109 		"\u00c4\u0001\u00c4\u0001\u00c4\u0003\u00c4\u0b08\b\u00c4\u0001\u00c5\u0001"+
54110 		"\u00c5\u0001\u00c5\u0005\u00c5\u0b0d\b\u00c5\n\u00c5\f\u00c5\u0b10\t\u00c5"+
54111 		"\u0003\u00c5\u0b12\b\u00c5\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6"+
54112 		"\u0001\u00c6\u0001\u00c6\u0003\u00c6\u0b1a\b\u00c6\u0003\u00c6\u0b1c\b"+
54113 		"\u00c6\u0001\u00c6\u0003\u00c6\u0b1f\b\u00c6\u0001\u00c7\u0001\u00c7\u0001"+
54114 		"\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c7\u0001\u00c8\u0001\u00c8\u0003"+
54115 		"\u00c8\u0b29\b\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0003\u00c8\u0b2e"+
54116 		"\b\u00c8\u0001\u00c9\u0001\u00c9\u0001\u00c9\u0003\u00c9\u0b33\b\u00c9"+
54117 		"\u0001\u00ca\u0001\u00ca\u0003\u00ca\u0b37\b\u00ca\u0001\u00cb\u0003\u00cb"+
54118 		"\u0b3a\b\u00cb\u0001\u00cb\u0001\u00cb\u0003\u00cb\u0b3e\b\u00cb\u0001"+
54119 		"\u00cb\u0003\u00cb\u0b41\b\u00cb\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0003"+
54120 		"\u00cc\u0b46\b\u00cc\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001"+
54121 		"\u00ce\u0001\u00ce\u0003\u00ce\u0b4e\b\u00ce\u0001\u00ce\u0001\u00ce\u0001"+
54122 		"\u00ce\u0001\u00ce\u0001\u00ce\u0005\u00ce\u0b55\b\u00ce\n\u00ce\f\u00ce"+
54123 		"\u0b58\t\u00ce\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf"+
54124 		"\u0003\u00cf\u0b5f\b\u00cf\u0001\u00cf\u0003\u00cf\u0b62\b\u00cf\u0001"+
54125 		"\u00cf\u0003\u00cf\u0b65\b\u00cf\u0001\u00d0\u0003\u00d0\u0b68\b\u00d0"+
54126 		"\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0003\u00d0\u0b6e\b\u00d0"+
54127 		"\u0001\u00d0\u0001\u00d0\u0003\u00d0\u0b72\b\u00d0\u0001\u00d1\u0001\u00d1"+
54128 		"\u0001\u00d1\u0001\u00d1\u0005\u00d1\u0b78\b\u00d1\n\u00d1\f\u00d1\u0b7b"+
54129 		"\t\u00d1\u0001\u00d1\u0001\u00d1\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001"+
54130 		"\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001"+
54131 		"\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001"+
54132 		"\u00d3\u0001\u00d3\u0003\u00d3\u0b90\b\u00d3\u0003\u00d3\u0b92\b\u00d3"+
54133 		"\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0003\u00d4\u0b97\b\u00d4\u0003\u00d4"+
54134 		"\u0b99\b\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4\u0001\u00d4"+
54135 		"\u0003\u00d4\u0ba0\b\u00d4\u0003\u00d4\u0ba2\b\u00d4\u0001\u00d4\u0001"+
54136 		"\u00d4\u0003\u00d4\u0ba6\b\u00d4\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001"+
54137 		"\u00d5\u0005\u00d5\u0bac\b\u00d5\n\u00d5\f\u00d5\u0baf\t\u00d5\u0001\u00d5"+
54138 		"\u0001\u00d5\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6"+
54139 		"\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0003\u00d6\u0bbc\b\u00d6"+
54140 		"\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6"+
54141 		"\u0001\u00d6\u0003\u00d6\u0bc5\b\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6"+
54142 		"\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6"+
54143 		"\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0003\u00d6\u0bd4\b\u00d6"+
54144 		"\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0003\u00d6\u0bda\b\u00d6"+
54145 		"\u0001\u00d6\u0001\u00d6\u0003\u00d6\u0bde\b\u00d6\u0001\u00d6\u0001\u00d6"+
54146 		"\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0003\u00d6\u0be5\b\u00d6\u0001\u00d7"+
54147 		"\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7"+
54148 		"\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d8"+
54149 		"\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0005\u00d8\u0bf7\b\u00d8\n\u00d8"+
54150 		"\f\u00d8\u0bfa\t\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d9\u0001\u00d9"+
54151 		"\u0001\u00d9\u0001\u00d9\u0003\u00d9\u0c02\b\u00d9\u0001\u00d9\u0003\u00d9"+
54152 		"\u0c05\b\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00da"+
54153 		"\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00db"+
54154 		"\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db"+
54155 		"\u0001\u00db\u0001\u00db\u0001\u00db\u0003\u00db\u0c1b\b\u00db\u0003\u00db"+
54156 		"\u0c1d\b\u00db\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc"+
54157 		"\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0003\u00dc\u0c28\b\u00dc"+
54158 		"\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd"+
54159 		"\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd"+
54160 		"\u0001\u00dd\u0001\u00dd\u0003\u00dd\u0c38\b\u00dd\u0001\u00dd\u0001\u00dd"+
54161 		"\u0001\u00dd\u0003\u00dd\u0c3d\b\u00dd\u0005\u00dd\u0c3f\b\u00dd\n\u00dd"+
54162 		"\f\u00dd\u0c42\t\u00dd\u0001\u00dd\u0001\u00dd\u0003\u00dd\u0c46\b\u00dd"+
54163 		"\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0003\u00de"+
54164 		"\u0c4d\b\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de"+
54165 		"\u0001\u00de\u0005\u00de\u0c55\b\u00de\n\u00de\f\u00de\u0c58\t\u00de\u0001"+
54166 		"\u00de\u0001\u00de\u0001\u00de\u0001\u00df\u0003\u00df\u0c5e\b\u00df\u0001"+
54167 		"\u00df\u0003\u00df\u0c61\b\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001"+
54168 		"\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0003"+
54169 		"\u00e0\u0c6c\b\u00e0\u0001\u00e1\u0001\u00e1\u0003\u00e1\u0c70\b\u00e1"+
54170 		"\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0003\u00e1\u0c75\b\u00e1\u0001\u00e2"+
54171 		"\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0003\u00e2\u0c7b\b\u00e2\u0001\u00e2"+
54172 		"\u0001\u00e2\u0001\u00e2\u0003\u00e2\u0c80\b\u00e2\u0001\u00e2\u0003\u00e2"+
54173 		"\u0c83\b\u00e2\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e4"+
54174 		"\u0001\u00e4\u0001\u00e4\u0005\u00e4\u0c8c\b\u00e4\n\u00e4\f\u00e4\u0c8f"+
54175 		"\t\u00e4\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001\u00e5\u0001"+
54176 		"\u00e5\u0003\u00e5\u0c97\b\u00e5\u0001\u00e6\u0001\u00e6\u0003\u00e6\u0c9b"+
54177 		"\b\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001"+
54178 		"\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0001"+
54179 		"\u00e7\u0001\u00e7\u0003\u00e7\u0caa\b\u00e7\u0001\u00e8\u0001\u00e8\u0001"+
54180 		"\u00e8\u0001\u00e8\u0001\u00e8\u0003\u00e8\u0cb1\b\u00e8\u0001\u00e8\u0001"+
54181 		"\u00e8\u0001\u00e8\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001\u00e9\u0001"+
54182 		"\u00e9\u0001\u00e9\u0001\u00e9\u0003\u00e9\u0cbd\b\u00e9\u0001\u00e9\u0003"+
54183 		"\u00e9\u0cc0\b\u00e9\u0001\u00e9\u0001\u00e9\u0003\u00e9\u0cc4\b\u00e9"+
54184 		"\u0001\u00e9\u0001\u00e9\u0003\u00e9\u0cc8\b\u00e9\u0001\u00ea\u0001\u00ea"+
54185 		"\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0003\u00ea"+
54186 		"\u0cd1\b\u00ea\u0001\u00eb\u0003\u00eb\u0cd4\b\u00eb\u0001\u00eb\u0003"+
54187 		"\u00eb\u0cd7\b\u00eb\u0001\u00eb\u0001\u00eb\u0001\u00eb\u0005\u00eb\u0cdc"+
54188 		"\b\u00eb\n\u00eb\f\u00eb\u0cdf\t\u00eb\u0001\u00ec\u0001\u00ec\u0003\u00ec"+
54189 		"\u0ce3\b\u00ec\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed"+
54190 		"\u0005\u00ed\u0cea\b\u00ed\n\u00ed\f\u00ed\u0ced\t\u00ed\u0001\u00ed\u0001"+
54191 		"\u00ed\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001"+
54192 		"\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0001"+
54193 		"\u00ee\u0001\u00ee\u0001\u00ee\u0001\u00ee\u0003\u00ee\u0d00\b\u00ee\u0003"+
54194 		"\u00ee\u0d02\b\u00ee\u0001\u00ef\u0001\u00ef\u0001\u00f0\u0001\u00f0\u0003"+
54195 		"\u00f0\u0d08\b\u00f0\u0001\u00f0\u0001\u00f0\u0001\u00f0\u0005\u00f0\u0d0d"+
54196 		"\b\u00f0\n\u00f0\f\u00f0\u0d10\t\u00f0\u0001\u00f1\u0001\u00f1\u0003\u00f1"+
54197 		"\u0d14\b\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0005\u00f1\u0d19\b"+
54198 		"\u00f1\n\u00f1\f\u00f1\u0d1c\t\u00f1\u0001\u00f2\u0003\u00f2\u0d1f\b\u00f2"+
54199 		"\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0001\u00f2\u0003\u00f2\u0d25\b\u00f2"+
54200 		"\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0001\u00f3\u0003\u00f3\u0d2b\b\u00f3"+
54201 		"\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0003\u00f4\u0d30\b\u00f4\u0001\u00f4"+
54202 		"\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0003\u00f4\u0d36\b\u00f4\u0001\u00f4"+
54203 		"\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0001\u00f4\u0003\u00f4\u0d3d\b\u00f4"+
54204 		"\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0001\u00f5\u0003\u00f5\u0d43\b\u00f5"+
54205 		"\u0001\u00f5\u0001\u00f5\u0001\u00f6\u0001\u00f6\u0001\u00f6\u0001\u00f6"+
54206 		"\u0001\u00f6\u0003\u00f6\u0d4c\b\u00f6\u0001\u00f7\u0001\u00f7\u0001\u00f7"+
54207 		"\u0001\u00f7\u0001\u00f7\u0003\u00f7\u0d53\b\u00f7\u0003\u00f7\u0d55\b"+
54208 		"\u00f7\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f8\u0003\u00f8\u0d5b"+
54209 		"\b\u00f8\u0001\u00f8\u0003\u00f8\u0d5e\b\u00f8\u0001\u00f8\u0003\u00f8"+
54210 		"\u0d61\b\u00f8\u0001\u00f8\u0001\u00f8\u0001\u00f9\u0003\u00f9\u0d66\b"+
54211 		"\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00f9\u0001\u00fa\u0003"+
54212 		"\u00fa\u0d6d\b\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0001\u00fa\u0001"+
54213 		"\u00fb\u0001\u00fb\u0001\u00fb\u0003\u00fb\u0d76\b\u00fb\u0001\u00fc\u0001"+
54214 		"\u00fc\u0001\u00fc\u0003\u00fc\u0d7b\b\u00fc\u0001\u00fd\u0001\u00fd\u0001"+
54215 		"\u00fd\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0001\u00fe\u0003\u00fe\u0d84"+
54216 		"\b\u00fe\u0003\u00fe\u0d86\b\u00fe\u0001\u00ff\u0001\u00ff\u0001\u00ff"+
54217 		"\u0003\u00ff\u0d8b\b\u00ff\u0001\u0100\u0001\u0100\u0001\u0100\u0001\u0100"+
54218 		"\u0001\u0100\u0001\u0100\u0001\u0100\u0003\u0100\u0d94\b\u0100\u0003\u0100"+
54219 		"\u0d96\b\u0100\u0001\u0100\u0003\u0100\u0d99\b\u0100\u0001\u0101\u0001"+
54220 		"\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001"+
54221 		"\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0001"+
54222 		"\u0101\u0001\u0101\u0001\u0101\u0003\u0101\u0dab\b\u0101\u0003\u0101\u0dad"+
54223 		"\b\u0101\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001\u0102\u0001"+
54224 		"\u0102\u0001\u0102\u0001\u0102\u0003\u0102\u0db7\b\u0102\u0001\u0102\u0001"+
54225 		"\u0102\u0001\u0103\u0001\u0103\u0001\u0103\u0003\u0103\u0dbe\b\u0103\u0001"+
54226 		"\u0103\u0003\u0103\u0dc1\b\u0103\u0001\u0103\u0001\u0103\u0003\u0103\u0dc5"+
54227 		"\b\u0103\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0103\u0005\u0103\u0dcb"+
54228 		"\b\u0103\n\u0103\f\u0103\u0dce\t\u0103\u0003\u0103\u0dd0\b\u0103\u0001"+
54229 		"\u0104\u0001\u0104\u0003\u0104\u0dd4\b\u0104\u0001\u0104\u0001\u0104\u0001"+
54230 		"\u0104\u0005\u0104\u0dd9\b\u0104\n\u0104\f\u0104\u0ddc\t\u0104\u0001\u0104"+
54231 		"\u0001\u0104\u0005\u0104\u0de0\b\u0104\n\u0104\f\u0104\u0de3\t\u0104\u0001"+
54232 		"\u0104\u0001\u0104\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0005"+
54233 		"\u0105\u0deb\b\u0105\n\u0105\f\u0105\u0dee\t\u0105\u0001\u0105\u0001\u0105"+
54234 		"\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105"+
54235 		"\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105"+
54236 		"\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105"+
54237 		"\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0001\u0105\u0003\u0105"+
54238 		"\u0e09\b\u0105\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0106"+
54239 		"\u0001\u0106\u0003\u0106\u0e11\b\u0106\u0001\u0107\u0001\u0107\u0001\u0107"+
54240 		"\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107"+
54241 		"\u0001\u0107\u0001\u0107\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0108"+
54242 		"\u0001\u0108\u0003\u0108\u0e23\b\u0108\u0003\u0108\u0e25\b\u0108\u0001"+
54243 		"\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0003\u0108\u0e2c"+
54244 		"\b\u0108\u0001\u0108\u0003\u0108\u0e2f\b\u0108\u0003\u0108\u0e31\b\u0108"+
54245 		"\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0108\u0003\u0108"+
54246 		"\u0e38\b\u0108\u0003\u0108\u0e3a\b\u0108\u0001\u0109\u0001\u0109\u0001"+
54247 		"\u0109\u0003\u0109\u0e3f\b\u0109\u0001\u0109\u0001\u0109\u0001\u0109\u0005"+
54248 		"\u0109\u0e44\b\u0109\n\u0109\f\u0109\u0e47\t\u0109\u0001\u010a\u0001\u010a"+
54249 		"\u0003\u010a\u0e4b\b\u010a\u0001\u010a\u0003\u010a\u0e4e\b\u010a\u0001"+
54250 		"\u010a\u0001\u010a\u0003\u010a\u0e52\b\u010a\u0001\u010b\u0001\u010b\u0001"+
54251 		"\u010b\u0001\u010b\u0001\u010b\u0005\u010b\u0e59\b\u010b\n\u010b\f\u010b"+
54252 		"\u0e5c\t\u010b\u0003\u010b\u0e5e\b\u010b\u0001\u010c\u0001\u010c\u0001"+
54253 		"\u010c\u0001\u010c\u0005\u010c\u0e64\b\u010c\n\u010c\f\u010c\u0e67\t\u010c"+
54254 		"\u0001\u010c\u0003\u010c\u0e6a\b\u010c\u0001\u010d\u0001\u010d\u0003\u010d"+
54255 		"\u0e6e\b\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0003\u010d\u0e73\b"+
54256 		"\u010d\u0001\u010d\u0001\u010d\u0001\u010d\u0003\u010d\u0e78\b\u010d\u0001"+
54257 		"\u010e\u0001\u010e\u0003\u010e\u0e7c\b\u010e\u0001\u010e\u0001\u010e\u0001"+
54258 		"\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0001\u010f\u0005\u010f\u0e85"+
54259 		"\b\u010f\n\u010f\f\u010f\u0e88\t\u010f\u0001\u010f\u0001\u010f\u0001\u0110"+
54260 		"\u0001\u0110\u0003\u0110\u0e8e\b\u0110\u0001\u0111\u0001\u0111\u0001\u0111"+
54261 		"\u0001\u0111\u0003\u0111\u0e94\b\u0111\u0001\u0111\u0001\u0111\u0003\u0111"+
54262 		"\u0e98\b\u0111\u0001\u0111\u0001\u0111\u0003\u0111\u0e9c\b\u0111\u0001"+
54263 		"\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0001\u0111\u0003"+
54264 		"\u0111\u0ea4\b\u0111\u0003\u0111\u0ea6\b\u0111\u0001\u0111\u0003\u0111"+
54265 		"\u0ea9\b\u0111\u0001\u0111\u0001\u0111\u0001\u0112\u0001\u0112\u0001\u0112"+
54266 		"\u0003\u0112\u0eb0\b\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0003\u0112"+
54267 		"\u0eb5\b\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112\u0001\u0112"+
54268 		"\u0001\u0112\u0001\u0112\u0003\u0112\u0ebe\b\u0112\u0001\u0113\u0001\u0113"+
54269 		"\u0001\u0113\u0003\u0113\u0ec3\b\u0113\u0001\u0113\u0001\u0113\u0001\u0113"+
54270 		"\u0001\u0113\u0005\u0113\u0ec9\b\u0113\n\u0113\f\u0113\u0ecc\t\u0113\u0001"+
54271 		"\u0113\u0001\u0113\u0001\u0113\u0001\u0113\u0003\u0113\u0ed2\b\u0113\u0001"+
54272 		"\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0115\u0001\u0115\u0003"+
54273 		"\u0115\u0eda\b\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001"+
54274 		"\u0115\u0001\u0115\u0001\u0115\u0003\u0115\u0ee3\b\u0115\u0001\u0115\u0001"+
54275 		"\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001\u0115\u0001"+
54276 		"\u0115\u0001\u0115\u0001\u0115\u0003\u0115\u0eef\b\u0115\u0001\u0116\u0001"+
54277 		"\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001"+
54278 		"\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0001\u0116\u0005\u0116\u0efd"+
54279 		"\b\u0116\n\u0116\f\u0116\u0f00\t\u0116\u0003\u0116\u0f02\b\u0116\u0003"+
54280 		"\u0116\u0f04\b\u0116\u0001\u0117\u0003\u0117\u0f07\b\u0117\u0001\u0117"+
54281 		"\u0003\u0117\u0f0a\b\u0117\u0001\u0117\u0003\u0117\u0f0d\b\u0117\u0001"+
54282 		"\u0117\u0003\u0117\u0f10\b\u0117\u0001\u0118\u0001\u0118\u0001\u0118\u0001"+
54283 		"\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0001"+
54284 		"\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0001\u0118\u0001"+
54285 		"\u0118\u0003\u0118\u0f22\b\u0118\u0001\u0119\u0001\u0119\u0001\u0119\u0003"+
54286 		"\u0119\u0f27\b\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0003\u0119\u0f2c"+
54287 		"\b\u0119\u0001\u0119\u0001\u0119\u0001\u0119\u0003\u0119\u0f31\b\u0119"+
54288 		"\u0001\u0119\u0003\u0119\u0f34\b\u0119\u0005\u0119\u0f36\b\u0119\n\u0119"+
54289 		"\f\u0119\u0f39\t\u0119\u0001\u0119\u0001\u0119\u0001\u011a\u0001\u011a"+
54290 		"\u0001\u011a\u0003\u011a\u0f40\b\u011a\u0001\u011b\u0001\u011b\u0001\u011b"+
54291 		"\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0001\u011b\u0005\u011b"+
54292 		"\u0f4a\b\u011b\n\u011b\f\u011b\u0f4d\t\u011b\u0003\u011b\u0f4f\b\u011b"+
54293 		"\u0001\u011b\u0003\u011b\u0f52\b\u011b\u0001\u011b\u0001\u011b\u0001\u011b"+
54294 		"\u0001\u011b\u0001\u011b\u0001\u011c\u0001\u011c\u0001\u011c\u0001\u011c"+
54295 		"\u0001\u011c\u0001\u011c\u0005\u011c\u0f5f\b\u011c\n\u011c\f\u011c\u0f62"+
54296 		"\t\u011c\u0003\u011c\u0f64\b\u011c\u0001\u011c\u0003\u011c\u0f67\b\u011c"+
54297 		"\u0001\u011c\u0001\u011c\u0003\u011c\u0f6b\b\u011c\u0001\u011c\u0001\u011c"+
54298 		"\u0003\u011c\u0f6f\b\u011c\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d"+
54299 		"\u0001\u011d\u0001\u011d\u0005\u011d\u0f77\b\u011d\n\u011d\f\u011d\u0f7a"+
54300 		"\t\u011d\u0003\u011d\u0f7c\b\u011d\u0001\u011d\u0003\u011d\u0f7f\b\u011d"+
54301 		"\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011d\u0001\u011e"+
54302 		"\u0001\u011e\u0001\u011e\u0001\u011e\u0003\u011e\u0f8a\b\u011e\u0001\u011e"+
54303 		"\u0005\u011e\u0f8d\b\u011e\n\u011e\f\u011e\u0f90\t\u011e\u0001\u011f\u0005"+
54304 		"\u011f\u0f93\b\u011f\n\u011f\f\u011f\u0f96\t\u011f\u0001\u0120\u0003\u0120"+
54305 		"\u0f99\b\u0120\u0001\u0120\u0003\u0120\u0f9c\b\u0120\u0001\u0120\u0001"+
54306 		"\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0001"+
54307 		"\u0120\u0001\u0120\u0003\u0120\u0fa7\b\u0120\u0001\u0120\u0003\u0120\u0faa"+
54308 		"\b\u0120\u0001\u0120\u0001\u0120\u0001\u0120\u0003\u0120\u0faf\b\u0120"+
54309 		"\u0003\u0120\u0fb1\b\u0120\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121"+
54310 		"\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121\u0001\u0121"+
54311 		"\u0003\u0121\u0fbd\b\u0121\u0001\u0121\u0003\u0121\u0fc0\b\u0121\u0001"+
54312 		"\u0122\u0001\u0122\u0001\u0122\u0005\u0122\u0fc5\b\u0122\n\u0122\f\u0122"+
54313 		"\u0fc8\t\u0122\u0003\u0122\u0fca\b\u0122\u0001\u0123\u0001\u0123\u0003"+
54314 		"\u0123\u0fce\b\u0123\u0001\u0123\u0001\u0123\u0003\u0123\u0fd2\b\u0123"+
54315 		"\u0001\u0123\u0003\u0123\u0fd5\b\u0123\u0001\u0124\u0003\u0124\u0fd8\b"+
54316 		"\u0124\u0001\u0124\u0001\u0124\u0003\u0124\u0fdc\b\u0124\u0001\u0124\u0001"+
54317 		"\u0124\u0001\u0124\u0001\u0125\u0001\u0125\u0001\u0125\u0001\u0125\u0005"+
54318 		"\u0125\u0fe5\b\u0125\n\u0125\f\u0125\u0fe8\t\u0125\u0003\u0125\u0fea\b"+
54319 		"\u0125\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0001\u0126\u0003"+
54320 		"\u0126\u0ff1\b\u0126\u0001\u0127\u0003\u0127\u0ff4\b\u0127\u0001\u0127"+
54321 		"\u0001\u0127\u0003\u0127\u0ff8\b\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+
54322 		"\u0001\u0127\u0001\u0127\u0003\u0127\u0fff\b\u0127\u0001\u0127\u0001\u0127"+
54323 		"\u0001\u0127\u0003\u0127\u1004\b\u0127\u0001\u0127\u0001\u0127\u0001\u0127"+
54324 		"\u0001\u0127\u0001\u0127\u0001\u0127\u0001\u0127\u0005\u0127\u100d\b\u0127"+
54325 		"\n\u0127\f\u0127\u1010\t\u0127\u0001\u0127\u0001\u0127\u0003\u0127\u1014"+
54326 		"\b\u0127\u0003\u0127\u1016\b\u0127\u0001\u0128\u0001\u0128\u0001\u0128"+
54327 		"\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128"+
54328 		"\u0001\u0128\u0001\u0128\u0003\u0128\u1023\b\u0128\u0001\u0128\u0001\u0128"+
54329 		"\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128"+
54330 		"\u0001\u0128\u0003\u0128\u102e\b\u0128\u0001\u0129\u0001\u0129\u0001\u0129"+
54331 		"\u0001\u0129\u0005\u0129\u1034\b\u0129\n\u0129\f\u0129\u1037\t\u0129\u0003"+
54332 		"\u0129\u1039\b\u0129\u0001\u0129\u0001\u0129\u0003\u0129\u103d\b\u0129"+
54333 		"\u0001\u0129\u0001\u0129\u0001\u0129\u0001\u0129\u0003\u0129\u1043\b\u0129"+
54334 		"\u0001\u012a\u0001\u012a\u0001\u012b\u0001\u012b\u0001\u012b\u0001\u012b"+
54335 		"\u0005\u012b\u104b\b\u012b\n\u012b\f\u012b\u104e\t\u012b\u0001\u012c\u0001"+
54336 		"\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0005\u012c\u1055\b\u012c\n"+
54337 		"\u012c\f\u012c\u1058\t\u012c\u0001\u012c\u0001\u012c\u0003\u012c\u105c"+
54338 		"\b\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001\u012c\u0001"+
54339 		"\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0003\u012d\u1068"+
54340 		"\b\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0003\u012d\u106e"+
54341 		"\b\u012d\u0001\u012d\u0003\u012d\u1071\b\u012d\u0001\u012d\u0003\u012d"+
54342 		"\u1074\b\u012d\u0001\u012d\u0003\u012d\u1077\b\u012d\u0001\u012d\u0003"+
54343 		"\u012d\u107a\b\u012d\u0001\u012d\u0003\u012d\u107d\b\u012d\u0001\u012d"+
54344 		"\u0003\u012d\u1080\b\u012d\u0001\u012d\u0001\u012d\u0003\u012d\u1084\b"+
54345 		"\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0003\u012d\u1089\b\u012d\u0001"+
54346 		"\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0001\u012d\u0003\u012d\u1090"+
54347 		"\b\u012d\u0001\u012e\u0001\u012e\u0001\u012e\u0001\u012e\u0001\u012e\u0003"+
54348 		"\u012e\u1097\b\u012e\u0001\u012f\u0001\u012f\u0001\u012f\u0001\u012f\u0001"+
54349 		"\u012f\u0001\u012f\u0001\u0130\u0001\u0130\u0001\u0130\u0001\u0130\u0001"+
54350 		"\u0130\u0003\u0130\u10a4\b\u0130\u0001\u0131\u0001\u0131\u0001\u0131\u0001"+
54351 		"\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001"+
54352 		"\u0131\u0003\u0131\u10b0\b\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001"+
54353 		"\u0131\u0003\u0131\u10b6\b\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0001"+
54354 		"\u0131\u0001\u0131\u0001\u0131\u0001\u0131\u0003\u0131\u10bf\b\u0131\u0001"+
54355 		"\u0131\u0003\u0131\u10c2\b\u0131\u0001\u0132\u0001\u0132\u0003\u0132\u10c6"+
54356 		"\b\u0132\u0001\u0132\u0001\u0132\u0003\u0132\u10ca\b\u0132\u0001\u0132"+
54357 		"\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0005\u0132\u10d1\b\u0132"+
54358 		"\n\u0132\f\u0132\u10d4\t\u0132\u0001\u0132\u0001\u0132\u0003\u0132\u10d8"+
54359 		"\b\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001\u0132\u0001"+
54360 		"\u0132\u0001\u0132\u0003\u0132\u10e1\b\u0132\u0003\u0132\u10e3\b\u0132"+
54361 		"\u0001\u0132\u0001\u0132\u0001\u0132\u0003\u0132\u10e8\b\u0132\u0003\u0132"+
54362 		"\u10ea\b\u0132\u0001\u0133\u0001\u0133\u0001\u0133\u0005\u0133\u10ef\b"+
54363 		"\u0133\n\u0133\f\u0133\u10f2\t\u0133\u0001\u0134\u0001\u0134\u0001\u0134"+
54364 		"\u0001\u0134\u0001\u0134\u0001\u0134\u0005\u0134\u10fa\b\u0134\n\u0134"+
54365 		"\f\u0134\u10fd\t\u0134\u0001\u0134\u0001\u0134\u0001\u0134\u0001\u0134"+
54366 		"\u0001\u0134\u0001\u0134\u0003\u0134\u1105\b\u0134\u0001\u0135\u0001\u0135"+
54367 		"\u0001\u0135\u0001\u0135\u0001\u0135\u0003\u0135\u110c\b\u0135\u0003\u0135"+
54368 		"\u110e\b\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135"+
54369 		"\u0005\u0135\u1115\b\u0135\n\u0135\f\u0135\u1118\t\u0135\u0001\u0135\u0001"+
54370 		"\u0135\u0003\u0135\u111c\b\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001"+
54371 		"\u0135\u0001\u0135\u0003\u0135\u1123\b\u0135\u0001\u0135\u0001\u0135\u0001"+
54372 		"\u0135\u0001\u0135\u0001\u0135\u0003\u0135\u112a\b\u0135\u0001\u0135\u0001"+
54373 		"\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001"+
54374 		"\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001\u0135\u0001"+
54375 		"\u0135\u0005\u0135\u113a\b\u0135\n\u0135\f\u0135\u113d\t\u0135\u0001\u0135"+
54376 		"\u0001\u0135\u0003\u0135\u1141\b\u0135\u0001\u0135\u0001\u0135\u0003\u0135"+
54377 		"\u1145\b\u0135\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+
54378 		"\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+
54379 		"\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+
54380 		"\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+
54381 		"\u0001\u0136\u0001\u0136\u0003\u0136\u1160\b\u0136\u0001\u0136\u0003\u0136"+
54382 		"\u1163\b\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+
54383 		"\u0001\u0136\u0001\u0136\u0003\u0136\u116c\b\u0136\u0001\u0136\u0001\u0136"+
54384 		"\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+
54385 		"\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+
54386 		"\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136\u0001\u0136"+
54387 		"\u0001\u0136\u0005\u0136\u1183\b\u0136\n\u0136\f\u0136\u1186\t\u0136\u0003"+
54388 		"\u0136\u1188\b\u0136\u0003\u0136\u118a\b\u0136\u0001\u0137\u0001\u0137"+
54389 		"\u0001\u0137\u0003\u0137\u118f\b\u0137\u0001\u0138\u0001\u0138\u0001\u0138"+
54390 		"\u0001\u0138\u0001\u0138\u0001\u0138\u0003\u0138\u1197\b\u0138\u0001\u0139"+
54391 		"\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139"+
54392 		"\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139"+
54393 		"\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139\u0001\u0139"+
54394 		"\u0003\u0139\u11ac\b\u0139\u0003\u0139\u11ae\b\u0139\u0001\u013a\u0001"+
54395 		"\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0001\u013a\u0003"+
54396 		"\u013a\u11b7\b\u013a\u0001\u013a\u0003\u013a\u11ba\b\u013a\u0001\u013b"+
54397 		"\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b"+
54398 		"\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0005\u013b\u11c7\b\u013b"+
54399 		"\n\u013b\f\u013b\u11ca\t\u013b\u0001\u013b\u0001\u013b\u0003\u013b\u11ce"+
54400 		"\b\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0005"+
54401 		"\u013b\u11d5\b\u013b\n\u013b\f\u013b\u11d8\t\u013b\u0001\u013b\u0001\u013b"+
54402 		"\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b"+
54403 		"\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b\u0001\u013b"+
54404 		"\u0001\u013b\u0005\u013b\u11e9\b\u013b\n\u013b\f\u013b\u11ec\t\u013b\u0003"+
54405 		"\u013b\u11ee\b\u013b\u0001\u013b\u0001\u013b\u0003\u013b\u11f2\b\u013b"+
54406 		"\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c"+
54407 		"\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0003\u013c\u11fe\b\u013c"+
54408 		"\u0003\u013c\u1200\b\u013c\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d"+
54409 		"\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d\u0001\u013d"+
54410 		"\u0001\u013d\u0003\u013d\u120d\b\u013d\u0003\u013d\u120f\b\u013d\u0001"+
54411 		"\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001\u013e\u0001"+
54412 		"\u013e\u0001\u013e\u0003\u013e\u1219\b\u013e\u0001\u013f\u0001\u013f\u0001"+
54413 		"\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001"+
54414 		"\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001"+
54415 		"\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001"+
54416 		"\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001"+
54417 		"\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001"+
54418 		"\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001"+
54419 		"\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0003\u013f\u1246"+
54420 		"\b\u013f\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0003\u0140\u124c"+
54421 		"\b\u0140\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001"+
54422 		"\u0141\u0001\u0141\u0003\u0141\u1255\b\u0141\u0001\u0141\u0001\u0141\u0001"+
54423 		"\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001"+
54424 		"\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0003\u0141\u1264"+
54425 		"\b\u0141\u0001\u0142\u0001\u0142\u0003\u0142\u1268\b\u0142\u0001\u0143"+
54426 		"\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0005\u0143\u126f\b\u0143"+
54427 		"\n\u0143\f\u0143\u1272\t\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0003"+
54428 		"\u0143\u1277\b\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001"+
54429 		"\u0143\u0001\u0143\u0005\u0143\u127f\b\u0143\n\u0143\f\u0143\u1282\t\u0143"+
54430 		"\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143\u0001\u0143"+
54431 		"\u0003\u0143\u128a\b\u0143\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144"+
54432 		"\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0001\u0144\u0003\u0144"+
54433 		"\u1295\b\u0144\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145"+
54434 		"\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0003\u0145"+
54435 		"\u12a1\b\u0145\u0003\u0145\u12a3\b\u0145\u0001\u0145\u0001\u0145\u0001"+
54436 		"\u0145\u0001\u0145\u0001\u0145\u0001\u0145\u0003\u0145\u12ab\b\u0145\u0001"+
54437 		"\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0001"+
54438 		"\u0146\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0003"+
54439 		"\u0147\u12b9\b\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0001\u0147\u0005"+
54440 		"\u0147\u12bf\b\u0147\n\u0147\f\u0147\u12c2\t\u0147\u0001\u0147\u0001\u0147"+
54441 		"\u0003\u0147\u12c6\b\u0147\u0003\u0147\u12c8\b\u0147\u0001\u0148\u0001"+
54442 		"\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0003"+
54443 		"\u0148\u12d1\b\u0148\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0003"+
54444 		"\u0149\u12d7\b\u0149\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0001"+
54445 		"\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0001"+
54446 		"\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0001\u014a\u0001"+
54447 		"\u014a\u0001\u014a\u0001\u014a\u0003\u014a\u12ec\b\u014a\u0001\u014b\u0001"+
54448 		"\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0003\u014b\u12f3\b\u014b\u0001"+
54449 		"\u014b\u0001\u014b\u0001\u014b\u0001\u014b\u0005\u014b\u12f9\b\u014b\n"+
54450 		"\u014b\f\u014b\u12fc\t\u014b\u0001\u014b\u0001\u014b\u0003\u014b\u1300"+
54451 		"\b\u014b\u0003\u014b\u1302\b\u014b\u0001\u014c\u0001\u014c\u0001\u014c"+
54452 		"\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c"+
54453 		"\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c"+
54454 		"\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c"+
54455 		"\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c"+
54456 		"\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c"+
54457 		"\u0001\u014c\u0001\u014c\u0001\u014c\u0001\u014c\u0005\u014c\u1329\b\u014c"+
54458 		"\n\u014c\f\u014c\u132c\t\u014c\u0001\u014c\u0001\u014c\u0003\u014c\u1330"+
54459 		"\b\u014c\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001"+
54460 		"\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0001"+
54461 		"\u014d\u0001\u014d\u0003\u014d\u133f\b\u014d\u0001\u014e\u0001\u014e\u0001"+
54462 		"\u014e\u0001\u014e\u0001\u014e\u0001\u014e\u0003\u014e\u1347\b\u014e\u0001"+
54463 		"\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001"+
54464 		"\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001"+
54465 		"\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001"+
54466 		"\u014f\u0001\u014f\u0001\u014f\u0003\u014f\u135e\b\u014f\u0001\u0150\u0001"+
54467 		"\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0001\u0150\u0003"+
54468 		"\u0150\u1367\b\u0150\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0151\u0001"+
54469 		"\u0151\u0001\u0151\u0003\u0151\u136f\b\u0151\u0001\u0152\u0001\u0152\u0001"+
54470 		"\u0152\u0001\u0152\u0001\u0152\u0001\u0153\u0001\u0153\u0001\u0153\u0001"+
54471 		"\u0153\u0003\u0153\u137a\b\u0153\u0001\u0153\u0001\u0153\u0001\u0153\u0003"+
54472 		"\u0153\u137f\b\u0153\u0001\u0154\u0001\u0154\u0001\u0154\u0001\u0154\u0005"+
54473 		"\u0154\u1385\b\u0154\n\u0154\f\u0154\u1388\t\u0154\u0001\u0154\u0001\u0154"+
54474 		"\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0005\u0155\u1390\b\u0155"+
54475 		"\n\u0155\f\u0155\u1393\t\u0155\u0001\u0155\u0001\u0155\u0001\u0156\u0001"+
54476 		"\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0001\u0156\u0003\u0156\u139d"+
54477 		"\b\u0156\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157\u0001\u0157\u0001"+
54478 		"\u0157\u0001\u0157\u0003\u0157\u13a6\b\u0157\u0001\u0158\u0001\u0158\u0001"+
54479 		"\u0158\u0001\u0158\u0001\u0158\u0003\u0158\u13ad\b\u0158\u0001\u0159\u0001"+
54480 		"\u0159\u0003\u0159\u13b1\b\u0159\u0001\u015a\u0001\u015a\u0001\u015a\u0001"+
54481 		"\u015a\u0003\u015a\u13b7\b\u015a\u0001\u015a\u0001\u015a\u0001\u015a\u0001"+
54482 		"\u015a\u0001\u015a\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001"+
54483 		"\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001"+
54484 		"\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0003\u015b\u13cc\b\u015b\u0001"+
54485 		"\u015b\u0001\u015b\u0001\u015b\u0001\u015c\u0001\u015c\u0001\u015c\u0001"+
54486 		"\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0005\u015c\u13d8\b\u015c\n"+
54487 		"\u015c\f\u015c\u13db\t\u015c\u0003\u015c\u13dd\b\u015c\u0001\u015c\u0001"+
54488 		"\u015c\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0005"+
54489 		"\u015d\u13e6\b\u015d\n\u015d\f\u015d\u13e9\t\u015d\u0001\u015d\u0001\u015d"+
54490 		"\u0003\u015d\u13ed\b\u015d\u0001\u015e\u0003\u015e\u13f0\b\u015e\u0001"+
54491 		"\u015e\u0001\u015e\u0003\u015e\u13f4\b\u015e\u0001\u015e\u0003\u015e\u13f7"+
54492 		"\b\u015e\u0001\u015e\u0001\u015e\u0003\u015e\u13fb\b\u015e\u0001\u015e"+
54493 		"\u0003\u015e\u13fe\b\u015e\u0001\u015e\u0003\u015e\u1401\b\u015e\u0001"+
54494 		"\u015e\u0001\u015e\u0001\u015e\u0001\u015e\u0003\u015e\u1407\b\u015e\u0001"+
54495 		"\u015f\u0003\u015f\u140a\b\u015f\u0001\u015f\u0003\u015f\u140d\b\u015f"+
54496 		"\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u0160\u0003\u0160\u1413\b\u0160"+
54497 		"\u0001\u0160\u0003\u0160\u1416\b\u0160\u0001\u0160\u0001\u0160\u0001\u0160"+
54498 		"\u0001\u0160\u0005\u0160\u141c\b\u0160\n\u0160\f\u0160\u141f\t\u0160\u0001"+
54499 		"\u0161\u0003\u0161\u1422\b\u0161\u0001\u0161\u0003\u0161\u1425\b\u0161"+
54500 		"\u0001\u0161\u0001\u0161\u0001\u0162\u0003\u0162\u142a\b\u0162\u0001\u0162"+
54501 		"\u0001\u0162\u0001\u0163\u0003\u0163\u142f\b\u0163\u0001\u0163\u0001\u0163"+
54502 		"\u0004\u0163\u1433\b\u0163\u000b\u0163\f\u0163\u1434\u0001\u0163\u0001"+
54503 		"\u0163\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0164\u0005"+
54504 		"\u0164\u143e\b\u0164\n\u0164\f\u0164\u1441\t\u0164\u0003\u0164\u1443\b"+
54505 		"\u0164\u0001\u0165\u0003\u0165\u1446\b\u0165\u0001\u0165\u0001\u0165\u0003"+
54506 		"\u0165\u144a\b\u0165\u0001\u0165\u0001\u0165\u0003\u0165\u144e\b\u0165"+
54507 		"\u0001\u0165\u0001\u0165\u0003\u0165\u1452\b\u0165\u0001\u0165\u0003\u0165"+
54508 		"\u1455\b\u0165\u0001\u0165\u0003\u0165\u1458\b\u0165\u0001\u0166\u0001"+
54509 		"\u0166\u0003\u0166\u145c\b\u0166\u0001\u0166\u0001\u0166\u0003\u0166\u1460"+
54510 		"\b\u0166\u0001\u0166\u0001\u0166\u0001\u0167\u0001\u0167\u0001\u0167\u0001"+
54511 		"\u0167\u0005\u0167\u1468\b\u0167\n\u0167\f\u0167\u146b\t\u0167\u0001\u0167"+
54512 		"\u0003\u0167\u146e\b\u0167\u0001\u0168\u0001\u0168\u0001\u0168\u0001\u0168"+
54513 		"\u0005\u0168\u1474\b\u0168\n\u0168\f\u0168\u1477\t\u0168\u0001\u0168\u0001"+
54514 		"\u0168\u0001\u0168\u0001\u0168\u0001\u0168\u0003\u0168\u147e\b\u0168\u0001"+
54515 		"\u0169\u0001\u0169\u0003\u0169\u1482\b\u0169\u0001\u016a\u0003\u016a\u1485"+
54516 		"\b\u016a\u0001\u016a\u0001\u016a\u0003\u016a\u1489\b\u016a\u0001\u016a"+
54517 		"\u0001\u016a\u0003\u016a\u148d\b\u016a\u0001\u016a\u0003\u016a\u1490\b"+
54518 		"\u016a\u0001\u016a\u0003\u016a\u1493\b\u016a\u0001\u016a\u0003\u016a\u1496"+
54519 		"\b\u016a\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016c\u0003\u016c\u149c"+
54520 		"\b\u016c\u0001\u016c\u0003\u016c\u149f\b\u016c\u0001\u016c\u0001\u016c"+
54521 		"\u0003\u016c\u14a3\b\u016c\u0001\u016c\u0003\u016c\u14a6\b\u016c\u0001"+
54522 		"\u016c\u0003\u016c\u14a9\b\u016c\u0001\u016d\u0001\u016d\u0001\u016d\u0001"+
54523 		"\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0003"+
54524 		"\u016d\u14b4\b\u016d\u0001\u016e\u0001\u016e\u0003\u016e\u14b8\b\u016e"+
54525 		"\u0001\u016e\u0001\u016e\u0001\u016e\u0003\u016e\u14bd\b\u016e\u0005\u016e"+
54526 		"\u14bf\b\u016e\n\u016e\f\u016e\u14c2\t\u016e\u0001\u016f\u0001\u016f\u0001"+
54527 		"\u0170\u0001\u0170\u0001\u0170\u0003\u0170\u14c9\b\u0170\u0001\u0170\u0001"+
54528 		"\u0170\u0003\u0170\u14cd\b\u0170\u0001\u0170\u0005\u0170\u14d0\b\u0170"+
54529 		"\n\u0170\f\u0170\u14d3\t\u0170\u0001\u0171\u0003\u0171\u14d6\b\u0171\u0001"+
54530 		"\u0171\u0001\u0171\u0003\u0171\u14da\b\u0171\u0001\u0171\u0001\u0171\u0003"+
54531 		"\u0171\u14de\b\u0171\u0001\u0171\u0001\u0171\u0003\u0171\u14e2\b\u0171"+
54532 		"\u0001\u0171\u0003\u0171\u14e5\b\u0171\u0003\u0171\u14e7\b\u0171\u0001"+
54533 		"\u0171\u0003\u0171\u14ea\b\u0171\u0001\u0171\u0003\u0171\u14ed\b\u0171"+
54534 		"\u0001\u0171\u0003\u0171\u14f0\b\u0171\u0001\u0171\u0003\u0171\u14f3\b"+
54535 		"\u0171\u0001\u0171\u0003\u0171\u14f6\b\u0171\u0001\u0172\u0001\u0172\u0001"+
54536 		"\u0173\u0001\u0173\u0001\u0173\u0003\u0173\u14fd\b\u0173\u0003\u0173\u14ff"+
54537 		"\b\u0173\u0001\u0173\u0001\u0173\u0005\u0173\u1503\b\u0173\n\u0173\f\u0173"+
54538 		"\u1506\t\u0173\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174\u0001\u0174"+
54539 		"\u0003\u0174\u150d\b\u0174\u0001\u0174\u0001\u0174\u0003\u0174\u1511\b"+
54540 		"\u0174\u0001\u0174\u0001\u0174\u0003\u0174\u1515\b\u0174\u0001\u0174\u0003"+
54541 		"\u0174\u1518\b\u0174\u0001\u0174\u0003\u0174\u151b\b\u0174\u0003\u0174"+
54542 		"\u151d\b\u0174\u0001\u0175\u0001\u0175\u0003\u0175\u1521\b\u0175\u0001"+
54543 		"\u0175\u0001\u0175\u0003\u0175\u1525\b\u0175\u0001\u0175\u0003\u0175\u1528"+
54544 		"\b\u0175\u0001\u0175\u0001\u0175\u0003\u0175\u152c\b\u0175\u0001\u0175"+
54545 		"\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175\u0001\u0175"+
54546 		"\u0001\u0175\u0003\u0175\u1536\b\u0175\u0001\u0175\u0003\u0175\u1539\b"+
54547 		"\u0175\u0003\u0175\u153b\b\u0175\u0001\u0176\u0001\u0176\u0003\u0176\u153f"+
54548 		"\b\u0176\u0001\u0177\u0001\u0177\u0001\u0178\u0001\u0178\u0001\u0178\u0001"+
54549 		"\u0179\u0001\u0179\u0001\u0179\u0001\u017a\u0001\u017a\u0001\u017a\u0001"+
54550 		"\u017b\u0001\u017b\u0001\u017b\u0005\u017b\u154f\b\u017b\n\u017b\f\u017b"+
54551 		"\u1552\t\u017b\u0001\u017c\u0001\u017c\u0005\u017c\u1556\b\u017c\n\u017c"+
54552 		"\f\u017c\u1559\t\u017c\u0001\u017d\u0001\u017d\u0003\u017d\u155d\b\u017d"+
54553 		"\u0001\u017d\u0003\u017d\u1560\b\u017d\u0001\u017d\u0001\u017d\u0003\u017d"+
54554 		"\u1564\b\u017d\u0001\u017d\u0001\u017d\u0003\u017d\u1568\b\u017d\u0001"+
54555 		"\u017d\u0001\u017d\u0003\u017d\u156c\b\u017d\u0001\u017d\u0003\u017d\u156f"+
54556 		"\b\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017d\u0003\u017d\u1575"+
54557 		"\b\u017d\u0001\u017e\u0003\u017e\u1578\b\u017e\u0001\u017e\u0003\u017e"+
54558 		"\u157b\b\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0003\u017e"+
54559 		"\u1581\b\u017e\u0001\u017e\u0003\u017e\u1584\b\u017e\u0001\u017e\u0001"+
54560 		"\u017e\u0003\u017e\u1588\b\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0003"+
54561 		"\u017e\u158d\b\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0001\u017e\u0003"+
54562 		"\u017e\u1593\b\u017e\u0003\u017e\u1595\b\u017e\u0001\u017f\u0001\u017f"+
54563 		"\u0001\u017f\u0001\u017f\u0003\u017f\u159b\b\u017f\u0001\u0180\u0001\u0180"+
54564 		"\u0001\u0180\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181\u0001\u0181"+
54565 		"\u0005\u0181\u15a5\b\u0181\n\u0181\f\u0181\u15a8\t\u0181\u0001\u0182\u0001"+
54566 		"\u0182\u0001\u0182\u0001\u0183\u0001\u0183\u0001\u0183\u0001\u0183\u0001"+
54567 		"\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001\u0184\u0001"+
54568 		"\u0184\u0001\u0184\u0001\u0184\u0005\u0184\u15ba\b\u0184\n\u0184\f\u0184"+
54569 		"\u15bd\t\u0184\u0001\u0184\u0001\u0184\u0001\u0185\u0001\u0185\u0001\u0185"+
54570 		"\u0001\u0186\u0001\u0186\u0001\u0186\u0005\u0186\u15c7\b\u0186\n\u0186"+
54571 		"\f\u0186\u15ca\t\u0186\u0001\u0187\u0001\u0187\u0003\u0187\u15ce\b\u0187"+
54572 		"\u0001\u0187\u0001\u0187\u0001\u0187\u0001\u0188\u0001\u0188\u0001\u0188"+
54573 		"\u0003\u0188\u15d6\b\u0188\u0001\u0188\u0001\u0188\u0001\u0188\u0003\u0188"+
54574 		"\u15db\b\u0188\u0003\u0188\u15dd\b\u0188\u0001\u0189\u0001\u0189\u0003"+
54575 		"\u0189\u15e1\b\u0189\u0001\u0189\u0001\u0189\u0001\u0189\u0003\u0189\u15e6"+
54576 		"\b\u0189\u0005\u0189\u15e8\b\u0189\n\u0189\f\u0189\u15eb\t\u0189\u0001"+
54577 		"\u018a\u0001\u018a\u0003\u018a\u15ef\b\u018a\u0001\u018a\u0003\u018a\u15f2"+
54578 		"\b\u018a\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018b\u0003\u018b\u15f8"+
54579 		"\b\u018b\u0001\u018b\u0003\u018b\u15fb\b\u018b\u0001\u018c\u0001\u018c"+
54580 		"\u0001\u018c\u0001\u018d\u0001\u018d\u0001\u018e\u0001\u018e\u0001\u018e"+
54581 		"\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e"+
54582 		"\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e"+
54583 		"\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e"+
54584 		"\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e"+
54585 		"\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e"+
54586 		"\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e"+
54587 		"\u0001\u018e\u0005\u018e\u162a\b\u018e\n\u018e\f\u018e\u162d\t\u018e\u0001"+
54588 		"\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001"+
54589 		"\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001"+
54590 		"\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0001\u018e\u0005\u018e\u1640"+
54591 		"\b\u018e\n\u018e\f\u018e\u1643\t\u018e\u0001\u018e\u0001\u018e\u0001\u018e"+
54592 		"\u0001\u018e\u0003\u018e\u1649\b\u018e\u0001\u018f\u0001\u018f\u0001\u018f"+
54593 		"\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f"+
54594 		"\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f"+
54595 		"\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f"+
54596 		"\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f"+
54597 		"\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f"+
54598 		"\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f"+
54599 		"\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f"+
54600 		"\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f"+
54601 		"\u0001\u018f\u0001\u018f\u0001\u018f\u0003\u018f\u1681\b\u018f\u0001\u0190"+
54602 		"\u0001\u0190\u0001\u0190\u0001\u0190\u0003\u0190\u1687\b\u0190\u0001\u0191"+
54603 		"\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0003\u0191"+
54604 		"\u168f\b\u0191\u0001\u0191\u0003\u0191\u1692\b\u0191\u0001\u0191\u0001"+
54605 		"\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001"+
54606 		"\u0191\u0003\u0191\u169c\b\u0191\u0003\u0191\u169e\b\u0191\u0003\u0191"+
54607 		"\u16a0\b\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0003\u0191\u16a5\b"+
54608 		"\u0191\u0003\u0191\u16a7\b\u0191\u0003\u0191\u16a9\b\u0191\u0001\u0191"+
54609 		"\u0001\u0191\u0001\u0191\u0001\u0191\u0003\u0191\u16af\b\u0191\u0003\u0191"+
54610 		"\u16b1\b\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
54611 		"\u0003\u0191\u16b8\b\u0191\u0001\u0191\u0001\u0191\u0001\u0191\u0001\u0191"+
54612 		"\u0003\u0191\u16be\b\u0191\u0003\u0191\u16c0\b\u0191\u0003\u0191\u16c2"+
54613 		"\b\u0191\u0003\u0191\u16c4\b\u0191\u0001\u0192\u0001\u0192\u0001\u0192"+
54614 		"\u0003\u0192\u16c9\b\u0192\u0001\u0192\u0001\u0192\u0003\u0192\u16cd\b"+
54615 		"\u0192\u0001\u0192\u0001\u0192\u0001\u0192\u0001\u0192\u0001\u0192\u0001"+
54616 		"\u0192\u0003\u0192\u16d5\b\u0192\u0003\u0192\u16d7\b\u0192\u0001\u0193"+
54617 		"\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193\u0001\u0193"+
54618 		"\u0001\u0193\u0003\u0193\u16e1\b\u0193\u0003\u0193\u16e3\b\u0193\u0001"+
54619 		"\u0193\u0001\u0193\u0003\u0193\u16e7\b\u0193\u0001\u0193\u0001\u0193\u0003"+
54620 		"\u0193\u16eb\b\u0193\u0003\u0193\u16ed\b\u0193\u0001\u0194\u0001\u0194"+
54621 		"\u0001\u0194\u0003\u0194\u16f2\b\u0194\u0003\u0194\u16f4\b\u0194\u0001"+
54622 		"\u0194\u0003\u0194\u16f7\b\u0194\u0001\u0195\u0001\u0195\u0001\u0195\u0001"+
54623 		"\u0195\u0001\u0195\u0005\u0195\u16fe\b\u0195\n\u0195\f\u0195\u1701\t\u0195"+
54624 		"\u0001\u0195\u0001\u0195\u0001\u0196\u0001\u0196\u0001\u0196\u0001\u0196"+
54625 		"\u0001\u0196\u0003\u0196\u170a\b\u0196\u0001\u0197\u0001\u0197\u0001\u0198"+
54626 		"\u0001\u0198\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u019a\u0001\u019a"+
54627 		"\u0001\u019a\u0003\u019a\u1716\b\u019a\u0001\u019b\u0001\u019b\u0001\u019b"+
54628 		"\u0003\u019b\u171b\b\u019b\u0001\u019b\u0001\u019b\u0001\u019b\u0001\u019b"+
54629 		"\u0005\u019b\u1721\b\u019b\n\u019b\f\u019b\u1724\t\u019b\u0001\u019b\u0001"+
54630 		"\u019b\u0001\u019b\u0003\u019b\u1729\b\u019b\u0001\u019b\u0001\u019b\u0003"+
54631 		"\u019b\u172d\b\u019b\u0001\u019c\u0001\u019c\u0001\u019c\u0003\u019c\u1732"+
54632 		"\b\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0001\u019c\u0005\u019c\u1738"+
54633 		"\b\u019c\n\u019c\f\u019c\u173b\t\u019c\u0001\u019c\u0001\u019c\u0001\u019c"+
54634 		"\u0003\u019c\u1740\b\u019c\u0001\u019d\u0001\u019d\u0003\u019d\u1744\b"+
54635 		"\u019d\u0001\u019d\u0001\u019d\u0001\u019d\u0003\u019d\u1749\b\u019d\u0005"+
54636 		"\u019d\u174b\b\u019d\n\u019d\f\u019d\u174e\t\u019d\u0001\u019e\u0001\u019e"+
54637 		"\u0001\u019e\u0001\u019e\u0003\u019e\u1754\b\u019e\u0001\u019e\u0001\u019e"+
54638 		"\u0001\u019f\u0001\u019f\u0001\u019f\u0005\u019f\u175b\b\u019f\n\u019f"+
54639 		"\f\u019f\u175e\t\u019f\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0"+
54640 		"\u0003\u01a0\u1764\b\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a1\u0001\u01a1"+
54641 		"\u0001\u01a1\u0003\u01a1\u176b\b\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a2"+
54642 		"\u0001\u01a2\u0001\u01a3\u0001\u01a3\u0003\u01a3\u1773\b\u01a3\u0001\u01a3"+
54643 		"\u0001\u01a3\u0003\u01a3\u1777\b\u01a3\u0001\u01a4\u0001\u01a4\u0001\u01a4"+
54644 		"\u0003\u01a4\u177c\b\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4\u0001\u01a4"+
54645 		"\u0005\u01a4\u1782\b\u01a4\n\u01a4\f\u01a4\u1785\t\u01a4\u0001\u01a4\u0003"+
54646 		"\u01a4\u1788\b\u01a4\u0001\u01a4\u0001\u01a4\u0003\u01a4\u178c\b\u01a4"+
54647 		"\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0003\u01a5\u1791\b\u01a5\u0001\u01a5"+
54648 		"\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0005\u01a5\u1797\b\u01a5\n\u01a5"+
54649 		"\f\u01a5\u179a\t\u01a5\u0001\u01a5\u0003\u01a5\u179d\b\u01a5\u0001\u01a6"+
54650 		"\u0001\u01a6\u0001\u01a6\u0003\u01a6\u17a2\b\u01a6\u0001\u01a7\u0001\u01a7"+
54651 		"\u0001\u01a7\u0003\u01a7\u17a7\b\u01a7\u0001\u01a7\u0001\u01a7\u0001\u01a7"+
54652 		"\u0001\u01a7\u0005\u01a7\u17ad\b\u01a7\n\u01a7\f\u01a7\u17b0\t\u01a7\u0001"+
54653 		"\u01a7\u0003\u01a7\u17b3\b\u01a7\u0001\u01a7\u0001\u01a7\u0003\u01a7\u17b7"+
54654 		"\b\u01a7\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0003\u01a8\u17bc\b\u01a8"+
54655 		"\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0005\u01a8\u17c2\b\u01a8"+
54656 		"\n\u01a8\f\u01a8\u17c5\t\u01a8\u0001\u01a8\u0003\u01a8\u17c8\b\u01a8\u0001"+
54657 		"\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0001\u01aa\u0001\u01aa\u0003"+
54658 		"\u01aa\u17d0\b\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001"+
54659 		"\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001"+
54660 		"\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0001"+
54661 		"\u01aa\u0001\u01aa\u0001\u01aa\u0003\u01aa\u17e5\b\u01aa\u0001\u01ab\u0001"+
54662 		"\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001"+
54663 		"\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001"+
54664 		"\u01ab\u0001\u01ab\u0001\u01ab\u0003\u01ab\u17f7\b\u01ab\u0001\u01ac\u0001"+
54665 		"\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+
54666 		"\u01ac\u0001\u01ac\u0003\u01ac\u1802\b\u01ac\u0001\u01ac\u0001\u01ac\u0001"+
54667 		"\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+
54668 		"\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+
54669 		"\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0003\u01ac\u1817"+
54670 		"\b\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+
54671 		"\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+
54672 		"\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+
54673 		"\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+
54674 		"\u01ac\u0003\u01ac\u1831\b\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+
54675 		"\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+
54676 		"\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001"+
54677 		"\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0003\u01ac\u1846\b\u01ac\u0001"+
54678 		"\u01ad\u0001\u01ad\u0003\u01ad\u184a\b\u01ad\u0001\u01ad\u0001\u01ad\u0001"+
54679 		"\u01ad\u0003\u01ad\u184f\b\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0001"+
54680 		"\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ad\u0003\u01ad\u1858\b\u01ad\u0003"+
54681 		"\u01ad\u185a\b\u01ad\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54682 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54683 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0003"+
54684 		"\u01ae\u186c\b\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54685 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54686 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54687 		"\u01ae\u0001\u01ae\u0003\u01ae\u1880\b\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54688 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54689 		"\u01ae\u0003\u01ae\u188b\b\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54690 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54691 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54692 		"\u01ae\u0001\u01ae\u0003\u01ae\u189e\b\u01ae\u0001\u01ae\u0001\u01ae\u0003"+
54693 		"\u01ae\u18a2\b\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54694 		"\u01ae\u0001\u01ae\u0003\u01ae\u18aa\b\u01ae\u0001\u01ae\u0001\u01ae\u0003"+
54695 		"\u01ae\u18ae\b\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54696 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0003\u01ae\u18b9"+
54697 		"\b\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54698 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54699 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54700 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54701 		"\u01ae\u0001\u01ae\u0001\u01ae\u0003\u01ae\u18d5\b\u01ae\u0001\u01ae\u0001"+
54702 		"\u01ae\u0001\u01ae\u0001\u01ae\u0003\u01ae\u18db\b\u01ae\u0001\u01ae\u0001"+
54703 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54704 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54705 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54706 		"\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54707 		"\u01ae\u0001\u01ae\u0003\u01ae\u18f8\b\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
54708 		"\u01ae\u0001\u01ae\u0001\u01ae\u0003\u01ae\u18ff\b\u01ae\u0001\u01ae\u0001"+
54709 		"\u01ae\u0003\u01ae\u1903\b\u01ae\u0001\u01af\u0001\u01af\u0001\u01af\u0003"+
54710 		"\u01af\u1908\b\u01af\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001"+
54711 		"\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0003\u01b0\u1912\b\u01b0\u0001"+
54712 		"\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001"+
54713 		"\u01b1\u0001\u01b1\u0001\u01b1\u0003\u01b1\u191d\b\u01b1\u0001\u01b2\u0001"+
54714 		"\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001"+
54715 		"\u01b2\u0003\u01b2\u1927\b\u01b2\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0001"+
54716 		"\u01b3\u0001\u01b3\u0001\u01b3\u0001\u01b3\u0003\u01b3\u1930\b\u01b3\u0001"+
54717 		"\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001"+
54718 		"\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001"+
54719 		"\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001"+
54720 		"\u01b4\u0001\u01b4\u0003\u01b4\u1946\b\u01b4\u0001\u01b5\u0001\u01b5\u0001"+
54721 		"\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001\u01b5\u0001"+
54722 		"\u01b5\u0001\u01b5\u0001\u01b5\u0003\u01b5\u1953\b\u01b5\u0001\u01b6\u0001"+
54723 		"\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0003\u01b6\u195a\b\u01b6\u0001"+
54724 		"\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0001"+
54725 		"\u01b7\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0003\u01b7\u1966\b\u01b7\u0001"+
54726 		"\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001"+
54727 		"\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0001\u01b8\u0003\u01b8\u1973"+
54728 		"\b\u01b8\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001"+
54729 		"\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0003"+
54730 		"\u01b9\u1980\b\u01b9\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001"+
54731 		"\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0003\u01ba\u198b"+
54732 		"\b\u01ba\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001"+
54733 		"\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0003\u01bb\u1997"+
54734 		"\b\u01bb\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0003\u01bc\u199d"+
54735 		"\b\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0003\u01bc\u19a3"+
54736 		"\b\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bc\u0003\u01bc\u19a9"+
54737 		"\b\u01bc\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001"+
54738 		"\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0003\u01bd\u19b5"+
54739 		"\b\u01bd\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001"+
54740 		"\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01be\u0003"+
54741 		"\u01be\u19c2\b\u01be\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001"+
54742 		"\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001\u01bf\u0001"+
54743 		"\u01bf\u0003\u01bf\u19cf\b\u01bf\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001"+
54744 		"\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001"+
54745 		"\u01c0\u0003\u01c0\u19db\b\u01c0\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001"+
54746 		"\u01c1\u0003\u01c1\u19e1\b\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001"+
54747 		"\u01c1\u0003\u01c1\u19e7\b\u01c1\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0001"+
54748 		"\u01c1\u0001\u01c1\u0003\u01c1\u19ee\b\u01c1\u0001\u01c2\u0001\u01c2\u0003"+
54749 		"\u01c2\u19f2\b\u01c2\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001"+
54750 		"\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001"+
54751 		"\u01c3\u0003\u01c3\u19ff\b\u01c3\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001"+
54752 		"\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001"+
54753 		"\u01c4\u0001\u01c4\u0003\u01c4\u1a0c\b\u01c4\u0001\u01c5\u0001\u01c5\u0001"+
54754 		"\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0003\u01c5\u1a15"+
54755 		"\b\u01c5\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001\u01c6\u0001"+
54756 		"\u01c6\u0001\u01c6\u0001\u01c6\u0003\u01c6\u1a1f\b\u01c6\u0001\u01c7\u0001"+
54757 		"\u01c7\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c9\u0001"+
54758 		"\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001"+
54759 		"\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001"+
54760 		"\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001"+
54761 		"\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001"+
54762 		"\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001"+
54763 		"\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001"+
54764 		"\u01c9\u0001\u01c9\u0001\u01c9\u0003\u01c9\u1a4f\b\u01c9\u0001\u01ca\u0001"+
54765 		"\u01ca\u0001\u01cb\u0001\u01cb\u0001\u01cc\u0001\u01cc\u0001\u01cc\u0001"+
54766 		"\u01cc\u0003\u01cc\u1a59\b\u01cc\u0003\u01cc\u1a5b\b\u01cc\u0001\u01cd"+
54767 		"\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0001\u01cd"+
54768 		"\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0003\u01cd\u1a67\b\u01cd\u0001\u01ce"+
54769 		"\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0003\u01ce\u1a6d\b\u01ce\u0001\u01ce"+
54770 		"\u0001\u01ce\u0001\u01ce\u0001\u01ce\u0005\u01ce\u1a73\b\u01ce\n\u01ce"+
54771 		"\f\u01ce\u1a76\t\u01ce\u0003\u01ce\u1a78\b\u01ce\u0001\u01cf\u0001\u01cf"+
54772 		"\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0005\u01cf\u1a7f\b\u01cf\n\u01cf"+
54773 		"\f\u01cf\u1a82\t\u01cf\u0003\u01cf\u1a84\b\u01cf\u0001\u01cf\u0001\u01cf"+
54774 		"\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf"+
54775 		"\u0001\u01cf\u0005\u01cf\u1a8f\b\u01cf\n\u01cf\f\u01cf\u1a92\t\u01cf\u0003"+
54776 		"\u01cf\u1a94\b\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001"+
54777 		"\u01cf\u0003\u01cf\u1a9b\b\u01cf\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001"+
54778 		"\u01d0\u0003\u01d0\u1aa1\b\u01d0\u0001\u01d0\u0001\u01d0\u0001\u01d0\u0001"+
54779 		"\u01d0\u0001\u01d0\u0003\u01d0\u1aa8\b\u01d0\u0001\u01d0\u0001\u01d0\u0001"+
54780 		"\u01d0\u0001\u01d0\u0005\u01d0\u1aae\b\u01d0\n\u01d0\f\u01d0\u1ab1\t\u01d0"+
54781 		"\u0003\u01d0\u1ab3\b\u01d0\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1"+
54782 		"\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0005\u01d1\u1abc\b\u01d1\n\u01d1"+
54783 		"\f\u01d1\u1abf\t\u01d1\u0003\u01d1\u1ac1\b\u01d1\u0001\u01d1\u0001\u01d1"+
54784 		"\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0003\u01d1"+
54785 		"\u1aca\b\u01d1\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2"+
54786 		"\u0001\u01d2\u0001\u01d2\u0003\u01d2\u1ad3\b\u01d2\u0001\u01d2\u0001\u01d2"+
54787 		"\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0003\u01d2\u1adb\b\u01d2"+
54788 		"\u0003\u01d2\u1add\b\u01d2\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3"+
54789 		"\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0003\u01d3\u1ae6\b\u01d3\u0001\u01d3"+
54790 		"\u0001\u01d3\u0001\u01d3\u0003\u01d3\u1aeb\b\u01d3\u0003\u01d3\u1aed\b"+
54791 		"\u01d3\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0003\u01d4\u1af3"+
54792 		"\b\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001"+
54793 		"\u01d4\u0001\u01d4\u0005\u01d4\u1afc\b\u01d4\n\u01d4\f\u01d4\u1aff\t\u01d4"+
54794 		"\u0003\u01d4\u1b01\b\u01d4\u0003\u01d4\u1b03\b\u01d4\u0001\u01d5\u0001"+
54795 		"\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0003\u01d5\u1b0b"+
54796 		"\b\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0001\u01d5\u0003\u01d5\u1b11"+
54797 		"\b\u01d5\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001\u01d6\u0001"+
54798 		"\u01d6\u0001\u01d6\u0001\u01d6\u0003\u01d6\u1b1b\b\u01d6\u0001\u01d7\u0001"+
54799 		"\u01d7\u0001\u01d8\u0001\u01d8\u0001\u01d9\u0001\u01d9\u0001\u01da\u0001"+
54800 		"\u01da\u0001\u01da\u0003\u01da\u1b26\b\u01da\u0001\u01db\u0001\u01db\u0001"+
54801 		"\u01db\u0003\u01db\u1b2b\b\u01db\u0001\u01db\u0001\u01db\u0001\u01dc\u0001"+
54802 		"\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0005"+
54803 		"\u01dc\u1b36\b\u01dc\n\u01dc\f\u01dc\u1b39\t\u01dc\u0001\u01dc\u0001\u01dc"+
54804 		"\u0001\u01dc\u0003\u01dc\u1b3e\b\u01dc\u0001\u01dd\u0001\u01dd\u0001\u01dd"+
54805 		"\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0003\u01dd\u1b47\b\u01dd"+
54806 		"\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0001\u01dd"+
54807 		"\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0003\u01dd\u1b52\b\u01dd\u0001\u01dd"+
54808 		"\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0003\u01dd\u1b58\b\u01dd\u0001\u01dd"+
54809 		"\u0001\u01dd\u0001\u01dd\u0003\u01dd\u1b5d\b\u01dd\u0003\u01dd\u1b5f\b"+
54810 		"\u01dd\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0003"+
54811 		"\u01de\u1b66\b\u01de\u0001\u01df\u0001\u01df\u0001\u01df\u0003\u01df\u1b6b"+
54812 		"\b\u01df\u0001\u01df\u0001\u01df\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001"+
54813 		"\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001"+
54814 		"\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0003\u01e0\u1b7c\b\u01e0\u0001"+
54815 		"\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0001"+
54816 		"\u01e1\u0001\u01e1\u0003\u01e1\u1b86\b\u01e1\u0001\u01e2\u0001\u01e2\u0001"+
54817 		"\u01e2\u0001\u01e2\u0003\u01e2\u1b8c\b\u01e2\u0001\u01e3\u0001\u01e3\u0001"+
54818 		"\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0003\u01e3\u1b94\b\u01e3\u0001"+
54819 		"\u01e3\u0003\u01e3\u1b97\b\u01e3\u0001\u01e3\u0001\u01e3\u0001\u01e3\u0001"+
54820 		"\u01e3\u0005\u01e3\u1b9d\b\u01e3\n\u01e3\f\u01e3\u1ba0\t\u01e3\u0003\u01e3"+
54821 		"\u1ba2\b\u01e3\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4"+
54822 		"\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4"+
54823 		"\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4"+
54824 		"\u0001\u01e4\u0003\u01e4\u1bb6\b\u01e4\u0001\u01e5\u0001\u01e5\u0001\u01e6"+
54825 		"\u0001\u01e6\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7"+
54826 		"\u0005\u01e7\u1bc1\b\u01e7\n\u01e7\f\u01e7\u1bc4\t\u01e7\u0003\u01e7\u1bc6"+
54827 		"\b\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0001\u01e7\u0003"+
54828 		"\u01e7\u1bcd\b\u01e7\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001"+
54829 		"\u01e8\u0001\u01e8\u0003\u01e8\u1bd5\b\u01e8\u0001\u01e9\u0001\u01e9\u0001"+
54830 		"\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0005\u01e9\u1bde"+
54831 		"\b\u01e9\n\u01e9\f\u01e9\u1be1\t\u01e9\u0003\u01e9\u1be3\b\u01e9\u0001"+
54832 		"\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0001"+
54833 		"\u01ea\u0003\u01ea\u1bec\b\u01ea\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0003"+
54834 		"\u01eb\u1bf1\b\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0001\u01eb\u0005"+
54835 		"\u01eb\u1bf7\b\u01eb\n\u01eb\f\u01eb\u1bfa\t\u01eb\u0001\u01ec\u0001\u01ec"+
54836 		"\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec"+
54837 		"\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0003\u01ec\u1c08\b\u01ec"+
54838 		"\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ee\u0001\u01ee\u0001\u01ee"+
54839 		"\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0001\u01ee\u0003\u01ee\u1c14\b\u01ee"+
54840 		"\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0003\u01ef\u1c1a\b\u01ef"+
54841 		"\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0003\u01f0\u1c20\b\u01f0"+
54842 		"\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0005\u01f0\u1c26\b\u01f0"+
54843 		"\n\u01f0\f\u01f0\u1c29\t\u01f0\u0003\u01f0\u1c2b\b\u01f0\u0001\u01f1\u0001"+
54844 		"\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0001\u01f1\u0003\u01f1\u1c33"+
54845 		"\b\u01f1\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f2\u0001\u01f3\u0001"+
54846 		"\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001\u01f3\u0001"+
54847 		"\u01f3\u0005\u01f3\u1c41\b\u01f3\n\u01f3\f\u01f3\u1c44\t\u01f3\u0001\u01f3"+
54848 		"\u0003\u01f3\u1c47\b\u01f3\u0001\u01f4\u0001\u01f4\u0001\u01f5\u0001\u01f5"+
54849 		"\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0003\u01f5\u1c51\b\u01f5"+
54850 		"\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0003\u01f5"+
54851 		"\u1c58\b\u01f5\u0003\u01f5\u1c5a\b\u01f5\u0001\u01f5\u0001\u01f5\u0001"+
54852 		"\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001"+
54853 		"\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001"+
54854 		"\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0001\u01f5\u0003"+
54855 		"\u01f5\u1c70\b\u01f5\u0001\u01f6\u0001\u01f6\u0001\u01f7\u0001\u01f7\u0001"+
54856 		"\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0003\u01f7\u1c7a\b\u01f7\u0001"+
54857 		"\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0001\u01f8\u0003\u01f8\u1c81"+
54858 		"\b\u01f8\u0001\u01f8\u0000\u0004blrt\u01f9\u0000\u0002\u0004\u0006\b\n"+
54859 		"\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.0246"+
54860 		"8:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a"+
54861 		"\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2"+
54862 		"\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba"+
54863 		"\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2"+
54864 		"\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea"+
54865 		"\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102"+
54866 		"\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a"+
54867 		"\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132"+
54868 		"\u0134\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u014a"+
54869 		"\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162"+
54870 		"\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u017a"+
54871 		"\u017c\u017e\u0180\u0182\u0184\u0186\u0188\u018a\u018c\u018e\u0190\u0192"+
54872 		"\u0194\u0196\u0198\u019a\u019c\u019e\u01a0\u01a2\u01a4\u01a6\u01a8\u01aa"+
54873 		"\u01ac\u01ae\u01b0\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2"+
54874 		"\u01c4\u01c6\u01c8\u01ca\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da"+
54875 		"\u01dc\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee\u01f0\u01f2"+
54876 		"\u01f4\u01f6\u01f8\u01fa\u01fc\u01fe\u0200\u0202\u0204\u0206\u0208\u020a"+
54877 		"\u020c\u020e\u0210\u0212\u0214\u0216\u0218\u021a\u021c\u021e\u0220\u0222"+
54878 		"\u0224\u0226\u0228\u022a\u022c\u022e\u0230\u0232\u0234\u0236\u0238\u023a"+
54879 		"\u023c\u023e\u0240\u0242\u0244\u0246\u0248\u024a\u024c\u024e\u0250\u0252"+
54880 		"\u0254\u0256\u0258\u025a\u025c\u025e\u0260\u0262\u0264\u0266\u0268\u026a"+
54881 		"\u026c\u026e\u0270\u0272\u0274\u0276\u0278\u027a\u027c\u027e\u0280\u0282"+
54882 		"\u0284\u0286\u0288\u028a\u028c\u028e\u0290\u0292\u0294\u0296\u0298\u029a"+
54883 		"\u029c\u029e\u02a0\u02a2\u02a4\u02a6\u02a8\u02aa\u02ac\u02ae\u02b0\u02b2"+
54884 		"\u02b4\u02b6\u02b8\u02ba\u02bc\u02be\u02c0\u02c2\u02c4\u02c6\u02c8\u02ca"+
54885 		"\u02cc\u02ce\u02d0\u02d2\u02d4\u02d6\u02d8\u02da\u02dc\u02de\u02e0\u02e2"+
54886 		"\u02e4\u02e6\u02e8\u02ea\u02ec\u02ee\u02f0\u02f2\u02f4\u02f6\u02f8\u02fa"+
54887 		"\u02fc\u02fe\u0300\u0302\u0304\u0306\u0308\u030a\u030c\u030e\u0310\u0312"+
54888 		"\u0314\u0316\u0318\u031a\u031c\u031e\u0320\u0322\u0324\u0326\u0328\u032a"+
54889 		"\u032c\u032e\u0330\u0332\u0334\u0336\u0338\u033a\u033c\u033e\u0340\u0342"+
54890 		"\u0344\u0346\u0348\u034a\u034c\u034e\u0350\u0352\u0354\u0356\u0358\u035a"+
54891 		"\u035c\u035e\u0360\u0362\u0364\u0366\u0368\u036a\u036c\u036e\u0370\u0372"+
54892 		"\u0374\u0376\u0378\u037a\u037c\u037e\u0380\u0382\u0384\u0386\u0388\u038a"+
54893 		"\u038c\u038e\u0390\u0392\u0394\u0396\u0398\u039a\u039c\u039e\u03a0\u03a2"+
54894 		"\u03a4\u03a6\u03a8\u03aa\u03ac\u03ae\u03b0\u03b2\u03b4\u03b6\u03b8\u03ba"+
54895 		"\u03bc\u03be\u03c0\u03c2\u03c4\u03c6\u03c8\u03ca\u03cc\u03ce\u03d0\u03d2"+
54896 		"\u03d4\u03d6\u03d8\u03da\u03dc\u03de\u03e0\u03e2\u03e4\u03e6\u03e8\u03ea"+
54897 		"\u03ec\u03ee\u03f0\u0000h\u0001\u0000ab\u0002\u0000\u0108\u0108\u0143"+
54898 		"\u0143\u0002\u0000\u02d4\u02d4\u02db\u02db\u0001\u0000\u000f\u0010\u0001"+
54899 		"\u0000\u0087\u0089\u0001\u0000mn4\u000056==EGRT\\\\bbvv{|\u0080\u0081"+
54900 		"\u0085\u0085\u0087\u0087\u0089\u0090\u0093\u0099\u009c\u009d\u009f\u009f"+
54901 		"\u00a1\u00a2\u00a4\u00a6\u00a9\u00aa\u00ad\u00ad\u00b0\u00b0\u00b8\u00b8"+
54902 		"\u00c2\u00c2\u00cb\u00cc\u00d0\u00d1\u00d5\u00d5\u00f2\u00f2\u00f4\u00fa"+
54903 		"\u00fc\u00fd\u0105\u0107\u010a\u010e\u0110\u0111\u0113\u011d\u011f\u0124"+
54904 		"\u0126\u012e\u0130\u0144\u014c\u01be\u01c0\u01c0\u01c6\u01c6\u01d2\u01d4"+
54905 		"\u01f9\u0208\u020b\u020b\u020d\u0213\u0217\u0217\u021c\u021d\u021f\u0221"+
54906 		"\u0223\u0225\u0227\u0230\u023b\u029c\u02a5\u02a6\u02aa\u02aa\u02ae\u02ae"+
54907 		"\u02c3\u02c3\u0002\u0000\u02d2\u02d2\u02d4\u02d4\u0002\u0000\u0004\u0004"+
54908 		"hh\u0002\u0000\u0005\u0005ii\u0002\u0000\u0006\u0006kk\u0002\u0000ln\u00fb"+
54909 		"\u00fb\u0001\u0000rs\u0001\u0000\u0018\u001d\u0004\u0000\u0006\u0007\u000f"+
54910 		"\u0010,,\u00f2\u00f2\u0002\u0000==\u00fa\u00fa\u0001\u0000\u0095\u0099"+
54911 		"\u0001\u0000\u00ed\u00ee\u0001\u0000xy\u0002\u0000RR\u02d0\u02d0\u0002"+
54912 		"\u0000\u0112\u0112\u02d1\u02d1\u0001\u0000\u00f9\u00fa\u0002\u0000\u00a9"+
54913 		"\u00a9\u01c0\u01c0\u0002\u0000\u0111\u0111\u011b\u011b\b\u0000\u0083\u0083"+
54914 		"\u0087\u0088\u00ad\u00af\u00b1\u00b9\u00f2\u00f2\u0165\u0165\u01c2\u01d1"+
54915 		"\u02d2\u02d2\u0001\u0000\u00eb\u00ec\u0001\u0000\u02dc\u02dd\u0002\u0000"+
54916 		"\u00fa\u00fa\u0139\u0139\u0002\u0000\u019d\u019d\u01ae\u01ae\u0005\u0000"+
54917 		"\u00f9\u00f9\u0110\u0110\u012f\u012f\u0133\u0133\u019a\u019a\t\u0000\u0131"+
54918 		"\u0131\u013d\u013d\u0196\u0197\u019d\u019d\u01a6\u01a7\u01ab\u01ac\u01b1"+
54919 		"\u01b1\u01bd\u01bd\u01f3\u01f3\u0003\u0000\u010c\u010c\u012f\u012f\u0140"+
54920 		"\u0140\u0001\u0000\u0146\u0147\u0002\u0000\u00b0\u00b0\u0130\u0130\u0003"+
54921 		"\u0000\u00d8\u00e8\u021c\u021c\u021f\u021f\u0001\u0000HI\u0002\u0000\u00ba"+
54922 		"\u00ba\u00fa\u00fa\u0002\u0000\u0107\u0107\u011e\u011e\u0002\u0000\u0119"+
54923 		"\u0119\u0138\u0138\u0001\u0000\u010d\u010e\u0001\u000001\u0002\u0000l"+
54924 		"l\u009a\u009a\u0003\u0000\u00f9\u00f9\u012f\u012f\u0133\u0133\u0002\u0000"+
54925 		"\u0126\u0127\u0134\u0134\u0001\u0000\u01a9\u01aa\u0001\u0000[\\\u0002"+
54926 		"\u0000\u00ff\u00ff\u012e\u012e\u0001\u0000\u009c\u009d\u0003\u0000\u008c"+
54927 		"\u008c\u008e\u0090\u0113\u0116\u0003\u0000;;\u009d\u009d\u010b\u010b\u0002"+
54928 		"\u0000\u012f\u012f\u01f8\u01f8\u0003\u0000XXbb\u00cb\u00cb\u0001\u0000"+
54929 		"\u01fe\u0201\u0002\u0000\r\r\u01fe\u0201\u0001\u0000\u0208\u0209\u0001"+
54930 		"\u0000\u020a\u020d\u0002\u0000\u00cb\u00cb\u020e\u020f\u0003\u0000\u00d3"+
54931 		"\u00d3\u01d2\u01d2\u0216\u0216\u0003\u0000\u0176\u0176\u0211\u0211\u0221"+
54932 		"\u0221\u0002\u0000\u0107\u0107\u022a\u022a\u0002\u0000rr\u0101\u0101\u0001"+
54933 		"\u0000\u028a\u028b\u0001\u0000\u01ff\u0200\u0003\u0000ab\u022e\u022e\u0284"+
54934 		"\u0284\u0002\u0000\u0131\u0131\u0282\u0283\u0002\u0000\u00cb\u00cb\u0239"+
54935 		"\u0239\u0001\u0000\u027f\u0281\u0002\u0000\u00c9\u00c9\u027c\u027d\u0001"+
54936 		"\u0000\u00c8\u00c9\u0001\u0000\u0236\u0237\u0002\u0000\u00d3\u00d3\u0238"+
54937 		"\u0238\u0002\u0000\u0116\u0117\u026c\u026c\u0002\u0000\u00a6\u00a6\u026a"+
54938 		"\u026a\u0002\u0000bb\u010b\u010b\u0004\u0000rr\u010b\u010b\u012f\u012f"+
54939 		"\u0265\u0265\u0002\u0000\u0116\u0116\u026c\u026c\u0003\u0000XX\u00c8\u00c8"+
54940 		"\u0256\u0256\u0002\u0000\u012f\u012f\u0254\u0255\u0002\u0000\u0117\u0117"+
54941 		"\u0240\u0240\u0002\u0000\r\r\u000f\u0012\u0002\u0000OOrr\u0002\u0000Y"+
54942 		"Y]]\u0002\u0000XX[\\\u0002\u0000ZZ]]\u0001\u0000\u01d3\u01d4\u0002\u0000"+
54943 		"uu\u0123\u0123\u0003\u0000\u00bf\u00bf\u0123\u0123\u014d\u014d\u0002\u0000"+
54944 		"\u00bf\u00c0\u0123\u0123\u0002\u0000\u009d\u009d\u00c4\u00c4\u0001\u0000"+
54945 		"\u02bd\u02be\u0002\u0000\u010b\u010b\u02c0\u02c0\u0002\u0000UUgg\u0002"+
54946 		"\u0000\u00cc\u00cc\u0150\u0150\u0002\u0000\u0148\u0148\u0161\u0161\u0002"+
54947 		"\u0000\u00cc\u00cc\u018e\u018e\u0001\u0000\u0153\u0154\u0001\u0000\u0176"+
54948 		"\u0177\u0002\u0000\u00cc\u00cc\u0155\u0155\u0002\u0000..\u0146\u0146\u0002"+
54949 		"\u0000\u014b\u014b\u02a9\u02a9\u0005\u000066\u00cc\u00cc\u0105\u0106\u012a"+
54950 		"\u012a\u0130\u0130\u0002\u0000UUff\u0002\u0000\u02d9\u02d9\u02db\u02db"+
54951 		"\u0002\u0000\u02b0\u02b0\u02b5\u02b5\u207c\u0000\u042d\u0001\u0000\u0000"+
54952 		"\u0000\u0002\u0432\u0001\u0000\u0000\u0000\u0004\u0440\u0001\u0000\u0000"+
54953 		"\u0000\u0006\u0442\u0001\u0000\u0000\u0000\b\u0446\u0001\u0000\u0000\u0000"+
54954 		"\n\u0448\u0001\u0000\u0000\u0000\f\u0458\u0001\u0000\u0000\u0000\u000e"+
54955 		"\u045f\u0001\u0000\u0000\u0000\u0010\u046f\u0001\u0000\u0000\u0000\u0012"+
54956 		"\u0473\u0001\u0000\u0000\u0000\u0014\u047b\u0001\u0000\u0000\u0000\u0016"+
54957 		"\u047f\u0001\u0000\u0000\u0000\u0018\u0485\u0001\u0000\u0000\u0000\u001a"+
54958 		"\u048e\u0001\u0000\u0000\u0000\u001c\u0490\u0001\u0000\u0000\u0000\u001e"+
54959 		"\u0493\u0001\u0000\u0000\u0000 \u049e\u0001\u0000\u0000\u0000\"\u04a0"+
54960 		"\u0001\u0000\u0000\u0000$\u04a2\u0001\u0000\u0000\u0000&\u04a4\u0001\u0000"+
54961 		"\u0000\u0000(\u04a6\u0001\u0000\u0000\u0000*\u04aa\u0001\u0000\u0000\u0000"+
54962 		",\u04ae\u0001\u0000\u0000\u0000.\u04b0\u0001\u0000\u0000\u00000\u04b2"+
54963 		"\u0001\u0000\u0000\u00002\u04b4\u0001\u0000\u0000\u00004\u04b6\u0001\u0000"+
54964 		"\u0000\u00006\u04bb\u0001\u0000\u0000\u00008\u04c2\u0001\u0000\u0000\u0000"+
54965 		":\u04cc\u0001\u0000\u0000\u0000<\u04d3\u0001\u0000\u0000\u0000>\u04da"+
54966 		"\u0001\u0000\u0000\u0000@\u04e7\u0001\u0000\u0000\u0000B\u04ee\u0001\u0000"+
54967 		"\u0000\u0000D\u04f2\u0001\u0000\u0000\u0000F\u04f4\u0001\u0000\u0000\u0000"+
54968 		"H\u04fe\u0001\u0000\u0000\u0000J\u0504\u0001\u0000\u0000\u0000L\u0509"+
54969 		"\u0001\u0000\u0000\u0000N\u050b\u0001\u0000\u0000\u0000P\u050d\u0001\u0000"+
54970 		"\u0000\u0000R\u0518\u0001\u0000\u0000\u0000T\u0524\u0001\u0000\u0000\u0000"+
54971 		"V\u0531\u0001\u0000\u0000\u0000X\u0533\u0001\u0000\u0000\u0000Z\u0535"+
54972 		"\u0001\u0000\u0000\u0000\\\u053a\u0001\u0000\u0000\u0000^\u053c\u0001"+
54973 		"\u0000\u0000\u0000`\u0547\u0001\u0000\u0000\u0000b\u0554\u0001\u0000\u0000"+
54974 		"\u0000d\u0567\u0001\u0000\u0000\u0000f\u0569\u0001\u0000\u0000\u0000h"+
54975 		"\u056b\u0001\u0000\u0000\u0000j\u0572\u0001\u0000\u0000\u0000l\u0574\u0001"+
54976 		"\u0000\u0000\u0000n\u058e\u0001\u0000\u0000\u0000p\u05bb\u0001\u0000\u0000"+
54977 		"\u0000r\u05bd\u0001\u0000\u0000\u0000t\u061e\u0001\u0000\u0000\u0000v"+
54978 		"\u062b\u0001\u0000\u0000\u0000x\u062d\u0001\u0000\u0000\u0000z\u063f\u0001"+
54979 		"\u0000\u0000\u0000|\u0641\u0001\u0000\u0000\u0000~\u064b\u0001\u0000\u0000"+
54980 		"\u0000\u0080\u064d\u0001\u0000\u0000\u0000\u0082\u0658\u0001\u0000\u0000"+
54981 		"\u0000\u0084\u0669\u0001\u0000\u0000\u0000\u0086\u066b\u0001\u0000\u0000"+
54982 		"\u0000\u0088\u0672\u0001\u0000\u0000\u0000\u008a\u067f\u0001\u0000\u0000"+
54983 		"\u0000\u008c\u0681\u0001\u0000\u0000\u0000\u008e\u0692\u0001\u0000\u0000"+
54984 		"\u0000\u0090\u06a1\u0001\u0000\u0000\u0000\u0092\u06ab\u0001\u0000\u0000"+
54985 		"\u0000\u0094\u06ad\u0001\u0000\u0000\u0000\u0096\u06bd\u0001\u0000\u0000"+
54986 		"\u0000\u0098\u06c8\u0001\u0000\u0000\u0000\u009a\u06d4\u0001\u0000\u0000"+
54987 		"\u0000\u009c\u06fe\u0001\u0000\u0000\u0000\u009e\u0700\u0001\u0000\u0000"+
54988 		"\u0000\u00a0\u0719\u0001\u0000\u0000\u0000\u00a2\u071b\u0001\u0000\u0000"+
54989 		"\u0000\u00a4\u0729\u0001\u0000\u0000\u0000\u00a6\u072e\u0001\u0000\u0000"+
54990 		"\u0000\u00a8\u0735\u0001\u0000\u0000\u0000\u00aa\u0737\u0001\u0000\u0000"+
54991 		"\u0000\u00ac\u0751\u0001\u0000\u0000\u0000\u00ae\u075d\u0001\u0000\u0000"+
54992 		"\u0000\u00b0\u076d\u0001\u0000\u0000\u0000\u00b2\u076f\u0001\u0000\u0000"+
54993 		"\u0000\u00b4\u0777\u0001\u0000\u0000\u0000\u00b6\u0783\u0001\u0000\u0000"+
54994 		"\u0000\u00b8\u0790\u0001\u0000\u0000\u0000\u00ba\u0799\u0001\u0000\u0000"+
54995 		"\u0000\u00bc\u079c\u0001\u0000\u0000\u0000\u00be\u07a9\u0001\u0000\u0000"+
54996 		"\u0000\u00c0\u07b3\u0001\u0000\u0000\u0000\u00c2\u07b8\u0001\u0000\u0000"+
54997 		"\u0000\u00c4\u07ba\u0001\u0000\u0000\u0000\u00c6\u07c1\u0001\u0000\u0000"+
54998 		"\u0000\u00c8\u07c9\u0001\u0000\u0000\u0000\u00ca\u07d1\u0001\u0000\u0000"+
54999 		"\u0000\u00cc\u07d3\u0001\u0000\u0000\u0000\u00ce\u07e4\u0001\u0000\u0000"+
55000 		"\u0000\u00d0\u07e6\u0001\u0000\u0000\u0000\u00d2\u07ea\u0001\u0000\u0000"+
55001 		"\u0000\u00d4\u07ef\u0001\u0000\u0000\u0000\u00d6\u07f2\u0001\u0000\u0000"+
55002 		"\u0000\u00d8\u07f4\u0001\u0000\u0000\u0000\u00da\u07f7\u0001\u0000\u0000"+
55003 		"\u0000\u00dc\u07fd\u0001\u0000\u0000\u0000\u00de\u0807\u0001\u0000\u0000"+
55004 		"\u0000\u00e0\u0809\u0001\u0000\u0000\u0000\u00e2\u080d\u0001\u0000\u0000"+
55005 		"\u0000\u00e4\u081b\u0001\u0000\u0000\u0000\u00e6\u0822\u0001\u0000\u0000"+
55006 		"\u0000\u00e8\u0824\u0001\u0000\u0000\u0000\u00ea\u082c\u0001\u0000\u0000"+
55007 		"\u0000\u00ec\u082e\u0001\u0000\u0000\u0000\u00ee\u0830\u0001\u0000\u0000"+
55008 		"\u0000\u00f0\u0838\u0001\u0000\u0000\u0000\u00f2\u083a\u0001\u0000\u0000"+
55009 		"\u0000\u00f4\u083c\u0001\u0000\u0000\u0000\u00f6\u083e\u0001\u0000\u0000"+
55010 		"\u0000\u00f8\u0840\u0001\u0000\u0000\u0000\u00fa\u0842\u0001\u0000\u0000"+
55011 		"\u0000\u00fc\u0845\u0001\u0000\u0000\u0000\u00fe\u0847\u0001\u0000\u0000"+
55012 		"\u0000\u0100\u0849\u0001\u0000\u0000\u0000\u0102\u0854\u0001\u0000\u0000"+
55013 		"\u0000\u0104\u0858\u0001\u0000\u0000\u0000\u0106\u085a\u0001\u0000\u0000"+
55014 		"\u0000\u0108\u0860\u0001\u0000\u0000\u0000\u010a\u0869\u0001\u0000\u0000"+
55015 		"\u0000\u010c\u086e\u0001\u0000\u0000\u0000\u010e\u0878\u0001\u0000\u0000"+
55016 		"\u0000\u0110\u0882\u0001\u0000\u0000\u0000\u0112\u088b\u0001\u0000\u0000"+
55017 		"\u0000\u0114\u0896\u0001\u0000\u0000\u0000\u0116\u089f\u0001\u0000\u0000"+
55018 		"\u0000\u0118\u08ac\u0001\u0000\u0000\u0000\u011a\u08b5\u0001\u0000\u0000"+
55019 		"\u0000\u011c\u08c0\u0001\u0000\u0000\u0000\u011e\u08ca\u0001\u0000\u0000"+
55020 		"\u0000\u0120\u08d6\u0001\u0000\u0000\u0000\u0122\u08dc\u0001\u0000\u0000"+
55021 		"\u0000\u0124\u08e2\u0001\u0000\u0000\u0000\u0126\u08e7\u0001\u0000\u0000"+
55022 		"\u0000\u0128\u08ee\u0001\u0000\u0000\u0000\u012a\u08f7\u0001\u0000\u0000"+
55023 		"\u0000\u012c\u0902\u0001\u0000\u0000\u0000\u012e\u090b\u0001\u0000\u0000"+
55024 		"\u0000\u0130\u0912\u0001\u0000\u0000\u0000\u0132\u091b\u0001\u0000\u0000"+
55025 		"\u0000\u0134\u0928\u0001\u0000\u0000\u0000\u0136\u0935\u0001\u0000\u0000"+
55026 		"\u0000\u0138\u0942\u0001\u0000\u0000\u0000\u013a\u094f\u0001\u0000\u0000"+
55027 		"\u0000\u013c\u0964\u0001\u0000\u0000\u0000\u013e\u0971\u0001\u0000\u0000"+
55028 		"\u0000\u0140\u0975\u0001\u0000\u0000\u0000\u0142\u097c\u0001\u0000\u0000"+
55029 		"\u0000\u0144\u0980\u0001\u0000\u0000\u0000\u0146\u0996\u0001\u0000\u0000"+
55030 		"\u0000\u0148\u09b7\u0001\u0000\u0000\u0000\u014a\u09bd\u0001\u0000\u0000"+
55031 		"\u0000\u014c\u09ce\u0001\u0000\u0000\u0000\u014e\u09d2\u0001\u0000\u0000"+
55032 		"\u0000\u0150\u09d4\u0001\u0000\u0000\u0000\u0152\u09d8\u0001\u0000\u0000"+
55033 		"\u0000\u0154\u09ec\u0001\u0000\u0000\u0000\u0156\u09ee\u0001\u0000\u0000"+
55034 		"\u0000\u0158\u0a2f\u0001\u0000\u0000\u0000\u015a\u0a31\u0001\u0000\u0000"+
55035 		"\u0000\u015c\u0a41\u0001\u0000\u0000\u0000\u015e\u0a4a\u0001\u0000\u0000"+
55036 		"\u0000\u0160\u0a53\u0001\u0000\u0000\u0000\u0162\u0a70\u0001\u0000\u0000"+
55037 		"\u0000\u0164\u0a74\u0001\u0000\u0000\u0000\u0166\u0a7b\u0001\u0000\u0000"+
55038 		"\u0000\u0168\u0a83\u0001\u0000\u0000\u0000\u016a\u0a85\u0001\u0000\u0000"+
55039 		"\u0000\u016c\u0a99\u0001\u0000\u0000\u0000\u016e\u0a9b\u0001\u0000\u0000"+
55040 		"\u0000\u0170\u0aa1\u0001\u0000\u0000\u0000\u0172\u0aa4\u0001\u0000\u0000"+
55041 		"\u0000\u0174\u0aad\u0001\u0000\u0000\u0000\u0176\u0aaf\u0001\u0000\u0000"+
55042 		"\u0000\u0178\u0ab8\u0001\u0000\u0000\u0000\u017a\u0ace\u0001\u0000\u0000"+
55043 		"\u0000\u017c\u0ad5\u0001\u0000\u0000\u0000\u017e\u0ad7\u0001\u0000\u0000"+
55044 		"\u0000\u0180\u0ae1\u0001\u0000\u0000\u0000\u0182\u0aef\u0001\u0000\u0000"+
55045 		"\u0000\u0184\u0afe\u0001\u0000\u0000\u0000\u0186\u0b00\u0001\u0000\u0000"+
55046 		"\u0000\u0188\u0b03\u0001\u0000\u0000\u0000\u018a\u0b11\u0001\u0000\u0000"+
55047 		"\u0000\u018c\u0b13\u0001\u0000\u0000\u0000\u018e\u0b20\u0001\u0000\u0000"+
55048 		"\u0000\u0190\u0b28\u0001\u0000\u0000\u0000\u0192\u0b2f\u0001\u0000\u0000"+
55049 		"\u0000\u0194\u0b36\u0001\u0000\u0000\u0000\u0196\u0b39\u0001\u0000\u0000"+
55050 		"\u0000\u0198\u0b42\u0001\u0000\u0000\u0000\u019a\u0b47\u0001\u0000\u0000"+
55051 		"\u0000\u019c\u0b4d\u0001\u0000\u0000\u0000\u019e\u0b59\u0001\u0000\u0000"+
55052 		"\u0000\u01a0\u0b71\u0001\u0000\u0000\u0000\u01a2\u0b73\u0001\u0000\u0000"+
55053 		"\u0000\u01a4\u0b7e\u0001\u0000\u0000\u0000\u01a6\u0b91\u0001\u0000\u0000"+
55054 		"\u0000\u01a8\u0b98\u0001\u0000\u0000\u0000\u01aa\u0ba7\u0001\u0000\u0000"+
55055 		"\u0000\u01ac\u0be4\u0001\u0000\u0000\u0000\u01ae\u0be6\u0001\u0000\u0000"+
55056 		"\u0000\u01b0\u0bf2\u0001\u0000\u0000\u0000\u01b2\u0c04\u0001\u0000\u0000"+
55057 		"\u0000\u01b4\u0c0a\u0001\u0000\u0000\u0000\u01b6\u0c1c\u0001\u0000\u0000"+
55058 		"\u0000\u01b8\u0c1e\u0001\u0000\u0000\u0000\u01ba\u0c45\u0001\u0000\u0000"+
55059 		"\u0000\u01bc\u0c47\u0001\u0000\u0000\u0000\u01be\u0c5d\u0001\u0000\u0000"+
55060 		"\u0000\u01c0\u0c6b\u0001\u0000\u0000\u0000\u01c2\u0c6f\u0001\u0000\u0000"+
55061 		"\u0000\u01c4\u0c76\u0001\u0000\u0000\u0000\u01c6\u0c84\u0001\u0000\u0000"+
55062 		"\u0000\u01c8\u0c88\u0001\u0000\u0000\u0000\u01ca\u0c96\u0001\u0000\u0000"+
55063 		"\u0000\u01cc\u0c9a\u0001\u0000\u0000\u0000\u01ce\u0ca9\u0001\u0000\u0000"+
55064 		"\u0000\u01d0\u0cab\u0001\u0000\u0000\u0000\u01d2\u0cb5\u0001\u0000\u0000"+
55065 		"\u0000\u01d4\u0cc9\u0001\u0000\u0000\u0000\u01d6\u0cd3\u0001\u0000\u0000"+
55066 		"\u0000\u01d8\u0ce0\u0001\u0000\u0000\u0000\u01da\u0ce4\u0001\u0000\u0000"+
55067 		"\u0000\u01dc\u0d01\u0001\u0000\u0000\u0000\u01de\u0d03\u0001\u0000\u0000"+
55068 		"\u0000\u01e0\u0d05\u0001\u0000\u0000\u0000\u01e2\u0d11\u0001\u0000\u0000"+
55069 		"\u0000\u01e4\u0d1e\u0001\u0000\u0000\u0000\u01e6\u0d26\u0001\u0000\u0000"+
55070 		"\u0000\u01e8\u0d2c\u0001\u0000\u0000\u0000\u01ea\u0d3e\u0001\u0000\u0000"+
55071 		"\u0000\u01ec\u0d46\u0001\u0000\u0000\u0000\u01ee\u0d4d\u0001\u0000\u0000"+
55072 		"\u0000\u01f0\u0d56\u0001\u0000\u0000\u0000\u01f2\u0d65\u0001\u0000\u0000"+
55073 		"\u0000\u01f4\u0d6c\u0001\u0000\u0000\u0000\u01f6\u0d75\u0001\u0000\u0000"+
55074 		"\u0000\u01f8\u0d77\u0001\u0000\u0000\u0000\u01fa\u0d7c\u0001\u0000\u0000"+
55075 		"\u0000\u01fc\u0d7f\u0001\u0000\u0000\u0000\u01fe\u0d8a\u0001\u0000\u0000"+
55076 		"\u0000\u0200\u0d8c\u0001\u0000\u0000\u0000\u0202\u0dac\u0001\u0000\u0000"+
55077 		"\u0000\u0204\u0dae\u0001\u0000\u0000\u0000\u0206\u0dbd\u0001\u0000\u0000"+
55078 		"\u0000\u0208\u0dd1\u0001\u0000\u0000\u0000\u020a\u0e08\u0001\u0000\u0000"+
55079 		"\u0000\u020c\u0e10\u0001\u0000\u0000\u0000\u020e\u0e12\u0001\u0000\u0000"+
55080 		"\u0000\u0210\u0e24\u0001\u0000\u0000\u0000\u0212\u0e3b\u0001\u0000\u0000"+
55081 		"\u0000\u0214\u0e51\u0001\u0000\u0000\u0000\u0216\u0e5d\u0001\u0000\u0000"+
55082 		"\u0000\u0218\u0e5f\u0001\u0000\u0000\u0000\u021a\u0e77\u0001\u0000\u0000"+
55083 		"\u0000\u021c\u0e79\u0001\u0000\u0000\u0000\u021e\u0e7f\u0001\u0000\u0000"+
55084 		"\u0000\u0220\u0e8d\u0001\u0000\u0000\u0000\u0222\u0e8f\u0001\u0000\u0000"+
55085 		"\u0000\u0224\u0ebd\u0001\u0000\u0000\u0000\u0226\u0ed1\u0001\u0000\u0000"+
55086 		"\u0000\u0228\u0ed3\u0001\u0000\u0000\u0000\u022a\u0eee\u0001\u0000\u0000"+
55087 		"\u0000\u022c\u0f03\u0001\u0000\u0000\u0000\u022e\u0f06\u0001\u0000\u0000"+
55088 		"\u0000\u0230\u0f21\u0001\u0000\u0000\u0000\u0232\u0f23\u0001\u0000\u0000"+
55089 		"\u0000\u0234\u0f3f\u0001\u0000\u0000\u0000\u0236\u0f41\u0001\u0000\u0000"+
55090 		"\u0000\u0238\u0f58\u0001\u0000\u0000\u0000\u023a\u0f70\u0001\u0000\u0000"+
55091 		"\u0000\u023c\u0f89\u0001\u0000\u0000\u0000\u023e\u0f94\u0001\u0000\u0000"+
55092 		"\u0000\u0240\u0fb0\u0001\u0000\u0000\u0000\u0242\u0fbc\u0001\u0000\u0000"+
55093 		"\u0000\u0244\u0fc9\u0001\u0000\u0000\u0000\u0246\u0fcb\u0001\u0000\u0000"+
55094 		"\u0000\u0248\u0fd7\u0001\u0000\u0000\u0000\u024a\u0fe0\u0001\u0000\u0000"+
55095 		"\u0000\u024c\u0ff0\u0001\u0000\u0000\u0000\u024e\u1015\u0001\u0000\u0000"+
55096 		"\u0000\u0250\u102d\u0001\u0000\u0000\u0000\u0252\u1038\u0001\u0000\u0000"+
55097 		"\u0000\u0254\u1044\u0001\u0000\u0000\u0000\u0256\u1046\u0001\u0000\u0000"+
55098 		"\u0000\u0258\u104f\u0001\u0000\u0000\u0000\u025a\u1067\u0001\u0000\u0000"+
55099 		"\u0000\u025c\u1096\u0001\u0000\u0000\u0000\u025e\u1098\u0001\u0000\u0000"+
55100 		"\u0000\u0260\u10a3\u0001\u0000\u0000\u0000\u0262\u10c1\u0001\u0000\u0000"+
55101 		"\u0000\u0264\u10c5\u0001\u0000\u0000\u0000\u0266\u10eb\u0001\u0000\u0000"+
55102 		"\u0000\u0268\u1104\u0001\u0000\u0000\u0000\u026a\u1144\u0001\u0000\u0000"+
55103 		"\u0000\u026c\u1189\u0001\u0000\u0000\u0000\u026e\u118b\u0001\u0000\u0000"+
55104 		"\u0000\u0270\u1196\u0001\u0000\u0000\u0000\u0272\u11ad\u0001\u0000\u0000"+
55105 		"\u0000\u0274\u11b9\u0001\u0000\u0000\u0000\u0276\u11f1\u0001\u0000\u0000"+
55106 		"\u0000\u0278\u11ff\u0001\u0000\u0000\u0000\u027a\u120e\u0001\u0000\u0000"+
55107 		"\u0000\u027c\u1218\u0001\u0000\u0000\u0000\u027e\u1245\u0001\u0000\u0000"+
55108 		"\u0000\u0280\u124b\u0001\u0000\u0000\u0000\u0282\u1263\u0001\u0000\u0000"+
55109 		"\u0000\u0284\u1267\u0001\u0000\u0000\u0000\u0286\u1289\u0001\u0000\u0000"+
55110 		"\u0000\u0288\u128b\u0001\u0000\u0000\u0000\u028a\u12aa\u0001\u0000\u0000"+
55111 		"\u0000\u028c\u12ac\u0001\u0000\u0000\u0000\u028e\u12b3\u0001\u0000\u0000"+
55112 		"\u0000\u0290\u12d0\u0001\u0000\u0000\u0000\u0292\u12d6\u0001\u0000\u0000"+
55113 		"\u0000\u0294\u12eb\u0001\u0000\u0000\u0000\u0296\u12ed\u0001\u0000\u0000"+
55114 		"\u0000\u0298\u132f\u0001\u0000\u0000\u0000\u029a\u133e\u0001\u0000\u0000"+
55115 		"\u0000\u029c\u1346\u0001\u0000\u0000\u0000\u029e\u135d\u0001\u0000\u0000"+
55116 		"\u0000\u02a0\u1366\u0001\u0000\u0000\u0000\u02a2\u136e\u0001\u0000\u0000"+
55117 		"\u0000\u02a4\u1370\u0001\u0000\u0000\u0000\u02a6\u137e\u0001\u0000\u0000"+
55118 		"\u0000\u02a8\u1380\u0001\u0000\u0000\u0000\u02aa\u138b\u0001\u0000\u0000"+
55119 		"\u0000\u02ac\u139c\u0001\u0000\u0000\u0000\u02ae\u13a5\u0001\u0000\u0000"+
55120 		"\u0000\u02b0\u13ac\u0001\u0000\u0000\u0000\u02b2\u13b0\u0001\u0000\u0000"+
55121 		"\u0000\u02b4\u13b2\u0001\u0000\u0000\u0000\u02b6\u13bd\u0001\u0000\u0000"+
55122 		"\u0000\u02b8\u13d0\u0001\u0000\u0000\u0000\u02ba\u13ec\u0001\u0000\u0000"+
55123 		"\u0000\u02bc\u13ef\u0001\u0000\u0000\u0000\u02be\u1409\u0001\u0000\u0000"+
55124 		"\u0000\u02c0\u1412\u0001\u0000\u0000\u0000\u02c2\u1421\u0001\u0000\u0000"+
55125 		"\u0000\u02c4\u1429\u0001\u0000\u0000\u0000\u02c6\u142e\u0001\u0000\u0000"+
55126 		"\u0000\u02c8\u1438\u0001\u0000\u0000\u0000\u02ca\u1445\u0001\u0000\u0000"+
55127 		"\u0000\u02cc\u1459\u0001\u0000\u0000\u0000\u02ce\u1463\u0001\u0000\u0000"+
55128 		"\u0000\u02d0\u147d\u0001\u0000\u0000\u0000\u02d2\u1481\u0001\u0000\u0000"+
55129 		"\u0000\u02d4\u1484\u0001\u0000\u0000\u0000\u02d6\u1497\u0001\u0000\u0000"+
55130 		"\u0000\u02d8\u149b\u0001\u0000\u0000\u0000\u02da\u14b3\u0001\u0000\u0000"+
55131 		"\u0000\u02dc\u14b5\u0001\u0000\u0000\u0000\u02de\u14c3\u0001\u0000\u0000"+
55132 		"\u0000\u02e0\u14c5\u0001\u0000\u0000\u0000\u02e2\u14d5\u0001\u0000\u0000"+
55133 		"\u0000\u02e4\u14f7\u0001\u0000\u0000\u0000\u02e6\u14fe\u0001\u0000\u0000"+
55134 		"\u0000\u02e8\u151c\u0001\u0000\u0000\u0000\u02ea\u151e\u0001\u0000\u0000"+
55135 		"\u0000\u02ec\u153e\u0001\u0000\u0000\u0000\u02ee\u1540\u0001\u0000\u0000"+
55136 		"\u0000\u02f0\u1542\u0001\u0000\u0000\u0000\u02f2\u1545\u0001\u0000\u0000"+
55137 		"\u0000\u02f4\u1548\u0001\u0000\u0000\u0000\u02f6\u154b\u0001\u0000\u0000"+
55138 		"\u0000\u02f8\u1553\u0001\u0000\u0000\u0000\u02fa\u1574\u0001\u0000\u0000"+
55139 		"\u0000\u02fc\u1594\u0001\u0000\u0000\u0000\u02fe\u159a\u0001\u0000\u0000"+
55140 		"\u0000\u0300\u159c\u0001\u0000\u0000\u0000\u0302\u159f\u0001\u0000\u0000"+
55141 		"\u0000\u0304\u15a9\u0001\u0000\u0000\u0000\u0306\u15ac\u0001\u0000\u0000"+
55142 		"\u0000\u0308\u15b0\u0001\u0000\u0000\u0000\u030a\u15c0\u0001\u0000\u0000"+
55143 		"\u0000\u030c\u15c3\u0001\u0000\u0000\u0000\u030e\u15cb\u0001\u0000\u0000"+
55144 		"\u0000\u0310\u15d2\u0001\u0000\u0000\u0000\u0312\u15e0\u0001\u0000\u0000"+
55145 		"\u0000\u0314\u15ec\u0001\u0000\u0000\u0000\u0316\u15f3\u0001\u0000\u0000"+
55146 		"\u0000\u0318\u15fc\u0001\u0000\u0000\u0000\u031a\u15ff\u0001\u0000\u0000"+
55147 		"\u0000\u031c\u1648\u0001\u0000\u0000\u0000\u031e\u1680\u0001\u0000\u0000"+
55148 		"\u0000\u0320\u1682\u0001\u0000\u0000\u0000\u0322\u1688\u0001\u0000\u0000"+
55149 		"\u0000\u0324\u16c8\u0001\u0000\u0000\u0000\u0326\u16d8\u0001\u0000\u0000"+
55150 		"\u0000\u0328\u16ee\u0001\u0000\u0000\u0000\u032a\u16f8\u0001\u0000\u0000"+
55151 		"\u0000\u032c\u1709\u0001\u0000\u0000\u0000\u032e\u170b\u0001\u0000\u0000"+
55152 		"\u0000\u0330\u170d\u0001\u0000\u0000\u0000\u0332\u170f\u0001\u0000\u0000"+
55153 		"\u0000\u0334\u1712\u0001\u0000\u0000\u0000\u0336\u1717\u0001\u0000\u0000"+
55154 		"\u0000\u0338\u172e\u0001\u0000\u0000\u0000\u033a\u1741\u0001\u0000\u0000"+
55155 		"\u0000\u033c\u1753\u0001\u0000\u0000\u0000\u033e\u1757\u0001\u0000\u0000"+
55156 		"\u0000\u0340\u1763\u0001\u0000\u0000\u0000\u0342\u176a\u0001\u0000\u0000"+
55157 		"\u0000\u0344\u176e\u0001\u0000\u0000\u0000\u0346\u1770\u0001\u0000\u0000"+
55158 		"\u0000\u0348\u1778\u0001\u0000\u0000\u0000\u034a\u178d\u0001\u0000\u0000"+
55159 		"\u0000\u034c\u179e\u0001\u0000\u0000\u0000\u034e\u17a3\u0001\u0000\u0000"+
55160 		"\u0000\u0350\u17b8\u0001\u0000\u0000\u0000\u0352\u17c9\u0001\u0000\u0000"+
55161 		"\u0000\u0354\u17e4\u0001\u0000\u0000\u0000\u0356\u17f6\u0001\u0000\u0000"+
55162 		"\u0000\u0358\u1845\u0001\u0000\u0000\u0000\u035a\u1859\u0001\u0000\u0000"+
55163 		"\u0000\u035c\u1902\u0001\u0000\u0000\u0000\u035e\u1907\u0001\u0000\u0000"+
55164 		"\u0000\u0360\u1911\u0001\u0000\u0000\u0000\u0362\u191c\u0001\u0000\u0000"+
55165 		"\u0000\u0364\u1926\u0001\u0000\u0000\u0000\u0366\u192f\u0001\u0000\u0000"+
55166 		"\u0000\u0368\u1945\u0001\u0000\u0000\u0000\u036a\u1952\u0001\u0000\u0000"+
55167 		"\u0000\u036c\u1959\u0001\u0000\u0000\u0000\u036e\u1965\u0001\u0000\u0000"+
55168 		"\u0000\u0370\u1972\u0001\u0000\u0000\u0000\u0372\u197f\u0001\u0000\u0000"+
55169 		"\u0000\u0374\u198a\u0001\u0000\u0000\u0000\u0376\u1996\u0001\u0000\u0000"+
55170 		"\u0000\u0378\u19a8\u0001\u0000\u0000\u0000\u037a\u19b4\u0001\u0000\u0000"+
55171 		"\u0000\u037c\u19c1\u0001\u0000\u0000\u0000\u037e\u19ce\u0001\u0000\u0000"+
55172 		"\u0000\u0380\u19da\u0001\u0000\u0000\u0000\u0382\u19ed\u0001\u0000\u0000"+
55173 		"\u0000\u0384\u19f1\u0001\u0000\u0000\u0000\u0386\u19fe\u0001\u0000\u0000"+
55174 		"\u0000\u0388\u1a0b\u0001\u0000\u0000\u0000\u038a\u1a14\u0001\u0000\u0000"+
55175 		"\u0000\u038c\u1a1e\u0001\u0000\u0000\u0000\u038e\u1a20\u0001\u0000\u0000"+
55176 		"\u0000\u0390\u1a22\u0001\u0000\u0000\u0000\u0392\u1a4e\u0001\u0000\u0000"+
55177 		"\u0000\u0394\u1a50\u0001\u0000\u0000\u0000\u0396\u1a52\u0001\u0000\u0000"+
55178 		"\u0000\u0398\u1a54\u0001\u0000\u0000\u0000\u039a\u1a5c\u0001\u0000\u0000"+
55179 		"\u0000\u039c\u1a68\u0001\u0000\u0000\u0000\u039e\u1a9a\u0001\u0000\u0000"+
55180 		"\u0000\u03a0\u1aa7\u0001\u0000\u0000\u0000\u03a2\u1ab4\u0001\u0000\u0000"+
55181 		"\u0000\u03a4\u1adc\u0001\u0000\u0000\u0000\u03a6\u1aec\u0001\u0000\u0000"+
55182 		"\u0000\u03a8\u1b02\u0001\u0000\u0000\u0000\u03aa\u1b04\u0001\u0000\u0000"+
55183 		"\u0000\u03ac\u1b12\u0001\u0000\u0000\u0000\u03ae\u1b1c\u0001\u0000\u0000"+
55184 		"\u0000\u03b0\u1b1e\u0001\u0000\u0000\u0000\u03b2\u1b20\u0001\u0000\u0000"+
55185 		"\u0000\u03b4\u1b22\u0001\u0000\u0000\u0000\u03b6\u1b27\u0001\u0000\u0000"+
55186 		"\u0000\u03b8\u1b2e\u0001\u0000\u0000\u0000\u03ba\u1b5e\u0001\u0000\u0000"+
55187 		"\u0000\u03bc\u1b60\u0001\u0000\u0000\u0000\u03be\u1b67\u0001\u0000\u0000"+
55188 		"\u0000\u03c0\u1b6e\u0001\u0000\u0000\u0000\u03c2\u1b7d\u0001\u0000\u0000"+
55189 		"\u0000\u03c4\u1b8b\u0001\u0000\u0000\u0000\u03c6\u1b8d\u0001\u0000\u0000"+
55190 		"\u0000\u03c8\u1bb5\u0001\u0000\u0000\u0000\u03ca\u1bb7\u0001\u0000\u0000"+
55191 		"\u0000\u03cc\u1bb9\u0001\u0000\u0000\u0000\u03ce\u1bcc\u0001\u0000\u0000"+
55192 		"\u0000\u03d0\u1bd4\u0001\u0000\u0000\u0000\u03d2\u1be2\u0001\u0000\u0000"+
55193 		"\u0000\u03d4\u1be4\u0001\u0000\u0000\u0000\u03d6\u1bf0\u0001\u0000\u0000"+
55194 		"\u0000\u03d8\u1c07\u0001\u0000\u0000\u0000\u03da\u1c09\u0001\u0000\u0000"+
55195 		"\u0000\u03dc\u1c0c\u0001\u0000\u0000\u0000\u03de\u1c19\u0001\u0000\u0000"+
55196 		"\u0000\u03e0\u1c1b\u0001\u0000\u0000\u0000\u03e2\u1c32\u0001\u0000\u0000"+
55197 		"\u0000\u03e4\u1c34\u0001\u0000\u0000\u0000\u03e6\u1c38\u0001\u0000\u0000"+
55198 		"\u0000\u03e8\u1c48\u0001\u0000\u0000\u0000\u03ea\u1c6f\u0001\u0000\u0000"+
55199 		"\u0000\u03ec\u1c71\u0001\u0000\u0000\u0000\u03ee\u1c79\u0001\u0000\u0000"+
55200 		"\u0000\u03f0\u1c7b\u0001\u0000\u0000\u0000\u03f2\u042e\u0003\u02de\u016f"+
55201 		"\u0000\u03f3\u042e\u0003\u02bc\u015e\u0000\u03f4\u042e\u0003\u02ca\u0165"+
55202 		"\u0000\u03f5\u042e\u0003\u02d4\u016a\u0000\u03f6\u042e\u0003\u0108\u0084"+
55203 		"\u0000\u03f7\u042e\u0003\u011c\u008e\u0000\u03f8\u042e\u0003\u0130\u0098"+
55204 		"\u0000\u03f9\u042e\u0003\u0104\u0082\u0000\u03fa\u042e\u0003\u010a\u0085"+
55205 		"\u0000\u03fb\u042e\u0003\u010e\u0087\u0000\u03fc\u042e\u0003\u0110\u0088"+
55206 		"\u0000\u03fd\u042e\u0003\u0112\u0089\u0000\u03fe\u042e\u0003\u0114\u008a"+
55207 		"\u0000\u03ff\u042e\u0003\u0116\u008b\u0000\u0400\u042e\u0003\u0118\u008c"+
55208 		"\u0000\u0401\u042e\u0003\u011a\u008d\u0000\u0402\u042e\u0003\u0126\u0093"+
55209 		"\u0000\u0403\u042e\u0003\u0128\u0094\u0000\u0404\u042e\u0003\u011e\u008f"+
55210 		"\u0000\u0405\u042e\u0003\u012a\u0095\u0000\u0406\u042e\u0003\u012c\u0096"+
55211 		"\u0000\u0407\u042e\u0003\u0124\u0092\u0000\u0408\u042e\u0003\u012e\u0097"+
55212 		"\u0000\u0409\u042e\u0003\u0132\u0099\u0000\u040a\u042e\u0003\u0134\u009a"+
55213 		"\u0000\u040b\u042e\u0003\u0136\u009b\u0000\u040c\u042e\u0003\u0138\u009c"+
55214 		"\u0000\u040d\u042e\u0003\u013a\u009d\u0000\u040e\u042e\u0003\u013c\u009e"+
55215 		"\u0000\u040f\u042e\u0003\u013e\u009f\u0000\u0410\u042e\u0003\u0140\u00a0"+
55216 		"\u0000\u0411\u042e\u0003\u0142\u00a1\u0000\u0412\u042e\u0003\u010c\u0086"+
55217 		"\u0000\u0413\u042e\u0003\u0002\u0001\u0000\u0414\u042e\u0003\n\u0005\u0000"+
55218 		"\u0415\u042e\u0003\f\u0006\u0000\u0416\u042e\u0003\u0006\u0003\u0000\u0417"+
55219 		"\u042e\u0003\u000e\u0007\u0000\u0418\u042e\u0003\u0010\b\u0000\u0419\u042e"+
55220 		"\u0003\u0012\t\u0000\u041a\u042e\u0003\u0014\n\u0000\u041b\u042e\u0003"+
55221 		"\u0016\u000b\u0000\u041c\u042e\u0003\u0334\u019a\u0000\u041d\u042e\u0003"+
55222 		"\u0346\u01a3\u0000\u041e\u042e\u0003\u034c\u01a6\u0000\u041f\u042e\u0003"+
55223 		"\u039a\u01cd\u0000\u0420\u042e\u0003\u03b6\u01db\u0000\u0421\u042e\u0003"+
55224 		"\u03b8\u01dc\u0000\u0422\u042e\u0003\u03bc\u01de\u0000\u0423\u042e\u0003"+
55225 		"\u03be\u01df\u0000\u0424\u042e\u0003\u03c0\u01e0\u0000\u0425\u042e\u0003"+
55226 		"\u03c2\u01e1\u0000\u0426\u042e\u0003\u03e4\u01f2\u0000\u0427\u042e\u0003"+
55227 		"\u03e6\u01f3\u0000\u0428\u042e\u0003\u00fe\u007f\u0000\u0429\u042e\u0003"+
55228 		"\u0100\u0080\u0000\u042a\u042e\u0003\u0398\u01cc\u0000\u042b\u042e\u0003"+
55229 		"\u03f0\u01f8\u0000\u042c\u042e\u0003\u0144\u00a2\u0000\u042d\u03f2\u0001"+
55230 		"\u0000\u0000\u0000\u042d\u03f3\u0001\u0000\u0000\u0000\u042d\u03f4\u0001"+
55231 		"\u0000\u0000\u0000\u042d\u03f5\u0001\u0000\u0000\u0000\u042d\u03f6\u0001"+
55232 		"\u0000\u0000\u0000\u042d\u03f7\u0001\u0000\u0000\u0000\u042d\u03f8\u0001"+
55233 		"\u0000\u0000\u0000\u042d\u03f9\u0001\u0000\u0000\u0000\u042d\u03fa\u0001"+
55234 		"\u0000\u0000\u0000\u042d\u03fb\u0001\u0000\u0000\u0000\u042d\u03fc\u0001"+
55235 		"\u0000\u0000\u0000\u042d\u03fd\u0001\u0000\u0000\u0000\u042d\u03fe\u0001"+
55236 		"\u0000\u0000\u0000\u042d\u03ff\u0001\u0000\u0000\u0000\u042d\u0400\u0001"+
55237 		"\u0000\u0000\u0000\u042d\u0401\u0001\u0000\u0000\u0000\u042d\u0402\u0001"+
55238 		"\u0000\u0000\u0000\u042d\u0403\u0001\u0000\u0000\u0000\u042d\u0404\u0001"+
55239 		"\u0000\u0000\u0000\u042d\u0405\u0001\u0000\u0000\u0000\u042d\u0406\u0001"+
55240 		"\u0000\u0000\u0000\u042d\u0407\u0001\u0000\u0000\u0000\u042d\u0408\u0001"+
55241 		"\u0000\u0000\u0000\u042d\u0409\u0001\u0000\u0000\u0000\u042d\u040a\u0001"+
55242 		"\u0000\u0000\u0000\u042d\u040b\u0001\u0000\u0000\u0000\u042d\u040c\u0001"+
55243 		"\u0000\u0000\u0000\u042d\u040d\u0001\u0000\u0000\u0000\u042d\u040e\u0001"+
55244 		"\u0000\u0000\u0000\u042d\u040f\u0001\u0000\u0000\u0000\u042d\u0410\u0001"+
55245 		"\u0000\u0000\u0000\u042d\u0411\u0001\u0000\u0000\u0000\u042d\u0412\u0001"+
55246 		"\u0000\u0000\u0000\u042d\u0413\u0001\u0000\u0000\u0000\u042d\u0414\u0001"+
55247 		"\u0000\u0000\u0000\u042d\u0415\u0001\u0000\u0000\u0000\u042d\u0416\u0001"+
55248 		"\u0000\u0000\u0000\u042d\u0417\u0001\u0000\u0000\u0000\u042d\u0418\u0001"+
55249 		"\u0000\u0000\u0000\u042d\u0419\u0001\u0000\u0000\u0000\u042d\u041a\u0001"+
55250 		"\u0000\u0000\u0000\u042d\u041b\u0001\u0000\u0000\u0000\u042d\u041c\u0001"+
55251 		"\u0000\u0000\u0000\u042d\u041d\u0001\u0000\u0000\u0000\u042d\u041e\u0001"+
55252 		"\u0000\u0000\u0000\u042d\u041f\u0001\u0000\u0000\u0000\u042d\u0420\u0001"+
55253 		"\u0000\u0000\u0000\u042d\u0421\u0001\u0000\u0000\u0000\u042d\u0422\u0001"+
55254 		"\u0000\u0000\u0000\u042d\u0423\u0001\u0000\u0000\u0000\u042d\u0424\u0001"+
55255 		"\u0000\u0000\u0000\u042d\u0425\u0001\u0000\u0000\u0000\u042d\u0426\u0001"+
55256 		"\u0000\u0000\u0000\u042d\u0427\u0001\u0000\u0000\u0000\u042d\u0428\u0001"+
55257 		"\u0000\u0000\u0000\u042d\u0429\u0001\u0000\u0000\u0000\u042d\u042a\u0001"+
55258 		"\u0000\u0000\u0000\u042d\u042b\u0001\u0000\u0000\u0000\u042d\u042c\u0001"+
55259 		"\u0000\u0000\u0000\u042e\u0430\u0001\u0000\u0000\u0000\u042f\u0431\u0005"+
55260 		"+\u0000\u0000\u0430\u042f\u0001\u0000\u0000\u0000\u0430\u0431\u0001\u0000"+
55261 		"\u0000\u0000\u0431\u0001\u0001\u0000\u0000\u0000\u0432\u0433\u0005:\u0000"+
55262 		"\u0000\u0433\u0434\u0005\u0108\u0000\u0000\u0434\u0435\u0005\u021b\u0000"+
55263 		"\u0000\u0435\u0436\u0005\u021a\u0000\u0000\u0436\u0437\u0003\u0004\u0002"+
55264 		"\u0000\u0437\u0003\u0001\u0000\u0000\u0000\u0438\u0439\u0005\u021e\u0000"+
55265 		"\u0000\u0439\u0441\u0005\u02a7\u0000\u0000\u043a\u043b\u0005\u021e\u0000"+
55266 		"\u0000\u043b\u0441\u0005\u02a8\u0000\u0000\u043c\u043d\u0005\u021d\u0000"+
55267 		"\u0000\u043d\u0441\u0005\u021e\u0000\u0000\u043e\u0441\u0005\u021c\u0000"+
55268 		"\u0000\u043f\u0441\u0005\u021f\u0000\u0000\u0440\u0438\u0001\u0000\u0000"+
55269 		"\u0000\u0440\u043a\u0001\u0000\u0000\u0000\u0440\u043c\u0001\u0000\u0000"+
55270 		"\u0000\u0440\u043e\u0001\u0000\u0000\u0000\u0440\u043f\u0001\u0000\u0000"+
55271 		"\u0000\u0441\u0005\u0001\u0000\u0000\u0000\u0442\u0443\u0005:\u0000\u0000"+
55272 		"\u0443\u0444\u0005\u01ad\u0000\u0000\u0444\u0445\u0003\b\u0004\u0000\u0445"+
55273 		"\u0007\u0001\u0000\u0000\u0000\u0446\u0447\u0007\u0000\u0000\u0000\u0447"+
55274 		"\t\u0001\u0000\u0000\u0000\u0448\u0449\u0005}\u0000\u0000\u0449\u0456"+
55275 		"\u0007\u0001\u0000\u0000\u044a\u044d\u0003\u00f0x\u0000\u044b\u044d\u0003"+
55276 		"\u00f2y\u0000\u044c\u044a\u0001\u0000\u0000\u0000\u044c\u044b\u0001\u0000"+
55277 		"\u0000\u0000\u044d\u0454\u0001\u0000\u0000\u0000\u044e\u044f\u0005M\u0000"+
55278 		"\u0000\u044f\u0452\u0005\u0233\u0000\u0000\u0450\u0453\u0003\u001c\u000e"+
55279 		"\u0000\u0451\u0453\u0005\u02db\u0000\u0000\u0452\u0450\u0001\u0000\u0000"+
55280 		"\u0000\u0452\u0451\u0001\u0000\u0000\u0000\u0452\u0453\u0001\u0000\u0000"+
55281 		"\u0000\u0453\u0455\u0001\u0000\u0000\u0000\u0454\u044e\u0001\u0000\u0000"+
55282 		"\u0000\u0454\u0455\u0001\u0000\u0000\u0000\u0455\u0457\u0001\u0000\u0000"+
55283 		"\u0000\u0456\u044c\u0001\u0000\u0000\u0000\u0456\u0457\u0001\u0000\u0000"+
55284 		"\u0000\u0457\u000b\u0001\u0000\u0000\u0000\u0458\u0459\u0005}\u0000\u0000"+
55285 		"\u0459\u045a\u0005\u0232\u0000\u0000\u045a\u045d\u0007\u0001\u0000\u0000"+
55286 		"\u045b\u045e\u0003\u00f0x\u0000\u045c\u045e\u0003\u00f2y\u0000\u045d\u045b"+
55287 		"\u0001\u0000\u0000\u0000\u045d\u045c\u0001\u0000\u0000\u0000\u045d\u045e"+
55288 		"\u0001\u0000\u0000\u0000\u045e\r\u0001\u0000\u0000\u0000\u045f\u0465\u0005"+
55289 		"~\u0000\u0000\u0460\u0463\u0007\u0001\u0000\u0000\u0461\u0464\u0003\u00f0"+
55290 		"x\u0000\u0462\u0464\u0003\u00f2y\u0000\u0463\u0461\u0001\u0000\u0000\u0000"+
55291 		"\u0463\u0462\u0001\u0000\u0000\u0000\u0463\u0464\u0001\u0000\u0000\u0000"+
55292 		"\u0464\u0466\u0001\u0000\u0000\u0000\u0465\u0460\u0001\u0000\u0000\u0000"+
55293 		"\u0465\u0466\u0001\u0000\u0000\u0000\u0466\u046d\u0001\u0000\u0000\u0000"+
55294 		"\u0467\u0468\u0005M\u0000\u0000\u0468\u0469\u0005\u001f\u0000\u0000\u0469"+
55295 		"\u046a\u0005\u029a\u0000\u0000\u046a\u046b\u0005\u0018\u0000\u0000\u046b"+
55296 		"\u046c\u0007\u0000\u0000\u0000\u046c\u046e\u0005 \u0000\u0000\u046d\u0467"+
55297 		"\u0001\u0000\u0000\u0000\u046d\u046e\u0001\u0000\u0000\u0000\u046e\u000f"+
55298 		"\u0001\u0000\u0000\u0000\u046f\u0471\u0005~\u0000\u0000\u0470\u0472\u0005"+
55299 		"\u0234\u0000\u0000\u0471\u0470\u0001\u0000\u0000\u0000\u0471\u0472\u0001"+
55300 		"\u0000\u0000\u0000\u0472\u0011\u0001\u0000\u0000\u0000\u0473\u0474\u0005"+
55301 		"\u007f\u0000\u0000\u0474\u0479\u0007\u0001\u0000\u0000\u0475\u047a\u0003"+
55302 		"\u00f0x\u0000\u0476\u047a\u0003\u00f2y\u0000\u0477\u047a\u0003\u00f4z"+
55303 		"\u0000\u0478\u047a\u0003\u00f6{\u0000\u0479\u0475\u0001\u0000\u0000\u0000"+
55304 		"\u0479\u0476\u0001\u0000\u0000\u0000\u0479\u0477\u0001\u0000\u0000\u0000"+
55305 		"\u0479\u0478\u0001\u0000\u0000\u0000\u0479\u047a\u0001\u0000\u0000\u0000"+
55306 		"\u047a\u0013\u0001\u0000\u0000\u0000\u047b\u047d\u0005\u007f\u0000\u0000"+
55307 		"\u047c\u047e\u0005\u0234\u0000\u0000\u047d\u047c\u0001\u0000\u0000\u0000"+
55308 		"\u047d\u047e\u0001\u0000\u0000\u0000\u047e\u0015\u0001\u0000\u0000\u0000"+
55309 		"\u047f\u0480\u0005\u013f\u0000\u0000\u0480\u0483\u0007\u0001\u0000\u0000"+
55310 		"\u0481\u0484\u0003\u00f4z\u0000\u0482\u0484\u0003\u00f6{\u0000\u0483\u0481"+
55311 		"\u0001\u0000\u0000\u0000\u0483\u0482\u0001\u0000\u0000\u0000\u0484\u0017"+
55312 		"\u0001\u0000\u0000\u0000\u0485\u0486\u0005)\u0000\u0000\u0486\u0019\u0001"+
55313 		"\u0000\u0000\u0000\u0487\u048f\u0003\u001c\u000e\u0000\u0488\u048f\u0003"+
55314 		"\u001e\u000f\u0000\u0489\u048f\u0003 \u0010\u0000\u048a\u048f\u0003\""+
55315 		"\u0011\u0000\u048b\u048f\u0003$\u0012\u0000\u048c\u048f\u0003&\u0013\u0000"+
55316 		"\u048d\u048f\u0003(\u0014\u0000\u048e\u0487\u0001\u0000\u0000\u0000\u048e"+
55317 		"\u0488\u0001\u0000\u0000\u0000\u048e\u0489\u0001\u0000\u0000\u0000\u048e"+
55318 		"\u048a\u0001\u0000\u0000\u0000\u048e\u048b\u0001\u0000\u0000\u0000\u048e"+
55319 		"\u048c\u0001\u0000\u0000\u0000\u048e\u048d\u0001\u0000\u0000\u0000\u048f"+
55320 		"\u001b\u0001\u0000\u0000\u0000\u0490\u0491\u0007\u0002\u0000\u0000\u0491"+
55321 		"\u001d\u0001\u0000\u0000\u0000\u0492\u0494\u0007\u0003\u0000\u0000\u0493"+
55322 		"\u0492\u0001\u0000\u0000\u0000\u0493\u0494\u0001\u0000\u0000\u0000\u0494"+
55323 		"\u0495\u0001\u0000\u0000\u0000\u0495\u0496\u0005\u02d5\u0000\u0000\u0496"+
55324 		"\u001f\u0001\u0000\u0000\u0000\u0497\u0498\u0007\u0004\u0000\u0000\u0498"+
55325 		"\u049f\u0005\u02d4\u0000\u0000\u0499\u049a\u0005!\u0000\u0000\u049a\u049b"+
55326 		"\u0003*\u0015\u0000\u049b\u049c\u0005\u02d4\u0000\u0000\u049c\u049d\u0005"+
55327 		"\"\u0000\u0000\u049d\u049f\u0001\u0000\u0000\u0000\u049e\u0497\u0001\u0000"+
55328 		"\u0000\u0000\u049e\u0499\u0001\u0000\u0000\u0000\u049f!\u0001\u0000\u0000"+
55329 		"\u0000\u04a0\u04a1\u0005\u02d9\u0000\u0000\u04a1#\u0001\u0000\u0000\u0000"+
55330 		"\u04a2\u04a3\u0005\u02da\u0000\u0000\u04a3%\u0001\u0000\u0000\u0000\u04a4"+
55331 		"\u04a5\u0007\u0005\u0000\u0000\u04a5\'\u0001\u0000\u0000\u0000\u04a6\u04a7"+
55332 		"\u0005l\u0000\u0000\u04a7)\u0001\u0000\u0000\u0000\u04a8\u04ab\u0003,"+
55333 		"\u0016\u0000\u04a9\u04ab\u0003.\u0017\u0000\u04aa\u04a8\u0001\u0000\u0000"+
55334 		"\u0000\u04aa\u04a9\u0001\u0000\u0000\u0000\u04ab+\u0001\u0000\u0000\u0000"+
55335 		"\u04ac\u04af\u0005\u02d2\u0000\u0000\u04ad\u04af\u00030\u0018\u0000\u04ae"+
55336 		"\u04ac\u0001\u0000\u0000\u0000\u04ae\u04ad\u0001\u0000\u0000\u0000\u04af"+
55337 		"-\u0001\u0000\u0000\u0000\u04b0\u04b1\u0005\u02d3\u0000\u0000\u04b1/\u0001"+
55338 		"\u0000\u0000\u0000\u04b2\u04b3\u0007\u0006\u0000\u0000\u04b31\u0001\u0000"+
55339 		"\u0000\u0000\u04b4\u04b5\u0003*\u0015\u0000\u04b53\u0001\u0000\u0000\u0000"+
55340 		"\u04b6\u04b7\u0003*\u0015\u0000\u04b75\u0001\u0000\u0000\u0000\u04b8\u04b9"+
55341 		"\u0003L&\u0000\u04b9\u04ba\u0005\u0014\u0000\u0000\u04ba\u04bc\u0001\u0000"+
55342 		"\u0000\u0000\u04bb\u04b8\u0001\u0000\u0000\u0000\u04bb\u04bc\u0001\u0000"+
55343 		"\u0000\u0000\u04bc\u04bd\u0001\u0000\u0000\u0000\u04bd\u04be\u0003N\'"+
55344 		"\u0000\u04be7\u0001\u0000\u0000\u0000\u04bf\u04c0\u0003L&\u0000\u04c0"+
55345 		"\u04c1\u0005\u0014\u0000\u0000\u04c1\u04c3\u0001\u0000\u0000\u0000\u04c2"+
55346 		"\u04bf\u0001\u0000\u0000\u0000\u04c2\u04c3\u0001\u0000\u0000\u0000\u04c3"+
55347 		"\u04c4\u0001\u0000\u0000\u0000\u04c4\u04c7\u0003N\'\u0000\u04c5\u04c6"+
55348 		"\u0005+\u0000\u0000\u04c6\u04c8\u0003\u001e\u000f\u0000\u04c7\u04c5\u0001"+
55349 		"\u0000\u0000\u0000\u04c7\u04c8\u0001\u0000\u0000\u0000\u04c89\u0001\u0000"+
55350 		"\u0000\u0000\u04c9\u04ca\u0003L&\u0000\u04ca\u04cb\u0005\u0014\u0000\u0000"+
55351 		"\u04cb\u04cd\u0001\u0000\u0000\u0000\u04cc\u04c9\u0001\u0000\u0000\u0000"+
55352 		"\u04cc\u04cd\u0001\u0000\u0000\u0000\u04cd\u04ce\u0001\u0000\u0000\u0000"+
55353 		"\u04ce\u04cf\u0003N\'\u0000\u04cf;\u0001\u0000\u0000\u0000\u04d0\u04d1"+
55354 		"\u00034\u001a\u0000\u04d1\u04d2\u0005\u0014\u0000\u0000\u04d2\u04d4\u0001"+
55355 		"\u0000\u0000\u0000\u04d3\u04d0\u0001\u0000\u0000\u0000\u04d3\u04d4\u0001"+
55356 		"\u0000\u0000\u0000\u04d4\u04d5\u0001\u0000\u0000\u0000\u04d5\u04d6\u0003"+
55357 		"N\'\u0000\u04d6=\u0001\u0000\u0000\u0000\u04d7\u04d8\u00034\u001a\u0000"+
55358 		"\u04d8\u04d9\u0005\u0014\u0000\u0000\u04d9\u04db\u0001\u0000\u0000\u0000"+
55359 		"\u04da\u04d7\u0001\u0000\u0000\u0000\u04da\u04db\u0001\u0000\u0000\u0000"+
55360 		"\u04db\u04dc\u0001\u0000\u0000\u0000\u04dc";
55361 	private static final String _serializedATNSegment1 =
55362 		"\u04dd\u0003N\'\u0000\u04dd?\u0001\u0000\u0000\u0000\u04de\u04df\u0003"+
55363 		"2\u0019\u0000\u04df\u04e0\u0005\u0014\u0000\u0000\u04e0\u04e2\u0001\u0000"+
55364 		"\u0000\u0000\u04e1\u04de\u0001\u0000\u0000\u0000\u04e1\u04e2\u0001\u0000"+
55365 		"\u0000\u0000\u04e2\u04e4\u0001\u0000\u0000\u0000\u04e3\u04e5\u0003L&\u0000"+
55366 		"\u04e4\u04e3\u0001\u0000\u0000\u0000\u04e4\u04e5\u0001\u0000\u0000\u0000"+
55367 		"\u04e5\u04e6\u0001\u0000\u0000\u0000\u04e6\u04e8\u0005\u0014\u0000\u0000"+
55368 		"\u04e7\u04e1\u0001\u0000\u0000\u0000\u04e7\u04e8\u0001\u0000\u0000\u0000"+
55369 		"\u04e8\u04e9\u0001\u0000\u0000\u0000\u04e9\u04ea\u0003N\'\u0000\u04ea"+
55370 		"A\u0001\u0000\u0000\u0000\u04eb\u04ec\u00034\u001a\u0000\u04ec\u04ed\u0005"+
55371 		"\u0014\u0000\u0000\u04ed\u04ef\u0001\u0000\u0000\u0000\u04ee\u04eb\u0001"+
55372 		"\u0000\u0000\u0000\u04ee\u04ef\u0001\u0000\u0000\u0000\u04ef\u04f0\u0001"+
55373 		"\u0000\u0000\u0000\u04f0\u04f1\u0003N\'\u0000\u04f1C\u0001\u0000\u0000"+
55374 		"\u0000\u04f2\u04f3\u0003N\'\u0000\u04f3E\u0001\u0000\u0000\u0000\u04f4"+
55375 		"\u04f5\u0003N\'\u0000\u04f5G\u0001\u0000\u0000\u0000\u04f6\u04f7\u0003"+
55376 		"2\u0019\u0000\u04f7\u04f8\u0005\u0014\u0000\u0000\u04f8\u04fa\u0001\u0000"+
55377 		"\u0000\u0000\u04f9\u04f6\u0001\u0000\u0000\u0000\u04f9\u04fa\u0001\u0000"+
55378 		"\u0000\u0000\u04fa\u04fb\u0001\u0000\u0000\u0000\u04fb\u04fc\u0003L&\u0000"+
55379 		"\u04fc\u04fd\u0005\u0014\u0000\u0000\u04fd\u04ff\u0001\u0000\u0000\u0000"+
55380 		"\u04fe\u04f9\u0001\u0000\u0000\u0000\u04fe\u04ff\u0001\u0000\u0000\u0000"+
55381 		"\u04ff\u0502\u0001\u0000\u0000\u0000\u0500\u0503\u0003N\'\u0000\u0501"+
55382 		"\u0503\u0003J%\u0000\u0502\u0500\u0001\u0000\u0000\u0000\u0502\u0501\u0001"+
55383 		"\u0000\u0000\u0000\u0503I\u0001\u0000\u0000\u0000\u0504\u0505\u0005,\u0000"+
55384 		"\u0000\u0505\u0506\u0005\u001f\u0000\u0000\u0506\u0507\u0003N\'\u0000"+
55385 		"\u0507\u0508\u0005 \u0000\u0000\u0508K\u0001\u0000\u0000\u0000\u0509\u050a"+
55386 		"\u0003*\u0015\u0000\u050aM\u0001\u0000\u0000\u0000\u050b\u050c\u0003*"+
55387 		"\u0015\u0000\u050cO\u0001\u0000\u0000\u0000\u050d\u050e\u0005\u001f\u0000"+
55388 		"\u0000\u050e\u0513\u0003H$\u0000\u050f\u0510\u0005%\u0000\u0000\u0510"+
55389 		"\u0512\u0003H$\u0000\u0511\u050f\u0001\u0000\u0000\u0000\u0512\u0515\u0001"+
55390 		"\u0000\u0000\u0000\u0513\u0511\u0001\u0000\u0000\u0000\u0513\u0514\u0001"+
55391 		"\u0000\u0000\u0000\u0514\u0516\u0001\u0000\u0000\u0000\u0515\u0513\u0001"+
55392 		"\u0000\u0000\u0000\u0516\u0517\u0005 \u0000\u0000\u0517Q\u0001\u0000\u0000"+
55393 		"\u0000\u0518\u0519\u0005\u001f\u0000\u0000\u0519\u051e\u0003\u00ccf\u0000"+
55394 		"\u051a\u051b\u0005%\u0000\u0000\u051b\u051d\u0003\u00ccf\u0000\u051c\u051a"+
55395 		"\u0001\u0000\u0000\u0000\u051d\u0520\u0001\u0000\u0000\u0000\u051e\u051c"+
55396 		"\u0001\u0000\u0000\u0000\u051e\u051f\u0001\u0000\u0000\u0000\u051f\u0521"+
55397 		"\u0001\u0000\u0000\u0000\u0520\u051e\u0001\u0000\u0000\u0000\u0521\u0522"+
55398 		"\u0005 \u0000\u0000\u0522S\u0001\u0000\u0000\u0000\u0523\u0525\u0005\u001f"+
55399 		"\u0000\u0000\u0524\u0523\u0001\u0000\u0000\u0000\u0524\u0525\u0001\u0000"+
55400 		"\u0000\u0000\u0525\u0526\u0001\u0000\u0000\u0000\u0526\u052b\u0003@ \u0000"+
55401 		"\u0527\u0528\u0005%\u0000\u0000\u0528\u052a\u0003@ \u0000\u0529\u0527"+
55402 		"\u0001\u0000\u0000\u0000\u052a\u052d\u0001\u0000\u0000\u0000\u052b\u0529"+
55403 		"\u0001\u0000\u0000\u0000\u052b\u052c\u0001\u0000\u0000\u0000\u052c\u052f"+
55404 		"\u0001\u0000\u0000\u0000\u052d\u052b\u0001\u0000\u0000\u0000\u052e\u0530"+
55405 		"\u0005 \u0000\u0000\u052f\u052e\u0001\u0000\u0000\u0000\u052f\u0530\u0001"+
55406 		"\u0000\u0000\u0000\u0530U\u0001\u0000\u0000\u0000\u0531\u0532\u0003*\u0015"+
55407 		"\u0000\u0532W\u0001\u0000\u0000\u0000\u0533\u0534\u0003*\u0015\u0000\u0534"+
55408 		"Y\u0001\u0000\u0000\u0000\u0535\u0536\u0007\u0007\u0000\u0000\u0536[\u0001"+
55409 		"\u0000\u0000\u0000\u0537\u053b\u0003*\u0015\u0000\u0538\u053b\u0005\u02d4"+
55410 		"\u0000\u0000\u0539\u053b\u0005\u02db\u0000\u0000\u053a\u0537\u0001\u0000"+
55411 		"\u0000\u0000\u053a\u0538\u0001\u0000\u0000\u0000\u053a\u0539\u0001\u0000"+
55412 		"\u0000\u0000\u053b]\u0001\u0000\u0000\u0000\u053c\u0542\u0005\u001f\u0000"+
55413 		"\u0000\u053d\u0540\u0005\u02d5\u0000\u0000\u053e\u053f\u0005%\u0000\u0000"+
55414 		"\u053f\u0541\u0005\u02d5\u0000\u0000\u0540\u053e\u0001\u0000\u0000\u0000"+
55415 		"\u0540\u0541\u0001\u0000\u0000\u0000\u0541\u0543\u0001\u0000\u0000\u0000"+
55416 		"\u0542\u053d\u0001\u0000\u0000\u0000\u0542\u0543\u0001\u0000\u0000\u0000"+
55417 		"\u0543\u0544\u0001\u0000\u0000\u0000\u0544\u0545\u0005 \u0000\u0000\u0545"+
55418 		"_\u0001\u0000\u0000\u0000\u0546\u0548\u0005@\u0000\u0000\u0547\u0546\u0001"+
55419 		"\u0000\u0000\u0000\u0547\u0548\u0001\u0000\u0000\u0000\u0548\u0549\u0001"+
55420 		"\u0000\u0000\u0000\u0549\u054a\u0005C\u0000\u0000\u054aa\u0001\u0000\u0000"+
55421 		"\u0000\u054b\u054c\u00061\uffff\uffff\u0000\u054c\u0555\u0003l6\u0000"+
55422 		"\u054d\u054e\u0003j5\u0000\u054e\u054f\u0003b1\u0002\u054f\u0555\u0001"+
55423 		"\u0000\u0000\u0000\u0550\u0551\u0005\u001f\u0000\u0000\u0551\u0552\u0003"+
55424 		"b1\u0000\u0552\u0553\u0005 \u0000\u0000\u0553\u0555\u0001\u0000\u0000"+
55425 		"\u0000\u0554\u054b\u0001\u0000\u0000\u0000\u0554\u054d\u0001\u0000\u0000"+
55426 		"\u0000\u0554\u0550\u0001\u0000\u0000\u0000\u0555\u0564\u0001\u0000\u0000"+
55427 		"\u0000\u0556\u0557\n\u0005\u0000\u0000\u0557\u0558\u0003d2\u0000\u0558"+
55428 		"\u0559\u0003b1\u0006\u0559\u0563\u0001\u0000\u0000\u0000\u055a\u055b\n"+
55429 		"\u0004\u0000\u0000\u055b\u055c\u0003f3\u0000\u055c\u055d\u0003b1\u0005"+
55430 		"\u055d\u0563\u0001\u0000\u0000\u0000\u055e\u055f\n\u0003\u0000\u0000\u055f"+
55431 		"\u0560\u0003h4\u0000\u0560\u0561\u0003b1\u0004\u0561\u0563\u0001\u0000"+
55432 		"\u0000\u0000\u0562\u0556\u0001\u0000\u0000\u0000\u0562\u055a\u0001\u0000"+
55433 		"\u0000\u0000\u0562\u055e\u0001\u0000\u0000\u0000\u0563\u0566\u0001\u0000"+
55434 		"\u0000\u0000\u0564\u0562\u0001\u0000\u0000\u0000\u0564\u0565\u0001\u0000"+
55435 		"\u0000\u0000\u0565c\u0001\u0000\u0000\u0000\u0566\u0564\u0001\u0000\u0000"+
55436 		"\u0000\u0567\u0568\u0007\b\u0000\u0000\u0568e\u0001\u0000\u0000\u0000"+
55437 		"\u0569\u056a\u0007\t\u0000\u0000\u056ag\u0001\u0000\u0000\u0000\u056b"+
55438 		"\u056d\u0005j\u0000\u0000\u056c\u056e\u0005k\u0000\u0000\u056d\u056c\u0001"+
55439 		"\u0000\u0000\u0000\u056d\u056e\u0001\u0000\u0000\u0000\u056e\u056f\u0001"+
55440 		"\u0000\u0000\u0000\u056f\u0570\u0005O\u0000\u0000\u0570\u0571\u0005U\u0000"+
55441 		"\u0000\u0571i\u0001\u0000\u0000\u0000\u0572\u0573\u0007\n\u0000\u0000"+
55442 		"\u0573k\u0001\u0000\u0000\u0000\u0574\u0575\u00066\uffff\uffff\u0000\u0575"+
55443 		"\u0576\u0003p8\u0000\u0576\u058b\u0001\u0000\u0000\u0000\u0577\u0578\n"+
55444 		"\u0005\u0000\u0000\u0578\u057a\u0005j\u0000\u0000\u0579\u057b\u0005k\u0000"+
55445 		"\u0000\u057a\u0579\u0001\u0000\u0000\u0000\u057a\u057b\u0001\u0000\u0000"+
55446 		"\u0000\u057b\u057c\u0001\u0000\u0000\u0000\u057c\u058a\u0007\u000b\u0000"+
55447 		"\u0000\u057d\u057e\n\u0004\u0000\u0000\u057e\u057f\u0005\u0016\u0000\u0000"+
55448 		"\u057f\u058a\u0003p8\u0000\u0580\u0581\n\u0003\u0000\u0000\u0581\u0582"+
55449 		"\u0003n7\u0000\u0582\u0583\u0003p8\u0000\u0583\u058a\u0001\u0000\u0000"+
55450 		"\u0000\u0584\u0585\n\u0002\u0000\u0000\u0585\u0586\u0003n7\u0000\u0586"+
55451 		"\u0587\u0007\f\u0000\u0000\u0587\u0588\u0003\u0306\u0183\u0000\u0588\u058a"+
55452 		"\u0001\u0000\u0000\u0000\u0589\u0577\u0001\u0000\u0000\u0000\u0589\u057d"+
55453 		"\u0001\u0000\u0000\u0000\u0589\u0580\u0001\u0000\u0000\u0000\u0589\u0584"+
55454 		"\u0001\u0000\u0000\u0000\u058a\u058d\u0001\u0000\u0000\u0000\u058b\u0589"+
55455 		"\u0001\u0000\u0000\u0000\u058b\u058c\u0001\u0000\u0000\u0000\u058cm\u0001"+
55456 		"\u0000\u0000\u0000\u058d\u058b\u0001\u0000\u0000\u0000\u058e\u058f\u0007"+
55457 		"\r\u0000\u0000\u058fo\u0001\u0000\u0000\u0000\u0590\u0592\u0003r9\u0000"+
55458 		"\u0591\u0593\u0005k\u0000\u0000\u0592\u0591\u0001\u0000\u0000\u0000\u0592"+
55459 		"\u0593\u0001\u0000\u0000\u0000\u0593\u0594\u0001\u0000\u0000\u0000\u0594"+
55460 		"\u0595\u0005q\u0000\u0000\u0595\u0596\u0003\u0306\u0183\u0000\u0596\u05bc"+
55461 		"\u0001\u0000\u0000\u0000\u0597\u0599\u0003r9\u0000\u0598\u059a\u0005k"+
55462 		"\u0000\u0000\u0599\u0598\u0001\u0000\u0000\u0000\u0599\u059a\u0001\u0000"+
55463 		"\u0000\u0000\u059a\u059b\u0001\u0000\u0000\u0000\u059b\u059c\u0005q\u0000"+
55464 		"\u0000\u059c\u059d\u0005\u001f\u0000\u0000\u059d\u05a2\u0003b1\u0000\u059e"+
55465 		"\u059f\u0005%\u0000\u0000\u059f\u05a1\u0003b1\u0000\u05a0\u059e\u0001"+
55466 		"\u0000\u0000\u0000\u05a1\u05a4\u0001\u0000\u0000\u0000\u05a2\u05a0\u0001"+
55467 		"\u0000\u0000\u0000\u05a2\u05a3\u0001\u0000\u0000\u0000\u05a3\u05a5\u0001"+
55468 		"\u0000\u0000\u0000\u05a4\u05a2\u0001\u0000\u0000\u0000\u05a5\u05a6\u0005"+
55469 		" \u0000\u0000\u05a6\u05bc\u0001\u0000\u0000\u0000\u05a7\u05a9\u0003r9"+
55470 		"\u0000\u05a8\u05aa\u0005k\u0000\u0000\u05a9\u05a8\u0001\u0000\u0000\u0000"+
55471 		"\u05a9\u05aa\u0001\u0000\u0000\u0000\u05aa\u05ab\u0001\u0000\u0000\u0000"+
55472 		"\u05ab\u05ac\u0005p\u0000\u0000\u05ac\u05ad\u0003r9\u0000\u05ad\u05ae"+
55473 		"\u0005h\u0000\u0000\u05ae\u05af\u0003p8\u0000\u05af\u05bc\u0001\u0000"+
55474 		"\u0000\u0000\u05b0\u05b2\u0003r9\u0000\u05b1\u05b3\u0005k\u0000\u0000"+
55475 		"\u05b2\u05b1\u0001\u0000\u0000\u0000\u05b2\u05b3\u0001\u0000\u0000\u0000"+
55476 		"\u05b3\u05b4\u0001\u0000\u0000\u0000\u05b4\u05b5\u0005t\u0000\u0000\u05b5"+
55477 		"\u05b8\u0003t:\u0000\u05b6\u05b7\u0005\u00f3\u0000\u0000\u05b7\u05b9\u0003"+
55478 		"t:\u0000\u05b8\u05b6\u0001\u0000\u0000\u0000\u05b8\u05b9\u0001\u0000\u0000"+
55479 		"\u0000\u05b9\u05bc\u0001\u0000\u0000\u0000\u05ba\u05bc\u0003r9\u0000\u05bb"+
55480 		"\u0590\u0001\u0000\u0000\u0000\u05bb\u0597\u0001\u0000\u0000\u0000\u05bb"+
55481 		"\u05a7\u0001\u0000\u0000\u0000\u05bb\u05b0\u0001\u0000\u0000\u0000\u05bb"+
55482 		"\u05ba\u0001\u0000\u0000\u0000\u05bcq\u0001\u0000\u0000\u0000\u05bd\u05be"+
55483 		"\u00069\uffff\uffff\u0000\u05be\u05bf\u0003t:\u0000\u05bf\u05e0\u0001"+
55484 		"\u0000\u0000\u0000\u05c0\u05c1\n\u000b\u0000\u0000\u05c1\u05c2\u0005\b"+
55485 		"\u0000\u0000\u05c2\u05df\u0003r9\f\u05c3\u05c4\n\n\u0000\u0000\u05c4\u05c5"+
55486 		"\u0005\t\u0000\u0000\u05c5\u05df\u0003r9\u000b\u05c6\u05c7\n\t\u0000\u0000"+
55487 		"\u05c7\u05c8\u0005\n\u0000\u0000\u05c8\u05df\u0003r9\n\u05c9\u05ca\n\b"+
55488 		"\u0000\u0000\u05ca\u05cb\u0005\u000b\u0000\u0000\u05cb\u05df\u0003r9\t"+
55489 		"\u05cc\u05cd\n\u0007\u0000\u0000\u05cd\u05ce\u0005\u000f\u0000\u0000\u05ce"+
55490 		"\u05df\u0003r9\b\u05cf\u05d0\n\u0006\u0000\u0000\u05d0\u05d1\u0005\u0010"+
55491 		"\u0000\u0000\u05d1\u05df\u0003r9\u0007\u05d2\u05d3\n\u0005\u0000\u0000"+
55492 		"\u05d3\u05d4\u0005\u0011\u0000\u0000\u05d4\u05df\u0003r9\u0006\u05d5\u05d6"+
55493 		"\n\u0004\u0000\u0000\u05d6\u05d7\u0005\u0012\u0000\u0000\u05d7\u05df\u0003"+
55494 		"r9\u0005\u05d8\u05d9\n\u0003\u0000\u0000\u05d9\u05da\u0005\r\u0000\u0000"+
55495 		"\u05da\u05df\u0003r9\u0004\u05db\u05dc\n\u0002\u0000\u0000\u05dc\u05dd"+
55496 		"\u0005\f\u0000\u0000\u05dd\u05df\u0003r9\u0003\u05de\u05c0\u0001\u0000"+
55497 		"\u0000\u0000\u05de\u05c3\u0001\u0000\u0000\u0000\u05de\u05c6\u0001\u0000"+
55498 		"\u0000\u0000\u05de\u05c9\u0001\u0000\u0000\u0000\u05de\u05cc\u0001\u0000"+
55499 		"\u0000\u0000\u05de\u05cf\u0001\u0000\u0000\u0000\u05de\u05d2\u0001\u0000"+
55500 		"\u0000\u0000\u05de\u05d5\u0001\u0000\u0000\u0000\u05de\u05d8\u0001\u0000"+
55501 		"\u0000\u0000\u05de\u05db\u0001\u0000\u0000\u0000\u05df\u05e2\u0001\u0000"+
55502 		"\u0000\u0000\u05e0\u05de\u0001\u0000\u0000\u0000\u05e0\u05e1\u0001\u0000"+
55503 		"\u0000\u0000\u05e1s\u0001\u0000\u0000\u0000\u05e2\u05e0\u0001\u0000\u0000"+
55504 		"\u0000\u05e3\u05e4\u0006:\uffff\uffff\u0000\u05e4\u061f\u0003v;\u0000"+
55505 		"\u05e5\u061f\u0003\u0018\f\u0000\u05e6\u061f\u0003\u001a\r\u0000\u05e7"+
55506 		"\u061f\u0003H$\u0000\u05e8\u061f\u0003\u00ecv\u0000\u05e9\u05ea\u0007"+
55507 		"\u000e\u0000\u0000\u05ea\u061f\u0003t:\b\u05eb\u05ec\u0005\u009b\u0000"+
55508 		"\u0000\u05ec\u05ee\u0005\u00cf\u0000\u0000\u05ed\u05ef\u0005\u026a\u0000"+
55509 		"\u0000\u05ee\u05ed\u0001\u0000\u0000\u0000\u05ee\u05ef\u0001\u0000\u0000"+
55510 		"\u0000\u05ef\u05f0\u0001\u0000\u0000\u0000\u05f0\u061f\u0003b1\u0000\u05f1"+
55511 		"\u05f3\u0005\u00f9\u0000\u0000\u05f2\u05f1\u0001\u0000\u0000\u0000\u05f2"+
55512 		"\u05f3\u0001\u0000\u0000\u0000\u05f3\u05f4\u0001\u0000\u0000\u0000\u05f4"+
55513 		"\u05f5\u0005\u001f\u0000\u0000\u05f5\u05fa\u0003b1\u0000\u05f6\u05f7\u0005"+
55514 		"%\u0000\u0000\u05f7\u05f9\u0003b1\u0000\u05f8\u05f6\u0001\u0000\u0000"+
55515 		"\u0000\u05f9\u05fc\u0001\u0000\u0000\u0000\u05fa\u05f8\u0001\u0000\u0000"+
55516 		"\u0000\u05fa\u05fb\u0001\u0000\u0000\u0000\u05fb\u05fd\u0001\u0000\u0000"+
55517 		"\u0000\u05fc\u05fa\u0001\u0000\u0000\u0000\u05fd\u05fe\u0005 \u0000\u0000"+
55518 		"\u05fe\u061f\u0001\u0000\u0000\u0000\u05ff\u0601\u0005o\u0000\u0000\u0600"+
55519 		"\u05ff\u0001\u0000\u0000\u0000\u0600\u0601\u0001\u0000\u0000\u0000\u0601"+
55520 		"\u0602\u0001\u0000\u0000\u0000\u0602\u061f\u0003\u0306\u0183\u0000\u0603"+
55521 		"\u0604\u0005#\u0000\u0000\u0604\u0605\u0003b1\u0000\u0605\u0606\u0005"+
55522 		"$\u0000\u0000\u0606\u061f\u0001\u0000\u0000\u0000\u0607\u0608\u0005!\u0000"+
55523 		"\u0000\u0608\u060d\u0003b1\u0000\u0609\u060a\u0005\u0014\u0000\u0000\u060a"+
55524 		"\u060c\u0003b1\u0000\u060b\u0609\u0001\u0000\u0000\u0000\u060c\u060f\u0001"+
55525 		"\u0000\u0000\u0000\u060d\u060b\u0001\u0000\u0000\u0000\u060d\u060e\u0001"+
55526 		"\u0000\u0000\u0000\u060e\u0614\u0001\u0000\u0000\u0000\u060f\u060d\u0001"+
55527 		"\u0000\u0000\u0000\u0610\u0611\u0005%\u0000\u0000\u0611\u0613\u0003b1"+
55528 		"\u0000\u0612\u0610\u0001\u0000\u0000\u0000\u0613\u0616\u0001\u0000\u0000"+
55529 		"\u0000\u0614\u0612\u0001\u0000\u0000\u0000\u0614\u0615\u0001\u0000\u0000"+
55530 		"\u0000\u0615\u0617\u0001\u0000\u0000\u0000\u0616\u0614\u0001\u0000\u0000"+
55531 		"\u0000\u0617\u061a\u0005\"\u0000\u0000\u0618\u0619\u0005a\u0000\u0000"+
55532 		"\u0619\u061b\u0007\u000f\u0000\u0000\u061a\u0618\u0001\u0000\u0000\u0000"+
55533 		"\u061a\u061b\u0001\u0000\u0000\u0000\u061b\u061f\u0001\u0000\u0000\u0000"+
55534 		"\u061c\u061f\u0003\u00a2Q\u0000\u061d\u061f\u0003\u00a8T\u0000\u061e\u05e3"+
55535 		"\u0001\u0000\u0000\u0000\u061e\u05e5\u0001\u0000\u0000\u0000\u061e\u05e6"+
55536 		"\u0001\u0000\u0000\u0000\u061e\u05e7\u0001\u0000\u0000\u0000\u061e\u05e8"+
55537 		"\u0001\u0000\u0000\u0000\u061e\u05e9\u0001\u0000\u0000\u0000\u061e\u05eb"+
55538 		"\u0001\u0000\u0000\u0000\u061e\u05f2\u0001\u0000\u0000\u0000\u061e\u0600"+
55539 		"\u0001\u0000\u0000\u0000\u061e\u0603\u0001\u0000\u0000\u0000\u061e\u0607"+
55540 		"\u0001\u0000\u0000\u0000\u061e\u061c\u0001\u0000\u0000\u0000\u061e\u061d"+
55541 		"\u0001\u0000\u0000\u0000\u061f\u0625\u0001\u0000\u0000\u0000\u0620\u0621"+
55542 		"\n\t\u0000\u0000\u0621\u0622\u0005\u0005\u0000\u0000\u0622\u0624\u0003"+
55543 		"t:\n\u0623\u0620\u0001\u0000\u0000\u0000\u0624\u0627\u0001\u0000\u0000"+
55544 		"\u0000\u0625\u0623\u0001\u0000\u0000\u0000\u0625\u0626\u0001\u0000\u0000"+
55545 		"\u0000\u0626u\u0001\u0000\u0000\u0000\u0627\u0625\u0001\u0000\u0000\u0000"+
55546 		"\u0628\u062c\u0003x<\u0000\u0629\u062c\u0003~?\u0000\u062a\u062c\u0003"+
55547 		"\u009eO\u0000\u062b\u0628\u0001\u0000\u0000\u0000\u062b\u0629\u0001\u0000"+
55548 		"\u0000\u0000\u062b\u062a\u0001\u0000\u0000\u0000\u062cw\u0001\u0000\u0000"+
55549 		"\u0000\u062d\u062e\u0003z=\u0000\u062e\u0630\u0005\u001f\u0000\u0000\u062f"+
55550 		"\u0631\u0003|>\u0000\u0630\u062f\u0001\u0000\u0000\u0000\u0630\u0631\u0001"+
55551 		"\u0000\u0000\u0000\u0631\u063b\u0001\u0000\u0000\u0000\u0632\u0637\u0003"+
55552 		"b1\u0000\u0633\u0634\u0005%\u0000\u0000\u0634\u0636\u0003b1\u0000\u0635"+
55553 		"\u0633\u0001\u0000\u0000\u0000\u0636\u0639\u0001\u0000\u0000\u0000\u0637"+
55554 		"\u0635\u0001\u0000\u0000\u0000\u0637\u0638\u0001\u0000\u0000\u0000\u0638"+
55555 		"\u063c\u0001\u0000\u0000\u0000\u0639\u0637\u0001\u0000\u0000\u0000\u063a"+
55556 		"\u063c\u0005\u0011\u0000\u0000\u063b\u0632\u0001\u0000\u0000\u0000\u063b"+
55557 		"\u063a\u0001\u0000\u0000\u0000\u063b\u063c\u0001\u0000\u0000\u0000\u063c"+
55558 		"\u063d\u0001\u0000\u0000\u0000\u063d\u063e\u0005 \u0000\u0000\u063ey\u0001"+
55559 		"\u0000\u0000\u0000\u063f\u0640\u0007\u0010\u0000\u0000\u0640{\u0001\u0000"+
55560 		"\u0000\u0000\u0641\u0642\u0005O\u0000\u0000\u0642}\u0001\u0000\u0000\u0000"+
55561 		"\u0643\u064c\u0003\u0084B\u0000\u0644\u064c\u0003\u0094J\u0000\u0645\u064c"+
55562 		"\u0003\u0096K\u0000\u0646\u064c\u0003\u008aE\u0000\u0647\u064c\u0003\u009c"+
55563 		"N\u0000\u0648\u064c\u0003\u00b8\\\u0000\u0649\u064c\u0003\u0082A\u0000"+
55564 		"\u064a\u064c\u0003\u0080@\u0000\u064b\u0643\u0001\u0000\u0000\u0000\u064b"+
55565 		"\u0644\u0001\u0000\u0000\u0000\u064b\u0645\u0001\u0000\u0000\u0000\u064b"+
55566 		"\u0646\u0001\u0000\u0000\u0000\u064b\u0647\u0001\u0000\u0000\u0000\u064b"+
55567 		"\u0648\u0001\u0000\u0000\u0000\u064b\u0649\u0001\u0000\u0000\u0000\u064b"+
55568 		"\u064a\u0001\u0000\u0000\u0000\u064c\u007f\u0001\u0000\u0000\u0000\u064d"+
55569 		"\u064e\u0005\u00f0\u0000\u0000\u064e\u064f\u0005\u001f\u0000\u0000\u064f"+
55570 		"\u0650\u0003b1\u0000\u0650\u0651\u0005%\u0000\u0000\u0651\u0652\u0003"+
55571 		"b1\u0000\u0652\u0653\u0005 \u0000\u0000\u0653\u0656\u0001\u0000\u0000"+
55572 		"\u0000\u0654\u0655\u0005\u0014\u0000\u0000\u0655\u0657\u0003@ \u0000\u0656"+
55573 		"\u0654\u0001\u0000\u0000\u0000\u0656\u0657\u0001\u0000\u0000\u0000\u0657"+
55574 		"\u0081\u0001\u0000\u0000\u0000\u0658\u0659\u0007\u0011\u0000\u0000\u0659"+
55575 		"\u065a\u0005\u001f\u0000\u0000\u065a\u065b\u0003b1\u0000\u065b\u065c\u0005"+
55576 		" \u0000\u0000\u065c\u065d\u0005\u00ef\u0000\u0000\u065d\u065e\u0005v\u0000"+
55577 		"\u0000\u065e\u065f\u0005\u001f\u0000\u0000\u065f\u0660\u0005u\u0000\u0000"+
55578 		"\u0660\u0661\u0005w\u0000\u0000\u0661\u0663\u0003b1\u0000\u0662\u0664"+
55579 		"\u0007\u0012\u0000\u0000\u0663\u0662\u0001\u0000\u0000\u0000\u0663\u0664"+
55580 		"\u0001\u0000\u0000\u0000\u0664\u0665\u0001\u0000\u0000\u0000\u0665\u0666"+
55581 		"\u0005 \u0000\u0000\u0666\u0083\u0001\u0000\u0000\u0000\u0667\u066a\u0003"+
55582 		"\u0086C\u0000\u0668\u066a\u0003\u0088D\u0000\u0669\u0667\u0001\u0000\u0000"+
55583 		"\u0000\u0669\u0668\u0001\u0000\u0000\u0000\u066a\u0085\u0001\u0000\u0000"+
55584 		"\u0000\u066b\u066c\u0007\u0013\u0000\u0000\u066c\u066d\u0005\u001f\u0000"+
55585 		"\u0000\u066d\u066e\u0003b1\u0000\u066e\u066f\u0005`\u0000\u0000\u066f"+
55586 		"\u0670\u0003\u00aeW\u0000\u0670\u0671\u0005 \u0000\u0000\u0671\u0087\u0001"+
55587 		"\u0000\u0000\u0000\u0672\u0673\u0007\u0014\u0000\u0000\u0673\u0674\u0005"+
55588 		"\u001f\u0000\u0000\u0674\u0675\u0003\u00aeW\u0000\u0675\u0676\u0005%\u0000"+
55589 		"\u0000\u0676\u0679\u0003b1\u0000\u0677\u0678\u0005%\u0000\u0000\u0678"+
55590 		"\u067a\u0005\u02d5\u0000\u0000\u0679\u0677\u0001\u0000\u0000\u0000\u0679"+
55591 		"\u067a\u0001\u0000\u0000\u0000\u067a\u067b\u0001\u0000\u0000\u0000\u067b"+
55592 		"\u067c\u0005 \u0000\u0000\u067c\u0089\u0001\u0000\u0000\u0000\u067d\u0680"+
55593 		"\u0003\u008cF\u0000\u067e\u0680\u0003\u008eG\u0000\u067f\u067d\u0001\u0000"+
55594 		"\u0000\u0000\u067f\u067e\u0001\u0000\u0000\u0000\u0680\u008b\u0001\u0000"+
55595 		"\u0000\u0000\u0681\u0682\u0005\u00e9\u0000\u0000\u0682\u068e\u0005\u001f"+
55596 		"\u0000\u0000\u0683\u0688\u0003\u0090H\u0000\u0684\u0685\u0005%\u0000\u0000"+
55597 		"\u0685\u0687\u0003\u0090H\u0000\u0686\u0684\u0001\u0000\u0000\u0000\u0687"+
55598 		"\u068a\u0001\u0000\u0000\u0000\u0688\u0686\u0001\u0000\u0000\u0000\u0688"+
55599 		"\u0689\u0001\u0000\u0000\u0000\u0689\u068c\u0001\u0000\u0000\u0000\u068a"+
55600 		"\u0688\u0001\u0000\u0000\u0000\u068b\u068d\u0003\u0092I\u0000\u068c\u068b"+
55601 		"\u0001\u0000\u0000\u0000\u068c\u068d\u0001\u0000\u0000\u0000\u068d\u068f"+
55602 		"\u0001\u0000\u0000\u0000\u068e\u0683\u0001\u0000\u0000\u0000\u068e\u068f"+
55603 		"\u0001\u0000\u0000\u0000\u068f\u0690\u0001\u0000\u0000\u0000\u0690\u0691"+
55604 		"\u0005 \u0000\u0000\u0691\u008d\u0001\u0000\u0000\u0000\u0692\u0693\u0005"+
55605 		"\u00ea\u0000\u0000\u0693\u0694\u0005\u001f\u0000\u0000\u0694\u0699\u0003"+
55606 		"b1\u0000\u0695\u0696\u0005%\u0000\u0000\u0696\u0698\u0003b1\u0000\u0697"+
55607 		"\u0695\u0001\u0000\u0000\u0000\u0698\u069b\u0001\u0000\u0000\u0000\u0699"+
55608 		"\u0697\u0001\u0000\u0000\u0000\u0699\u069a\u0001\u0000\u0000\u0000\u069a"+
55609 		"\u069d\u0001\u0000\u0000\u0000\u069b\u0699\u0001\u0000\u0000\u0000\u069c"+
55610 		"\u069e\u0003\u0092I\u0000\u069d\u069c\u0001\u0000\u0000\u0000\u069d\u069e"+
55611 		"\u0001\u0000\u0000\u0000\u069e\u069f\u0001\u0000\u0000\u0000\u069f\u06a0"+
55612 		"\u0005 \u0000\u0000\u06a0\u008f\u0001\u0000\u0000\u0000\u06a1\u06a2\u0003"+
55613 		"b1\u0000\u06a2\u06a3\u0005\u000e\u0000\u0000\u06a3\u06a4\u0003b1\u0000"+
55614 		"\u06a4\u0091\u0001\u0000\u0000\u0000\u06a5\u06a6\u0005l\u0000\u0000\u06a6"+
55615 		"\u06a7\u0005a\u0000\u0000\u06a7\u06ac\u0005l\u0000\u0000\u06a8\u06a9\u0005"+
55616 		"\u02be\u0000\u0000\u06a9\u06aa\u0005a\u0000\u0000\u06aa\u06ac\u0005l\u0000"+
55617 		"\u0000\u06ab\u06a5\u0001\u0000\u0000\u0000\u06ab\u06a8\u0001\u0000\u0000"+
55618 		"\u0000\u06ac\u0093\u0001\u0000\u0000\u0000\u06ad\u06ae\u0005\u0083\u0000"+
55619 		"\u0000\u06ae\u06af\u0005\u001f\u0000\u0000\u06af\u06b4\u0003b1\u0000\u06b0"+
55620 		"\u06b1\u0005%\u0000\u0000\u06b1\u06b3\u0003b1\u0000\u06b2\u06b0\u0001"+
55621 		"\u0000\u0000\u0000\u06b3\u06b6\u0001\u0000\u0000\u0000\u06b4\u06b2\u0001"+
55622 		"\u0000\u0000\u0000\u06b4\u06b5\u0001\u0000\u0000\u0000\u06b5\u06b9\u0001"+
55623 		"\u0000\u0000\u0000\u06b6\u06b4\u0001\u0000\u0000\u0000\u06b7\u06b8\u0005"+
55624 		"^\u0000\u0000\u06b8\u06ba\u0003\u00e6s\u0000\u06b9\u06b7\u0001\u0000\u0000"+
55625 		"\u0000\u06b9\u06ba\u0001\u0000\u0000\u0000\u06ba\u06bb\u0001\u0000\u0000"+
55626 		"\u0000\u06bb\u06bc\u0005 \u0000\u0000\u06bc\u0095\u0001\u0000\u0000\u0000"+
55627 		"\u06bd\u06be\u0005\u02ce\u0000\u0000\u06be\u06bf\u0005\u001f\u0000\u0000"+
55628 		"\u06bf\u06c2\u0003b1\u0000\u06c0\u06c1\u0005%\u0000\u0000\u06c1\u06c3"+
55629 		"\u0003b1\u0000\u06c2\u06c0\u0001\u0000\u0000\u0000\u06c2\u06c3\u0001\u0000"+
55630 		"\u0000\u0000\u06c3\u06c4\u0001\u0000\u0000\u0000\u06c4\u06c6\u0005 \u0000"+
55631 		"\u0000\u06c5\u06c7\u0003\u0098L\u0000\u06c6\u06c5\u0001\u0000\u0000\u0000"+
55632 		"\u06c6\u06c7\u0001\u0000\u0000\u0000\u06c7\u0097\u0001\u0000\u0000\u0000"+
55633 		"\u06c8\u06c9\u0005M\u0000\u0000\u06c9\u06ca\u0005\u001f\u0000\u0000\u06ca"+
55634 		"\u06cf\u0003\u009aM\u0000\u06cb\u06cc\u0005%\u0000\u0000\u06cc\u06ce\u0003"+
55635 		"\u009aM\u0000\u06cd\u06cb\u0001\u0000\u0000\u0000\u06ce\u06d1\u0001\u0000"+
55636 		"\u0000\u0000\u06cf\u06cd\u0001\u0000\u0000\u0000\u06cf\u06d0\u0001\u0000"+
55637 		"\u0000\u0000\u06d0\u06d2\u0001\u0000\u0000\u0000\u06d1\u06cf\u0001\u0000"+
55638 		"\u0000\u0000\u06d2\u06d3\u0005 \u0000\u0000\u06d3\u0099\u0001\u0000\u0000"+
55639 		"\u0000\u06d4\u06d5\u0003H$\u0000\u06d5\u06d7\u0003\u00aeW\u0000\u06d6"+
55640 		"\u06d8\u0003b1\u0000\u06d7\u06d6\u0001\u0000\u0000\u0000\u06d7\u06d8\u0001"+
55641 		"\u0000\u0000\u0000\u06d8\u06db\u0001\u0000\u0000\u0000\u06d9\u06da\u0005"+
55642 		"`\u0000\u0000\u06da\u06dc\u0005\u02c3\u0000\u0000\u06db\u06d9\u0001\u0000"+
55643 		"\u0000\u0000\u06db\u06dc\u0001\u0000\u0000\u0000\u06dc\u009b\u0001\u0000"+
55644 		"\u0000\u0000\u06dd\u06de\u0005\u02cf\u0000\u0000\u06de\u06df\u0005\u001f"+
55645 		"\u0000\u0000\u06df\u06e0\u0003b1\u0000\u06e0\u06e8\u0005%\u0000\u0000"+
55646 		"\u06e1\u06e2\u0003b1\u0000\u06e2\u06e3\u0005+\u0000\u0000\u06e3\u06e4"+
55647 		"\u0003b1\u0000\u06e4\u06e5\u0005+\u0000\u0000\u06e5\u06e6\u0003b1\u0000"+
55648 		"\u06e6\u06e9\u0001\u0000\u0000\u0000\u06e7\u06e9\u0003b1\u0000\u06e8\u06e1"+
55649 		"\u0001\u0000\u0000\u0000\u06e8\u06e7\u0001\u0000\u0000\u0000\u06e9\u06ea"+
55650 		"\u0001\u0000\u0000\u0000\u06ea\u06ed\u0005%\u0000\u0000\u06eb\u06ee\u0003"+
55651 		"@ \u0000\u06ec\u06ee\u0003b1\u0000\u06ed\u06eb\u0001\u0000\u0000\u0000"+
55652 		"\u06ed\u06ec\u0001\u0000\u0000\u0000\u06ee\u06ef\u0001\u0000\u0000\u0000"+
55653 		"\u06ef\u06f0\u0005 \u0000\u0000\u06f0\u06ff\u0001\u0000\u0000\u0000\u06f1"+
55654 		"\u06f2\u0005\u02cf\u0000\u0000\u06f2\u06f3\u0005\u001f\u0000\u0000\u06f3"+
55655 		"\u06f4\u0005\u016c\u0000\u0000\u06f4\u06f9\u0003b1\u0000\u06f5\u06f6\u0005"+
55656 		"%\u0000\u0000\u06f6\u06f8\u0003b1\u0000\u06f7\u06f5\u0001\u0000\u0000"+
55657 		"\u0000\u06f8\u06fb\u0001\u0000\u0000\u0000\u06f9\u06f7\u0001\u0000\u0000"+
55658 		"\u0000\u06f9\u06fa\u0001\u0000\u0000\u0000\u06fa\u06fc\u0001\u0000\u0000"+
55659 		"\u0000\u06fb\u06f9\u0001\u0000\u0000\u0000\u06fc\u06fd\u0005 \u0000\u0000"+
55660 		"\u06fd\u06ff\u0001\u0000\u0000\u0000\u06fe\u06dd\u0001\u0000\u0000\u0000"+
55661 		"\u06fe\u06f1\u0001\u0000\u0000\u0000\u06ff\u009d\u0001\u0000\u0000\u0000"+
55662 		"\u0700\u0701\u0003\u00a0P\u0000\u0701\u070b\u0005\u001f\u0000\u0000\u0702"+
55663 		"\u0707\u0003b1\u0000\u0703\u0704\u0005%\u0000\u0000\u0704\u0706\u0003"+
55664 		"b1\u0000\u0705\u0703\u0001\u0000\u0000\u0000\u0706\u0709\u0001\u0000\u0000"+
55665 		"\u0000\u0707\u0705\u0001\u0000\u0000\u0000\u0707\u0708\u0001\u0000\u0000"+
55666 		"\u0000\u0708\u070c\u0001\u0000\u0000\u0000\u0709\u0707\u0001\u0000\u0000"+
55667 		"\u0000\u070a\u070c\u0005\u0011\u0000\u0000\u070b\u0702\u0001\u0000\u0000"+
55668 		"\u0000\u070b\u070a\u0001\u0000\u0000\u0000\u070b\u070c\u0001\u0000\u0000"+
55669 		"\u0000\u070c\u070d\u0001\u0000\u0000\u0000\u070d\u070e\u0005 \u0000\u0000"+
55670 		"\u070e\u009f\u0001\u0000\u0000\u0000\u070f\u0710\u0003L&\u0000\u0710\u0711"+
55671 		"\u0005\u0014\u0000\u0000\u0711\u0713\u0001\u0000\u0000\u0000\u0712\u070f"+
55672 		"\u0001\u0000\u0000\u0000\u0712\u0713\u0001\u0000\u0000\u0000\u0713\u0714"+
55673 		"\u0001\u0000\u0000\u0000\u0714\u071a\u0003*\u0015\u0000\u0715\u071a\u0005"+
55674 		"c\u0000\u0000\u0716\u071a\u0005\u008a\u0000\u0000\u0717\u071a\u0005\u008b"+
55675 		"\u0000\u0000\u0718\u071a\u0005\u0086\u0000\u0000\u0719\u0712\u0001\u0000"+
55676 		"\u0000\u0000\u0719\u0715\u0001\u0000\u0000\u0000\u0719\u0716\u0001\u0000"+
55677 		"\u0000\u0000\u0719\u0717\u0001\u0000\u0000\u0000\u0719\u0718\u0001\u0000"+
55678 		"\u0000\u0000\u071a\u00a1\u0001\u0000\u0000\u0000\u071b\u071d\u0005P\u0000"+
55679 		"\u0000\u071c\u071e\u0003t:\u0000\u071d\u071c\u0001\u0000\u0000\u0000\u071d"+
55680 		"\u071e\u0001\u0000\u0000\u0000\u071e\u0720\u0001\u0000\u0000\u0000\u071f"+
55681 		"\u0721\u0003\u00a4R\u0000\u0720\u071f\u0001\u0000\u0000\u0000\u0721\u0722"+
55682 		"\u0001\u0000\u0000\u0000\u0722\u0720\u0001\u0000\u0000\u0000\u0722\u0723"+
55683 		"\u0001\u0000\u0000\u0000\u0723\u0725\u0001\u0000\u0000\u0000\u0724\u0726"+
55684 		"\u0003\u00a6S\u0000\u0725\u0724\u0001\u0000\u0000\u0000\u0725\u0726\u0001"+
55685 		"\u0000\u0000\u0000\u0726\u0727\u0001\u0000\u0000\u0000\u0727\u0728\u0005"+
55686 		"\u011e\u0000\u0000\u0728\u00a3\u0001\u0000\u0000\u0000\u0729\u072a\u0005"+
55687 		"Q\u0000\u0000\u072a\u072b\u0003b1\u0000\u072b\u072c\u0005e\u0000\u0000"+
55688 		"\u072c\u072d\u0003b1\u0000\u072d\u00a5\u0001\u0000\u0000\u0000\u072e\u072f"+
55689 		"\u0005d\u0000\u0000\u072f\u0730\u0003b1\u0000\u0730\u00a7\u0001\u0000"+
55690 		"\u0000\u0000\u0731\u0736\u0003\u00b8\\\u0000\u0732\u0736\u0003\u00b2Y"+
55691 		"\u0000\u0733\u0736\u0003\u00b4Z\u0000\u0734\u0736\u0003\u00b6[\u0000\u0735"+
55692 		"\u0731\u0001\u0000\u0000\u0000\u0735\u0732\u0001\u0000\u0000\u0000\u0735"+
55693 		"\u0733\u0001\u0000\u0000\u0000\u0735\u0734\u0001\u0000\u0000\u0000\u0736"+
55694 		"\u00a9\u0001\u0000\u0000\u0000\u0737\u0738\u0005u\u0000\u0000\u0738\u0739"+
55695 		"\u0005w\u0000\u0000\u0739\u073e\u0003\u00acV\u0000\u073a\u073b\u0005%"+
55696 		"\u0000\u0000\u073b\u073d\u0003\u00acV\u0000\u073c\u073a\u0001\u0000\u0000"+
55697 		"\u0000\u073d\u0740\u0001\u0000\u0000\u0000\u073e\u073c\u0001\u0000\u0000"+
55698 		"\u0000\u073e\u073f\u0001\u0000\u0000\u0000\u073f\u074c\u0001\u0000\u0000"+
55699 		"\u0000\u0740\u073e\u0001\u0000\u0000\u0000\u0741\u0742\u0005|\u0000\u0000"+
55700 		"\u0742\u0743\u0003b1\u0000\u0743\u074a\u0007\u0015\u0000\u0000\u0744\u0745"+
55701 		"\u0005\u01bf\u0000\u0000\u0745\u0746\u0007\u0016\u0000\u0000\u0746\u0747"+
55702 		"\u0003b1\u0000\u0747\u0748\u0007\u0015\u0000\u0000\u0748\u0749\u0005\u01c1"+
55703 		"\u0000\u0000\u0749\u074b\u0001\u0000\u0000\u0000\u074a\u0744\u0001\u0000"+
55704 		"\u0000\u0000\u074a\u074b\u0001\u0000\u0000\u0000\u074b\u074d\u0001\u0000"+
55705 		"\u0000\u0000\u074c\u0741\u0001\u0000\u0000\u0000\u074c\u074d\u0001\u0000"+
55706 		"\u0000\u0000\u074d\u00ab\u0001\u0000\u0000\u0000\u074e\u0752\u0003H$\u0000"+
55707 		"\u074f\u0752\u0003\u001e\u000f\u0000\u0750\u0752\u0003b1\u0000\u0751\u074e"+
55708 		"\u0001\u0000\u0000\u0000\u0751\u074f\u0001\u0000\u0000\u0000\u0751\u0750"+
55709 		"\u0001\u0000\u0000\u0000\u0752\u0755\u0001\u0000\u0000\u0000\u0753\u0754"+
55710 		"\u0005\u010f\u0000\u0000\u0754\u0756\u0003*\u0015\u0000\u0755\u0753\u0001"+
55711 		"\u0000\u0000\u0000\u0755\u0756\u0001\u0000\u0000\u0000\u0756\u0758\u0001"+
55712 		"\u0000\u0000\u0000\u0757\u0759\u0007\u0012\u0000\u0000\u0758\u0757\u0001"+
55713 		"\u0000\u0000\u0000\u0758\u0759\u0001\u0000\u0000\u0000\u0759\u00ad\u0001"+
55714 		"\u0000\u0000\u0000\u075a\u075b\u0003\u00e6s\u0000\u075b\u075c\u0005\u0014"+
55715 		"\u0000\u0000\u075c\u075e\u0001\u0000\u0000\u0000\u075d\u075a\u0001\u0000"+
55716 		"\u0000\u0000\u075d\u075e\u0001\u0000\u0000\u0000\u075e\u075f\u0001\u0000"+
55717 		"\u0000\u0000\u075f\u076b\u0003\u00b0X\u0000\u0760\u076c\u0003^/\u0000"+
55718 		"\u0761\u0762\u0005\u001f\u0000\u0000\u0762\u0763\u0005\u0095\u0000\u0000"+
55719 		"\u0763\u076c\u0005 \u0000\u0000\u0764\u0766\u0005\u001f\u0000\u0000\u0765"+
55720 		"\u0767\u0007\u0017\u0000\u0000\u0766\u0765\u0001\u0000\u0000\u0000\u0766"+
55721 		"\u0767\u0001\u0000\u0000\u0000\u0767\u0768\u0001\u0000\u0000\u0000\u0768"+
55722 		"\u0769\u0003\u00e6s\u0000\u0769\u076a\u0005 \u0000\u0000\u076a\u076c\u0001"+
55723 		"\u0000\u0000\u0000\u076b\u0760\u0001\u0000\u0000\u0000\u076b\u0761\u0001"+
55724 		"\u0000\u0000\u0000\u076b\u0764\u0001\u0000\u0000\u0000\u076b\u076c\u0001"+
55725 		"\u0000\u0000\u0000\u076c\u00af\u0001\u0000\u0000\u0000\u076d\u076e\u0007"+
55726 		"\u0018\u0000\u0000\u076e\u00b1\u0001\u0000\u0000\u0000\u076f\u0773\u0005"+
55727 		"\u02d2\u0000\u0000\u0770\u0771\u0005M\u0000\u0000\u0771\u0772\u0005\u0088"+
55728 		"\u0000\u0000\u0772\u0774\u0005\u0145\u0000\u0000\u0773\u0770\u0001\u0000"+
55729 		"\u0000\u0000\u0773\u0774\u0001\u0000\u0000\u0000\u0774\u0775\u0001\u0000"+
55730 		"\u0000\u0000\u0775\u0776\u0005\u02d4\u0000\u0000\u0776\u00b3\u0001\u0000"+
55731 		"\u0000\u0000\u0777\u0778\u0005R\u0000\u0000\u0778\u0779\u0005\u001f\u0000"+
55732 		"\u0000\u0779\u077a\u0003b1\u0000\u077a\u077b\u0005`\u0000\u0000\u077b"+
55733 		"\u077f\u0003\u00aeW\u0000\u077c\u077d\u0005\u001f\u0000\u0000\u077d\u077e"+
55734 		"\u0005\u02d5\u0000\u0000\u077e\u0780\u0005 \u0000\u0000\u077f\u077c\u0001"+
55735 		"\u0000\u0000\u0000\u077f\u0780\u0001\u0000\u0000\u0000\u0780\u0781\u0001"+
55736 		"\u0000\u0000\u0000\u0781\u0782\u0005 \u0000\u0000\u0782\u00b5\u0001\u0000"+
55737 		"\u0000\u0000\u0783\u0784\u0005\u0112\u0000\u0000\u0784\u0788\u0003\u00ae"+
55738 		"W\u0000\u0785\u0786\u0005\u001f\u0000\u0000\u0786\u0787\u0005\u02d5\u0000"+
55739 		"\u0000\u0787\u0789\u0005 \u0000\u0000\u0788\u0785\u0001\u0000\u0000\u0000"+
55740 		"\u0788\u0789\u0001\u0000\u0000\u0000\u0789\u078a\u0001\u0000\u0000\u0000"+
55741 		"\u078a\u078b\u0005%\u0000\u0000\u078b\u078e\u0003b1\u0000\u078c\u078d"+
55742 		"\u0005%\u0000\u0000\u078d\u078f\u0005\u02d5\u0000\u0000\u078e\u078c\u0001"+
55743 		"\u0000\u0000\u0000\u078e\u078f\u0001\u0000\u0000\u0000\u078f\u00b7\u0001"+
55744 		"\u0000\u0000\u0000\u0790\u0791\u0007\u0019\u0000\u0000\u0791\u0792\u0005"+
55745 		"\u001f\u0000\u0000\u0792\u0793\u0003b1\u0000\u0793\u0795\u0005 \u0000"+
55746 		"\u0000\u0794\u0796\u0003\u00ba]\u0000\u0795\u0794\u0001\u0000\u0000\u0000"+
55747 		"\u0795\u0796\u0001\u0000\u0000\u0000\u0796\u0797\u0001\u0000\u0000\u0000"+
55748 		"\u0797\u0798\u0003\u00bc^\u0000\u0798\u00b9\u0001\u0000\u0000\u0000\u0799"+
55749 		"\u079a\u0007\u001a\u0000\u0000\u079a\u079b\u0005\u02de\u0000\u0000\u079b"+
55750 		"\u00bb\u0001\u0000\u0000\u0000\u079c\u079d\u0005\u0132\u0000\u0000\u079d"+
55751 		"\u079f\u0005\u001f\u0000\u0000\u079e\u07a0\u0003\u00be_\u0000\u079f\u079e"+
55752 		"\u0001\u0000\u0000\u0000\u079f\u07a0\u0001\u0000\u0000\u0000\u07a0\u07a2"+
55753 		"\u0001\u0000\u0000\u0000\u07a1\u07a3\u0003\u00aaU\u0000\u07a2\u07a1\u0001"+
55754 		"\u0000\u0000\u0000\u07a2\u07a3\u0001\u0000\u0000\u0000\u07a3\u07a5\u0001"+
55755 		"\u0000\u0000\u0000\u07a4\u07a6\u0003\u00c0`\u0000\u07a5\u07a4\u0001\u0000"+
55756 		"\u0000\u0000\u07a5\u07a6\u0001\u0000\u0000\u0000\u07a6\u07a7\u0001\u0000"+
55757 		"\u0000\u0000\u07a7\u07a8\u0005 \u0000\u0000\u07a8\u00bd\u0001\u0000\u0000"+
55758 		"\u0000\u07a9\u07aa\u0005\u00f6\u0000\u0000\u07aa\u07ab\u0005w\u0000\u0000"+
55759 		"\u07ab\u07b0\u0003b1\u0000\u07ac\u07ad\u0005%\u0000\u0000\u07ad\u07af"+
55760 		"\u0003b1\u0000\u07ae\u07ac\u0001\u0000\u0000\u0000\u07af\u07b2\u0001\u0000"+
55761 		"\u0000\u0000\u07b0\u07ae\u0001\u0000\u0000\u0000\u07b0\u07b1\u0001\u0000"+
55762 		"\u0000\u0000\u07b1\u00bf\u0001\u0000\u0000\u0000\u07b2\u07b0\u0001\u0000"+
55763 		"\u0000\u0000\u07b3\u07b4\u0007\u001b\u0000\u0000\u07b4\u07b5\u0003\u00c2"+
55764 		"a\u0000\u07b5\u00c1\u0001\u0000\u0000\u0000\u07b6\u07b9\u0003\u00c8d\u0000"+
55765 		"\u07b7\u07b9\u0003\u00c4b\u0000\u07b8\u07b6\u0001\u0000\u0000\u0000\u07b8"+
55766 		"\u07b7\u0001\u0000\u0000\u0000\u07b9\u00c3\u0001\u0000\u0000\u0000\u07ba"+
55767 		"\u07bb\u0005p\u0000\u0000\u07bb\u07bc\u0003\u00c6c\u0000\u07bc\u07bd\u0005"+
55768 		"h\u0000\u0000\u07bd\u07be\u0003\u00c6c\u0000\u07be\u00c5\u0001\u0000\u0000"+
55769 		"\u0000\u07bf\u07c2\u0003\u00c8d\u0000\u07c0\u07c2\u0003\u00cae\u0000\u07c1"+
55770 		"\u07bf\u0001\u0000\u0000\u0000\u07c1\u07c0\u0001\u0000\u0000\u0000\u07c2"+
55771 		"\u00c7\u0001\u0000\u0000\u0000\u07c3\u07c4\u0005\u0128\u0000\u0000\u07c4"+
55772 		"\u07ca\u0005\u0137\u0000\u0000\u07c5\u07c6\u0005\u02d5\u0000\u0000\u07c6"+
55773 		"\u07ca\u0005\u0137\u0000\u0000\u07c7\u07c8\u0005\u009b\u0000\u0000\u07c8"+
55774 		"\u07ca\u0005\u00f9\u0000\u0000\u07c9\u07c3\u0001\u0000\u0000\u0000\u07c9"+
55775 		"\u07c5\u0001\u0000\u0000\u0000\u07c9\u07c7\u0001\u0000\u0000\u0000\u07ca"+
55776 		"\u00c9\u0001\u0000\u0000\u0000\u07cb\u07cc\u0005\u0128\u0000\u0000\u07cc"+
55777 		"\u07d2\u0005\u0122\u0000\u0000\u07cd\u07ce\u0005\u02d5\u0000\u0000\u07ce"+
55778 		"\u07d2\u0005\u0122\u0000\u0000\u07cf\u07d0\u0005\u009b\u0000\u0000\u07d0"+
55779 		"\u07d2\u0005\u00f9\u0000\u0000\u07d1\u07cb\u0001\u0000\u0000\u0000\u07d1"+
55780 		"\u07cd\u0001\u0000\u0000\u0000\u07d1\u07cf\u0001\u0000\u0000\u0000\u07d2"+
55781 		"\u00cb\u0001\u0000\u0000\u0000\u07d3\u07d5\u0003H$\u0000\u07d4\u07d6\u0007"+
55782 		"\u0012\u0000\u0000\u07d5\u07d4\u0001\u0000\u0000\u0000\u07d5\u07d6\u0001"+
55783 		"\u0000\u0000\u0000\u07d6\u00cd\u0001\u0000\u0000\u0000\u07d7\u07d8\u0005"+
55784 		"\u0121\u0000\u0000\u07d8\u07d9\u0005\u0018\u0000\u0000\u07d9\u07e5\u0005"+
55785 		"\u02d5\u0000\u0000\u07da\u07e5\u0003\u00d4j\u0000\u07db\u07dc\u0007\u001c"+
55786 		"\u0000\u0000\u07dc\u07e5\u0003\u00d2i\u0000\u07dd\u07de\u0005\u012c\u0000"+
55787 		"\u0000\u07de\u07df\u0005\u0018\u0000\u0000\u07df\u07e5\u0005\u02d5\u0000"+
55788 		"\u0000\u07e0\u07e2\u0003\u00d0h\u0000\u07e1\u07e3\u0003\u00dam\u0000\u07e2"+
55789 		"\u07e1\u0001\u0000\u0000\u0000\u07e2\u07e3\u0001\u0000\u0000\u0000\u07e3"+
55790 		"\u07e5\u0001\u0000\u0000\u0000\u07e4\u07d7\u0001\u0000\u0000\u0000\u07e4"+
55791 		"\u07da\u0001\u0000\u0000\u0000\u07e4\u07db\u0001\u0000\u0000\u0000\u07e4"+
55792 		"\u07dd\u0001\u0000\u0000\u0000\u07e4\u07e0\u0001\u0000\u0000\u0000\u07e5"+
55793 		"\u00cf\u0001\u0000\u0000\u0000\u07e6\u07e7\u0005\u019f\u0000\u0000\u07e7"+
55794 		"\u07e8\u0005\u0018\u0000\u0000\u07e8\u07e9\u0007\u001d\u0000\u0000\u07e9"+
55795 		"\u00d1\u0001\u0000\u0000\u0000\u07ea\u07eb\u0005\u0018\u0000\u0000\u07eb"+
55796 		"\u07ed\u0005\u02d5\u0000\u0000\u07ec\u07ee\u0005\u0117\u0000\u0000\u07ed"+
55797 		"\u07ec\u0001\u0000\u0000\u0000\u07ed\u07ee\u0001\u0000\u0000\u0000\u07ee"+
55798 		"\u00d3\u0001\u0000\u0000\u0000\u07ef\u07f0\u0003\u00d6k\u0000\u07f0\u07f1"+
55799 		"\u0003\u00d8l\u0000\u07f1\u00d5\u0001\u0000\u0000\u0000\u07f2\u07f3\u0007"+
55800 		"\u001e\u0000\u0000\u07f3\u00d7\u0001\u0000\u0000\u0000\u07f4\u07f5\u0005"+
55801 		"\u0018\u0000\u0000\u07f5\u07f6\u0007\u0000\u0000\u0000\u07f6\u00d9\u0001"+
55802 		"\u0000\u0000\u0000\u07f7\u07f8\u0005a\u0000\u0000\u07f8\u07f9\u0005\u00f7"+
55803 		"\u0000\u0000\u07f9\u07fa\u0005\u001f\u0000\u0000\u07fa\u07fb\u0003\u00dc"+
55804 		"n\u0000\u07fb\u07fc\u0005 \u0000\u0000\u07fc\u00db\u0001\u0000\u0000\u0000"+
55805 		"\u07fd\u0802\u0003\u00deo\u0000\u07fe\u07ff\u0005%\u0000\u0000\u07ff\u0801"+
55806 		"\u0003\u00deo\u0000\u0800\u07fe\u0001\u0000\u0000\u0000\u0801\u0804\u0001"+
55807 		"\u0000\u0000\u0000\u0802\u0800\u0001\u0000\u0000\u0000\u0802\u0803\u0001"+
55808 		"\u0000\u0000\u0000\u0803\u00dd\u0001\u0000\u0000\u0000\u0804\u0802\u0001"+
55809 		"\u0000\u0000\u0000\u0805\u0808\u0005\u02d5\u0000\u0000\u0806\u0808\u0003"+
55810 		"\u00e0p\u0000\u0807\u0805\u0001\u0000\u0000\u0000\u0807\u0806\u0001\u0000"+
55811 		"\u0000\u0000\u0808\u00df\u0001\u0000\u0000\u0000\u0809\u080a\u0005\u02d5"+
55812 		"\u0000\u0000\u080a\u080b\u0005g\u0000\u0000\u080b\u080c\u0005\u02d5\u0000"+
55813 		"\u0000\u080c\u00e1\u0001\u0000\u0000\u0000\u080d\u080e\u0005\u01a5\u0000"+
55814 		"\u0000\u080e\u080f\u0005\u001f\u0000\u0000\u080f\u0810\u0005\u01ae\u0000"+
55815 		"\u0000\u0810\u0811\u0005\u0018\u0000\u0000\u0811\u0813\u0005\u02d5\u0000"+
55816 		"\u0000\u0812\u0814\u0005\u0117\u0000\u0000\u0813\u0812\u0001\u0000\u0000"+
55817 		"\u0000\u0813\u0814\u0001\u0000\u0000\u0000\u0814\u0815\u0001\u0000\u0000"+
55818 		"\u0000\u0815\u0816\u0005%\u0000\u0000\u0816\u0817\u0005\u0195\u0000\u0000"+
55819 		"\u0817\u0818\u0005\u0018\u0000\u0000\u0818\u0819\u0007\u001f\u0000\u0000"+
55820 		"\u0819\u081a\u0005 \u0000\u0000\u081a\u00e3\u0001\u0000\u0000\u0000\u081b"+
55821 		"\u0820\u0005a\u0000\u0000\u081c\u081d\u0005\u001f\u0000\u0000\u081d\u081e"+
55822 		"\u0003\u00e2q\u0000\u081e\u081f\u0005 \u0000\u0000\u081f\u0821\u0001\u0000"+
55823 		"\u0000\u0000\u0820\u081c\u0001\u0000\u0000\u0000\u0820\u0821\u0001\u0000"+
55824 		"\u0000\u0000\u0821\u00e5\u0001\u0000\u0000\u0000\u0822\u0823\u0005\u02d2"+
55825 		"\u0000\u0000\u0823\u00e7\u0001\u0000\u0000\u0000\u0824\u0829\u0003\u00e6"+
55826 		"s\u0000\u0825\u0826\u0005%\u0000\u0000\u0826\u0828\u0003\u00e6s\u0000"+
55827 		"\u0827\u0825\u0001\u0000\u0000\u0000\u0828\u082b\u0001\u0000\u0000\u0000"+
55828 		"\u0829\u0827\u0001\u0000\u0000\u0000\u0829\u082a\u0001\u0000\u0000\u0000"+
55829 		"\u082a\u00e9\u0001\u0000\u0000\u0000\u082b\u0829\u0001\u0000\u0000\u0000"+
55830 		"\u082c\u082d\u0005\u0001\u0000\u0000\u082d\u00eb\u0001\u0000\u0000\u0000"+
55831 		"\u082e\u082f\u0003*\u0015\u0000\u082f\u00ed\u0001\u0000\u0000\u0000\u0830"+
55832 		"\u0831\u0007 \u0000\u0000\u0831\u0836\u0005`\u0000\u0000\u0832\u0837\u0005"+
55833 		"\u0212\u0000\u0000\u0833\u0837\u0005\u0140\u0000\u0000\u0834\u0837\u0005"+
55834 		"\u0217\u0000\u0000\u0835\u0837\u0003\u001c\u000e\u0000\u0836\u0832\u0001"+
55835 		"\u0000\u0000\u0000\u0836\u0833\u0001\u0000\u0000\u0000\u0836\u0834\u0001"+
55836 		"\u0000\u0000\u0000\u0836\u0835\u0001\u0000\u0000\u0000\u0837\u00ef\u0001"+
55837 		"\u0000\u0000\u0000\u0838\u0839\u0003*\u0015\u0000\u0839\u00f1\u0001\u0000"+
55838 		"\u0000\u0000\u083a\u083b\u0003\u00ecv\u0000\u083b\u00f3\u0001\u0000\u0000"+
55839 		"\u0000\u083c\u083d\u0003*\u0015\u0000\u083d\u00f5\u0001\u0000\u0000\u0000"+
55840 		"\u083e\u083f\u0003\u00ecv\u0000\u083f\u00f7\u0001\u0000\u0000\u0000\u0840"+
55841 		"\u0841\u0007!\u0000\u0000\u0841\u00f9\u0001\u0000\u0000\u0000\u0842\u0843"+
55842 		"\u0005c\u0000\u0000\u0843\u0844\u0005o\u0000\u0000\u0844\u00fb\u0001\u0000"+
55843 		"\u0000\u0000\u0845\u0846\u0007\"\u0000\u0000\u0846\u00fd\u0001\u0000\u0000"+
55844 		"\u0000\u0847\u0848\u0005\u009e\u0000\u0000\u0848\u00ff\u0001\u0000\u0000"+
55845 		"\u0000\u0849\u084b\u0005\u029d\u0000\u0000\u084a\u084c\u0005\u029e\u0000"+
55846 		"\u0000\u084b\u084a\u0001\u0000\u0000\u0000\u084b\u084c\u0001\u0000\u0000"+
55847 		"\u0000\u084c\u084d\u0001\u0000\u0000\u0000\u084d\u084e\u0003\u0102\u0081"+
55848 		"\u0000\u084e\u0101\u0001\u0000\u0000\u0000\u084f\u0855\u0003\u02de\u016f"+
55849 		"\u0000\u0850\u0855\u0003\u02bc\u015e\u0000\u0851\u0855\u0003\u02ca\u0165"+
55850 		"\u0000\u0852\u0855\u0003\u02d4\u016a\u0000\u0853\u0855\u0003\u02b2\u0159"+
55851 		"\u0000\u0854\u084f\u0001\u0000\u0000\u0000\u0854\u0850\u0001\u0000\u0000"+
55852 		"\u0000\u0854\u0851\u0001\u0000\u0000\u0000\u0854\u0852\u0001\u0000\u0000"+
55853 		"\u0000\u0854\u0853\u0001\u0000\u0000\u0000\u0855\u0103\u0001\u0000\u0000"+
55854 		"\u0000\u0856\u0859\u0003\u0106\u0083\u0000\u0857\u0859\u0003\u02b2\u0159"+
55855 		"\u0000\u0858\u0856\u0001\u0000\u0000\u0000\u0858\u0857\u0001\u0000\u0000"+
55856 		"\u0000\u0859\u0105\u0001\u0000\u0000\u0000\u085a\u085b\u00052\u0000\u0000"+
55857 		"\u085b\u085c\u0005;\u0000\u0000\u085c\u085d\u0003@ \u0000\u085d\u085e"+
55858 		"\u0003\u014e\u00a7\u0000\u085e\u085f\u0003\u0150\u00a8\u0000\u085f\u0107"+
55859 		"\u0001\u0000\u0000\u0000\u0860\u0861\u00052\u0000\u0000\u0861\u0862\u0003"+
55860 		"\u01be\u00df\u0000\u0862\u0863\u0005>\u0000\u0000\u0863\u0864\u0003V+"+
55861 		"\u0000\u0864\u0865\u0005a\u0000\u0000\u0865\u0866\u0003@ \u0000\u0866"+
55862 		"\u0867\u0003R)\u0000\u0867\u0868\u0003\u0264\u0132\u0000\u0868\u0109\u0001"+
55863 		"\u0000\u0000\u0000\u0869\u086a\u00052\u0000\u0000\u086a\u086b\u0005\u00cc"+
55864 		"\u0000\u0000\u086b\u086c\u00032\u0019\u0000\u086c\u086d\u0003\u0206\u0103"+
55865 		"\u0000\u086d\u010b\u0001\u0000\u0000\u0000\u086e\u0871\u00052\u0000\u0000"+
55866 		"\u086f\u0870\u0005i\u0000\u0000\u0870\u0872\u00053\u0000\u0000\u0871\u086f"+
55867 		"\u0001\u0000\u0000\u0000\u0871\u0872\u0001\u0000\u0000\u0000\u0872\u0873"+
55868 		"\u0001\u0000\u0000\u0000\u0873\u0874\u0005F\u0000\u0000\u0874\u0875\u0003"+
55869 		"6\u001b\u0000\u0875\u0876\u0003\u0232\u0119\u0000\u0876\u0877\u0003\u0234"+
55870 		"\u011a\u0000\u0877\u010d\u0001\u0000\u0000\u0000\u0878\u087b\u00052\u0000"+
55871 		"\u0000\u0879\u087a\u0005i\u0000\u0000\u087a\u087c\u00053\u0000\u0000\u087b"+
55872 		"\u0879\u0001\u0000\u0000\u0000\u087b\u087c\u0001\u0000\u0000\u0000\u087c"+
55873 		"\u087d\u0001\u0000\u0000\u0000\u087d\u087e\u0007#\u0000\u0000\u087e\u087f"+
55874 		"\u00038\u001c\u0000\u087f\u0880\u0003\u0244\u0122\u0000\u0880\u0881\u0003"+
55875 		"\u0248\u0124\u0000\u0881\u010f\u0001\u0000\u0000\u0000\u0882\u0885\u0005"+
55876 		"2\u0000\u0000\u0883\u0884\u0005i\u0000\u0000\u0884\u0886\u00053\u0000"+
55877 		"\u0000\u0885\u0883\u0001\u0000\u0000\u0000\u0885\u0886\u0001\u0000\u0000"+
55878 		"\u0000\u0886\u0887\u0001\u0000\u0000\u0000\u0887\u0888\u0005J\u0000\u0000"+
55879 		"\u0888\u0889\u0003:\u001d\u0000\u0889\u088a\u0003\u0252\u0129\u0000\u088a"+
55880 		"\u0111\u0001\u0000\u0000\u0000\u088b\u088e\u00052\u0000\u0000\u088c\u088d"+
55881 		"\u0005i\u0000\u0000\u088d\u088f\u00053\u0000\u0000\u088e\u088c\u0001\u0000"+
55882 		"\u0000\u0000\u088e\u088f\u0001\u0000\u0000\u0000\u088f\u0890\u0001\u0000"+
55883 		"\u0000\u0000\u0890\u0891\u0005G\u0000\u0000\u0891\u0892\u0003<\u001e\u0000"+
55884 		"\u0892\u0893\u0005a\u0000\u0000\u0893\u0894\u0003\u0260\u0130\u0000\u0894"+
55885 		"\u0895\u0003\u025a\u012d\u0000\u0895\u0113\u0001\u0000\u0000\u0000\u0896"+
55886 		"\u0897\u00052\u0000\u0000\u0897\u0898\u0005\u0194\u0000\u0000\u0898\u089c"+
55887 		"\u0003>\u001f\u0000\u0899\u089b\u0003\u0262\u0131\u0000\u089a\u0899\u0001"+
55888 		"\u0000\u0000\u0000\u089b\u089e\u0001\u0000\u0000\u0000\u089c\u089a\u0001"+
55889 		"\u0000\u0000\u0000\u089c\u089d\u0001\u0000\u0000\u0000\u089d\u0115\u0001"+
55890 		"\u0000\u0000\u0000\u089e\u089c\u0001\u0000\u0000\u0000\u089f\u08a0\u0005"+
55891 		"2\u0000\u0000\u08a0\u08a1\u0005\u0173\u0000\u0000\u08a1\u08a4\u0003F#"+
55892 		"\u0000\u08a2\u08a3\u0005\u029b\u0000\u0000\u08a3\u08a5\u0005\u02d4\u0000"+
55893 		"\u0000\u08a4\u08a2\u0001\u0000\u0000\u0000\u08a4\u08a5\u0001\u0000\u0000"+
55894 		"\u0000\u08a5\u08a6\u0001\u0000\u0000\u0000\u08a6\u08a7\u0005a\u0000\u0000"+
55895 		"\u08a7\u08a8\u0005\u0187\u0000\u0000\u08a8\u08aa\u0003B!\u0000\u08a9\u08ab"+
55896 		"\u0003\u02a8\u0154\u0000\u08aa\u08a9\u0001\u0000\u0000\u0000\u08aa\u08ab"+
55897 		"\u0001\u0000\u0000\u0000\u08ab\u0117\u0001\u0000\u0000\u0000\u08ac\u08ad"+
55898 		"\u00052\u0000\u0000\u08ad\u08ae\u00056\u0000\u0000\u08ae\u08b2\u0003\u02ae"+
55899 		"\u0157\u0000\u08af\u08b1\u0003\u02b0\u0158\u0000\u08b0\u08af\u0001\u0000"+
55900 		"\u0000\u0000\u08b1\u08b4\u0001\u0000\u0000\u0000\u08b2\u08b0\u0001\u0000"+
55901 		"\u0000\u0000\u08b2\u08b3\u0001\u0000\u0000\u0000\u08b3\u0119\u0001\u0000"+
55902 		"\u0000\u0000\u08b4\u08b2\u0001\u0000\u0000\u0000\u08b5\u08b6\u00053\u0000"+
55903 		"\u0000\u08b6\u08b7\u0005;\u0000\u0000\u08b7\u08b8\u0003@ \u0000\u08b8"+
55904 		"\u08bd\u0003\u01c0\u00e0\u0000\u08b9\u08ba\u0005%\u0000\u0000\u08ba\u08bc"+
55905 		"\u0003\u01c0\u00e0\u0000\u08bb\u08b9\u0001\u0000\u0000\u0000\u08bc\u08bf"+
55906 		"\u0001\u0000\u0000\u0000\u08bd\u08bb\u0001\u0000\u0000\u0000\u08bd\u08be"+
55907 		"\u0001\u0000\u0000\u0000\u08be\u011b\u0001\u0000\u0000\u0000\u08bf\u08bd"+
55908 		"\u0001\u0000\u0000\u0000\u08c0\u08c1\u00053\u0000\u0000\u08c1\u08c4\u0005"+
55909 		">\u0000\u0000\u08c2\u08c5\u0003V+\u0000\u08c3\u08c5\u0005r\u0000\u0000"+
55910 		"\u08c4\u08c2\u0001\u0000\u0000\u0000\u08c4\u08c3\u0001\u0000\u0000\u0000"+
55911 		"\u08c5\u08c6\u0001\u0000\u0000\u0000\u08c6\u08c7\u0005a\u0000\u0000\u08c7"+
55912 		"\u08c8\u0003@ \u0000\u08c8\u08c9\u0003\u026a\u0135\u0000\u08c9\u011d\u0001"+
55913 		"\u0000\u0000\u0000\u08ca\u08cb\u00053\u0000\u0000\u08cb\u08ce\u0005\u00cc"+
55914 		"\u0000\u0000\u08cc\u08cf\u00032\u0019\u0000\u08cd\u08cf\u0005\u009b\u0000"+
55915 		"\u0000\u08ce\u08cc\u0001\u0000\u0000\u0000\u08ce\u08cd\u0001\u0000\u0000"+
55916 		"\u0000\u08cf\u08d3\u0001\u0000\u0000\u0000\u08d0\u08d2\u0003\u0276\u013b"+
55917 		"\u0000\u08d1\u08d0\u0001\u0000\u0000\u0000\u08d2\u08d5\u0001\u0000\u0000"+
55918 		"\u0000\u08d3\u08d1\u0001\u0000\u0000\u0000\u08d3\u08d4\u0001\u0000\u0000"+
55919 		"\u0000\u08d4\u011f\u0001\u0000\u0000\u0000\u08d5\u08d3\u0001\u0000\u0000"+
55920 		"\u0000\u08d6\u08d7\u00053\u0000\u0000\u08d7\u08d8\u0007#\u0000\u0000\u08d8"+
55921 		"\u08d9\u00038\u001c\u0000\u08d9\u08da\u0003\u0244\u0122\u0000\u08da\u08db"+
55922 		"\u0003\u0248\u0124\u0000\u08db\u0121\u0001\u0000\u0000\u0000\u08dc\u08dd"+
55923 		"\u00053\u0000\u0000\u08dd\u08de\u0005F\u0000\u0000\u08de\u08df\u00036"+
55924 		"\u001b\u0000\u08df\u08e0\u0003\u0232\u0119\u0000\u08e0\u08e1\u0003\u0234"+
55925 		"\u011a\u0000\u08e1\u0123\u0001\u0000\u0000\u0000\u08e2\u08e3\u00053\u0000"+
55926 		"\u0000\u08e3\u08e4\u0005J\u0000\u0000\u08e4\u08e5\u0003:\u001d\u0000\u08e5"+
55927 		"\u08e6\u0003\u0252\u0129\u0000\u08e6\u0125\u0001\u0000\u0000\u0000\u08e7"+
55928 		"\u08e8\u00053\u0000\u0000\u08e8\u08e9\u0005G\u0000\u0000\u08e9\u08ea\u0003"+
55929 		"<\u001e\u0000\u08ea\u08eb\u0005a\u0000\u0000\u08eb\u08ec\u0003\u0260\u0130"+
55930 		"\u0000\u08ec\u08ed\u0003\u025a\u012d\u0000\u08ed\u0127\u0001\u0000\u0000"+
55931 		"\u0000\u08ee\u08ef\u00053\u0000\u0000\u08ef\u08f0\u0005\u0194\u0000\u0000"+
55932 		"\u08f0\u08f4\u0003>\u001f\u0000\u08f1\u08f3\u0003\u0262\u0131\u0000\u08f2"+
55933 		"\u08f1\u0001\u0000\u0000\u0000\u08f3\u08f6\u0001\u0000\u0000\u0000\u08f4"+
55934 		"\u08f2\u0001\u0000\u0000\u0000\u08f4\u08f5\u0001\u0000\u0000\u0000\u08f5"+
55935 		"\u0129\u0001\u0000\u0000\u0000\u08f6\u08f4\u0001\u0000\u0000\u0000\u08f7"+
55936 		"\u08f8\u00053\u0000\u0000\u08f8\u08f9\u0005\u0173\u0000\u0000\u08f9\u08fd"+
55937 		"\u0003F#\u0000\u08fa\u08fb\u0005a\u0000\u0000\u08fb\u08fc\u0005\u0187"+
55938 		"\u0000\u0000\u08fc\u08fe\u0003B!\u0000\u08fd\u08fa\u0001\u0000\u0000\u0000"+
55939 		"\u08fd\u08fe\u0001\u0000\u0000\u0000\u08fe\u0900\u0001\u0000\u0000\u0000"+
55940 		"\u08ff\u0901\u0003\u02aa\u0155\u0000\u0900\u08ff\u0001\u0000\u0000\u0000"+
55941 		"\u0900\u0901\u0001\u0000\u0000\u0000\u0901\u012b\u0001\u0000\u0000\u0000"+
55942 		"\u0902\u0903\u00053\u0000\u0000\u0903\u0904\u00056\u0000\u0000\u0904\u0905"+
55943 		"\u00034\u001a\u0000\u0905\u0907\u0005\u029c\u0000\u0000\u0906\u0908\u0003"+
55944 		"\u0390\u01c8\u0000\u0907\u0906\u0001\u0000\u0000\u0000\u0907\u0908\u0001"+
55945 		"\u0000\u0000\u0000\u0908\u0909\u0001\u0000\u0000\u0000\u0909\u090a\u0003"+
55946 		"\u00e6s\u0000\u090a\u012d\u0001\u0000\u0000\u0000\u090b\u090c\u00054\u0000"+
55947 		"\u0000\u090c\u090e\u0005;\u0000\u0000\u090d\u090f\u0003\u00fa}\u0000\u090e"+
55948 		"\u090d\u0001\u0000\u0000\u0000\u090e\u090f\u0001\u0000\u0000\u0000\u090f"+
55949 		"\u0910\u0001\u0000\u0000\u0000\u0910\u0911\u0003T*\u0000\u0911\u012f\u0001"+
55950 		"\u0000\u0000\u0000\u0912\u0913\u00054\u0000\u0000\u0913\u0915\u0005>\u0000"+
55951 		"\u0000\u0914\u0916\u0003\u00fa}\u0000\u0915\u0914\u0001\u0000\u0000\u0000"+
55952 		"\u0915\u0916\u0001\u0000\u0000\u0000\u0916\u0917\u0001\u0000\u0000\u0000"+
55953 		"\u0917\u0918\u0003V+\u0000\u0918\u0919\u0005a\u0000\u0000\u0919\u091a"+
55954 		"\u0003@ \u0000\u091a\u0131\u0001\u0000\u0000\u0000\u091b\u091c\u00054"+
55955 		"\u0000\u0000\u091c\u091e\u0005\u00cc\u0000\u0000\u091d\u091f\u0003\u00fa"+
55956 		"}\u0000\u091e\u091d\u0001\u0000\u0000\u0000\u091e\u091f\u0001\u0000\u0000"+
55957 		"\u0000\u091f\u0920\u0001\u0000\u0000\u0000\u0920\u0925\u00032\u0019\u0000"+
55958 		"\u0921\u0922\u0005%\u0000\u0000\u0922\u0924\u00032\u0019\u0000\u0923\u0921"+
55959 		"\u0001\u0000\u0000\u0000\u0924\u0927\u0001\u0000\u0000\u0000\u0925\u0923"+
55960 		"\u0001\u0000\u0000\u0000\u0925\u0926\u0001\u0000\u0000\u0000\u0926\u0133"+
55961 		"\u0001\u0000\u0000\u0000\u0927\u0925\u0001\u0000\u0000\u0000\u0928\u0929"+
55962 		"\u00054\u0000\u0000\u0929\u092b\u0005F\u0000\u0000\u092a\u092c\u0003\u00fa"+
55963 		"}\u0000\u092b\u092a\u0001\u0000\u0000\u0000\u092b\u092c\u0001\u0000\u0000"+
55964 		"\u0000\u092c\u092d\u0001\u0000\u0000\u0000\u092d\u0932\u00036\u001b\u0000"+
55965 		"\u092e\u092f\u0005%\u0000\u0000\u092f\u0931\u00036\u001b\u0000\u0930\u092e"+
55966 		"\u0001\u0000\u0000\u0000\u0931\u0934\u0001\u0000\u0000\u0000\u0932\u0930"+
55967 		"\u0001\u0000\u0000\u0000\u0932\u0933\u0001\u0000\u0000\u0000\u0933\u0135"+
55968 		"\u0001\u0000\u0000\u0000\u0934\u0932\u0001\u0000\u0000\u0000\u0935\u0936"+
55969 		"\u00054\u0000\u0000\u0936\u0938\u0007#\u0000\u0000\u0937\u0939\u0003\u00fa"+
55970 		"}\u0000\u0938\u0937\u0001\u0000\u0000\u0000\u0938\u0939\u0001\u0000\u0000"+
55971 		"\u0000\u0939\u093a\u0001\u0000\u0000\u0000\u093a\u093f\u00038\u001c\u0000"+
55972 		"\u093b\u093c\u0005%\u0000\u0000\u093c\u093e\u00038\u001c\u0000\u093d\u093b"+
55973 		"\u0001\u0000\u0000\u0000\u093e\u0941\u0001\u0000\u0000\u0000\u093f\u093d"+
55974 		"\u0001\u0000\u0000\u0000\u093f\u0940\u0001\u0000\u0000\u0000\u0940\u0137"+
55975 		"\u0001\u0000\u0000\u0000\u0941\u093f\u0001\u0000\u0000\u0000\u0942\u0943"+
55976 		"\u00054\u0000\u0000\u0943\u0945\u0005J\u0000\u0000\u0944\u0946\u0003\u00fa"+
55977 		"}\u0000\u0945\u0944\u0001\u0000\u0000\u0000\u0945\u0946\u0001\u0000\u0000"+
55978 		"\u0000\u0946\u0947\u0001\u0000\u0000\u0000\u0947\u094c\u0003:\u001d\u0000"+
55979 		"\u0948\u0949\u0005%\u0000\u0000\u0949\u094b\u0003:\u001d\u0000\u094a\u0948"+
55980 		"\u0001\u0000\u0000\u0000\u094b\u094e\u0001\u0000\u0000\u0000\u094c\u094a"+
55981 		"\u0001\u0000\u0000\u0000\u094c\u094d\u0001\u0000\u0000\u0000\u094d\u0139"+
55982 		"\u0001\u0000\u0000\u0000\u094e\u094c\u0001\u0000\u0000\u0000\u094f\u0950"+
55983 		"\u00054\u0000\u0000\u0950\u0952\u0005G\u0000\u0000\u0951\u0953\u0003\u00fa"+
55984 		"}\u0000\u0952\u0951\u0001\u0000\u0000\u0000\u0952\u0953\u0001\u0000\u0000"+
55985 		"\u0000\u0953\u0954\u0001\u0000\u0000\u0000\u0954\u0959\u0003<\u001e\u0000"+
55986 		"\u0955\u0956\u0005%\u0000\u0000\u0956\u0958\u0003<\u001e\u0000\u0957\u0955"+
55987 		"\u0001\u0000\u0000\u0000\u0958\u095b\u0001\u0000\u0000\u0000\u0959\u0957"+
55988 		"\u0001\u0000\u0000\u0000\u0959\u095a\u0001\u0000\u0000\u0000\u095a\u0962"+
55989 		"\u0001\u0000\u0000\u0000\u095b\u0959\u0001\u0000\u0000\u0000\u095c\u0960"+
55990 		"\u0005a\u0000\u0000\u095d\u0961\u0005\u00cc\u0000\u0000\u095e\u095f\u0005"+
55991 		"r\u0000\u0000\u095f\u0961\u0005\u0155\u0000\u0000\u0960\u095d\u0001\u0000"+
55992 		"\u0000\u0000\u0960\u095e\u0001\u0000\u0000\u0000\u0961\u0963\u0001\u0000"+
55993 		"\u0000\u0000\u0962\u095c\u0001\u0000\u0000\u0000\u0962\u0963\u0001\u0000"+
55994 		"\u0000\u0000\u0963\u013b\u0001\u0000\u0000\u0000\u0964\u0965\u00054\u0000"+
55995 		"\u0000\u0965\u0967\u0005\u0194\u0000\u0000\u0966\u0968\u0003\u00fa}\u0000"+
55996 		"\u0967\u0966\u0001\u0000\u0000\u0000\u0967\u0968\u0001\u0000\u0000\u0000"+
55997 		"\u0968\u0969\u0001\u0000\u0000\u0000\u0969\u096e\u0003>\u001f\u0000\u096a"+
55998 		"\u096b\u0005%\u0000\u0000\u096b\u096d\u0003>\u001f\u0000\u096c\u096a\u0001"+
55999 		"\u0000\u0000\u0000\u096d\u0970\u0001\u0000\u0000\u0000\u096e\u096c\u0001"+
56000 		"\u0000\u0000\u0000\u096e\u096f\u0001\u0000\u0000\u0000\u096f\u013d\u0001"+
56001 		"\u0000\u0000\u0000\u0970\u096e\u0001\u0000\u0000\u0000\u0971\u0972\u0005"+
56002 		"4\u0000\u0000\u0972\u0973\u0005\u0173\u0000\u0000\u0973\u0974\u0003F#"+
56003 		"\u0000\u0974\u013f\u0001\u0000\u0000\u0000\u0975\u0976\u00054\u0000\u0000"+
56004 		"\u0976\u0978\u00056\u0000\u0000\u0977\u0979\u0003\u00fa}\u0000\u0978\u0977"+
56005 		"\u0001\u0000\u0000\u0000\u0978\u0979\u0001\u0000\u0000\u0000\u0979\u097a"+
56006 		"\u0001\u0000\u0000\u0000\u097a\u097b\u00034\u001a\u0000\u097b\u0141\u0001"+
56007 		"\u0000\u0000\u0000\u097c\u097d\u00055\u0000\u0000\u097d\u097e\u0005;\u0000"+
56008 		"\u0000\u097e\u097f\u0003@ \u0000\u097f\u0143\u0001\u0000\u0000\u0000\u0980"+
56009 		"\u0981\u00050\u0000\u0000\u0981\u0982\u0005\u02c7\u0000\u0000\u0982\u0991"+
56010 		"\u0003@ \u0000\u0983\u0985\u0005\u001f\u0000\u0000\u0984\u0983\u0001\u0000"+
56011 		"\u0000\u0000\u0984\u0985\u0001\u0000\u0000\u0000\u0985\u0986\u0001\u0000"+
56012 		"\u0000\u0000\u0986\u098b\u0003V+\u0000\u0987\u0988\u0005%\u0000\u0000"+
56013 		"\u0988\u098a\u0003V+\u0000\u0989\u0987\u0001\u0000\u0000\u0000\u098a\u098d"+
56014 		"\u0001\u0000\u0000\u0000\u098b\u0989\u0001\u0000\u0000\u0000\u098b\u098c"+
56015 		"\u0001\u0000\u0000\u0000\u098c\u098f\u0001\u0000\u0000\u0000\u098d\u098b"+
56016 		"\u0001\u0000\u0000\u0000\u098e\u0990\u0005 \u0000\u0000\u098f\u098e\u0001"+
56017 		"\u0000\u0000\u0000\u098f\u0990\u0001\u0000\u0000\u0000\u0990\u0992\u0001"+
56018 		"\u0000\u0000\u0000\u0991\u0984\u0001\u0000\u0000\u0000\u0991\u0992\u0001"+
56019 		"\u0000\u0000\u0000\u0992\u0994\u0001\u0000\u0000\u0000\u0993\u0995\u0003"+
56020 		"\u0146\u00a3\u0000\u0994\u0993\u0001\u0000\u0000\u0000\u0994\u0995\u0001"+
56021 		"\u0000\u0000\u0000\u0995\u0145\u0001\u0000\u0000\u0000\u0996\u0998\u0005"+
56022 		"M\u0000\u0000\u0997\u0999\u0003\u0148\u00a4\u0000\u0998\u0997\u0001\u0000"+
56023 		"\u0000\u0000\u0998\u0999\u0001\u0000\u0000\u0000\u0999\u099b\u0001\u0000"+
56024 		"\u0000\u0000\u099a\u099c\u0003\u014a\u00a5\u0000\u099b\u099a\u0001\u0000"+
56025 		"\u0000\u0000\u099b\u099c\u0001\u0000\u0000\u0000\u099c\u0147\u0001\u0000"+
56026 		"\u0000\u0000\u099d\u09a2\u0005\u02c8\u0000\u0000\u099e\u099f\u0005\u02c9"+
56027 		"\u0000\u0000\u099f\u09a0\u0005\u02d5\u0000\u0000\u09a0\u09a2\u0007$\u0000"+
56028 		"\u0000\u09a1\u099d\u0001\u0000\u0000\u0000\u09a1\u099e\u0001\u0000\u0000"+
56029 		"\u0000\u09a2\u09a6\u0001\u0000\u0000\u0000\u09a3\u09a4\u0005\u02cd\u0000"+
56030 		"\u0000\u09a4\u09a5\u0005\u0018\u0000\u0000\u09a5\u09a7\u0007\u0000\u0000"+
56031 		"\u0000\u09a6\u09a3\u0001\u0000\u0000\u0000\u09a6\u09a7\u0001\u0000\u0000"+
56032 		"\u0000\u09a7\u09b8\u0001\u0000\u0000\u0000\u09a8\u09b5\u0005\u02ca\u0000"+
56033 		"\u0000\u09a9\u09aa\u0005a\u0000\u0000\u09aa\u09ab\u0005\u00f7\u0000\u0000"+
56034 		"\u09ab\u09ac\u0005\u001f\u0000\u0000\u09ac\u09b1\u0005\u02d5\u0000\u0000"+
56035 		"\u09ad\u09ae\u0005%\u0000\u0000\u09ae\u09b0\u0005\u02d5\u0000\u0000\u09af"+
56036 		"\u09ad\u0001\u0000\u0000\u0000\u09b0\u09b3\u0001\u0000\u0000\u0000\u09b1"+
56037 		"\u09af\u0001\u0000\u0000\u0000\u09b1\u09b2\u0001\u0000\u0000\u0000\u09b2"+
56038 		"\u09b4\u0001\u0000\u0000\u0000\u09b3\u09b1\u0001\u0000\u0000\u0000\u09b4"+
56039 		"\u09b6\u0005 \u0000\u0000\u09b5\u09a9\u0001\u0000\u0000\u0000\u09b5\u09b6"+
56040 		"\u0001\u0000\u0000\u0000\u09b6\u09b8\u0001\u0000\u0000\u0000\u09b7\u09a1"+
56041 		"\u0001\u0000\u0000\u0000\u09b7\u09a8\u0001\u0000\u0000\u0000\u09b8\u0149"+
56042 		"\u0001\u0000\u0000\u0000\u09b9\u09bb\u0005%\u0000\u0000\u09ba\u09b9\u0001"+
56043 		"\u0000\u0000\u0000\u09ba\u09bb\u0001\u0000\u0000\u0000\u09bb\u09bc\u0001"+
56044 		"\u0000\u0000\u0000\u09bc\u09be\u0003\u014c\u00a6\u0000\u09bd\u09ba\u0001"+
56045 		"\u0000\u0000\u0000\u09be\u09bf\u0001\u0000\u0000\u0000\u09bf\u09bd\u0001"+
56046 		"\u0000\u0000\u0000\u09bf\u09c0\u0001\u0000\u0000\u0000\u09c0\u014b\u0001"+
56047 		"\u0000\u0000\u0000\u09c1\u09cf\u0005r\u0000\u0000\u09c2\u09cf\u0005=\u0000"+
56048 		"\u0000\u09c3\u09cf\u0005>\u0000\u0000\u09c4\u09cf\u0005\u02cb\u0000\u0000"+
56049 		"\u09c5\u09c6\u0005\u0276\u0000\u0000\u09c6\u09c7\u0005\u0018\u0000\u0000"+
56050 		"\u09c7\u09cf\u0007\u0000\u0000\u0000\u09c8\u09c9\u0005\u012c\u0000\u0000"+
56051 		"\u09c9\u09ca\u0005\u0018\u0000\u0000\u09ca\u09cf\u0005\u02d5\u0000\u0000"+
56052 		"\u09cb\u09cc\u0005\u02cc\u0000\u0000\u09cc\u09cd\u0005\u0018\u0000\u0000"+
56053 		"\u09cd\u09cf\u0007\u0000\u0000\u0000\u09ce\u09c1\u0001\u0000\u0000\u0000"+
56054 		"\u09ce\u09c2\u0001\u0000\u0000\u0000\u09ce\u09c3\u0001\u0000\u0000\u0000"+
56055 		"\u09ce\u09c4\u0001\u0000\u0000\u0000\u09ce\u09c5\u0001\u0000\u0000\u0000"+
56056 		"\u09ce\u09c8\u0001\u0000\u0000\u0000\u09ce\u09cb\u0001\u0000\u0000\u0000"+
56057 		"\u09cf\u014d\u0001\u0000\u0000\u0000\u09d0\u09d1\u0005`\u0000\u0000\u09d1"+
56058 		"\u09d3\u0005\u0120\u0000\u0000\u09d2\u09d0\u0001\u0000\u0000\u0000\u09d2"+
56059 		"\u09d3\u0001\u0000\u0000\u0000\u09d3\u014f\u0001\u0000\u0000\u0000\u09d4"+
56060 		"\u09d5\u0003\u0152\u00a9\u0000\u09d5\u09d6\u0003\u01a6\u00d3\u0000\u09d6"+
56061 		"\u09d7\u0003\u01a8\u00d4\u0000\u09d7\u0151\u0001\u0000\u0000\u0000\u09d8"+
56062 		"\u09d9\u0005\u001f\u0000\u0000\u09d9\u09de\u0003\u0154\u00aa\u0000\u09da"+
56063 		"\u09db\u0005%\u0000\u0000\u09db\u09dd\u0003\u0154\u00aa\u0000\u09dc\u09da"+
56064 		"\u0001\u0000\u0000\u0000\u09dd\u09e0\u0001\u0000\u0000\u0000\u09de\u09dc"+
56065 		"\u0001\u0000\u0000\u0000\u09de\u09df\u0001\u0000\u0000\u0000\u09df\u09e3"+
56066 		"\u0001\u0000\u0000\u0000\u09e0\u09de\u0001\u0000\u0000\u0000\u09e1\u09e2"+
56067 		"\u0005%\u0000\u0000\u09e2\u09e4\u0003\u01a4\u00d2\u0000\u09e3\u09e1\u0001"+
56068 		"\u0000\u0000\u0000\u09e3\u09e4\u0001\u0000\u0000\u0000\u09e4\u09e5\u0001"+
56069 		"\u0000\u0000\u0000\u09e5\u09e6\u0005 \u0000\u0000\u09e6\u0153\u0001\u0000"+
56070 		"\u0000\u0000\u09e7\u09ed\u0003\u0156\u00ab\u0000\u09e8\u09ed\u0003\u018c"+
56071 		"\u00c6\u0000\u09e9\u09ed\u0003\u018e\u00c7\u0000\u09ea\u09ed\u0003\u0190"+
56072 		"\u00c8\u0000\u09eb\u09ed\u0003\u019e\u00cf\u0000\u09ec\u09e7\u0001\u0000"+
56073 		"\u0000\u0000\u09ec\u09e8\u0001\u0000\u0000\u0000\u09ec\u09e9\u0001\u0000"+
56074 		"\u0000\u0000\u09ec\u09ea\u0001\u0000\u0000\u0000\u09ec\u09eb\u0001\u0000"+
56075 		"\u0000\u0000\u09ed\u0155\u0001\u0000\u0000\u0000\u09ee\u09ef\u0003H$\u0000"+
56076 		"\u09ef\u09f3\u0003\u00aeW\u0000\u09f0\u09f2\u0003\u0158\u00ac\u0000\u09f1"+
56077 		"\u09f0\u0001\u0000\u0000\u0000\u09f2\u09f5\u0001\u0000\u0000\u0000\u09f3"+
56078 		"\u09f1\u0001\u0000\u0000\u0000\u09f3\u09f4\u0001\u0000\u0000\u0000\u09f4"+
56079 		"\u09f6\u0001\u0000\u0000\u0000\u09f5\u09f3\u0001\u0000\u0000\u0000\u09f6"+
56080 		"\u09f8\u0003\u018a\u00c5\u0000\u09f7\u09f9\u0003\u0180\u00c0\u0000\u09f8"+
56081 		"\u09f7\u0001\u0000\u0000\u0000\u09f8\u09f9\u0001\u0000\u0000\u0000\u09f9"+
56082 		"\u0157\u0001\u0000\u0000\u0000\u09fa\u0a30\u0005\u011f\u0000\u0000\u09fb"+
56083 		"\u09fc\u0005\u010f\u0000\u0000\u09fc\u0a30\u0003Z-\u0000\u09fd\u0a30\u0005"+
56084 		"\u0141\u0000\u0000\u09fe\u09ff\u0005\u012b\u0000\u0000\u09ff\u0a00\u0005"+
56085 		"M\u0000\u0000\u0a00\u0a01\u0005\u001f\u0000\u0000\u0a01\u0a02\u0005F\u0000"+
56086 		"\u0000\u0a02\u0a03\u0005\u0018\u0000\u0000\u0a03\u0a04\u0005\u02d4\u0000"+
56087 		"\u0000\u0a04\u0a30\u0005 \u0000\u0000\u0a05\u0a06\u0005?\u0000\u0000\u0a06"+
56088 		"\u0a08\u0003\u00e6s\u0000\u0a07\u0a05\u0001\u0000\u0000\u0000\u0a07\u0a08"+
56089 		"\u0001\u0000\u0000\u0000\u0a08\u0a09\u0001\u0000\u0000\u0000\u0a09\u0a0a"+
56090 		"\u0005\u009a\u0000\u0000\u0a0a\u0a30\u0003b1\u0000\u0a0b\u0a11\u0005\u0125"+
56091 		"\u0000\u0000\u0a0c\u0a0d\u0005\u001f\u0000\u0000\u0a0d\u0a0e\u0005\u02d5"+
56092 		"\u0000\u0000\u0a0e\u0a0f\u0005%\u0000\u0000\u0a0f\u0a10\u0005\u02d5\u0000"+
56093 		"\u0000\u0a10\u0a12\u0005 \u0000\u0000\u0a11\u0a0c\u0001\u0000\u0000\u0000"+
56094 		"\u0a11\u0a12\u0001\u0000\u0000\u0000\u0a12\u0a30\u0001\u0000\u0000\u0000"+
56095 		"\u0a13\u0a14\u0005k\u0000\u0000\u0a14\u0a15\u0005f\u0000\u0000\u0a15\u0a30"+
56096 		"\u0005\u013c\u0000\u0000\u0a16\u0a17\u0005\u0100\u0000\u0000\u0a17\u0a18"+
56097 		"\u0005\u00fd\u0000\u0000\u0a18\u0a19\u0005`\u0000\u0000\u0a19\u0a1a\u0005"+
56098 		"\u00f9\u0000\u0000\u0a1a\u0a1c\u0007%\u0000\u0000\u0a1b\u0a1d\u0005\u00f4"+
56099 		"\u0000\u0000\u0a1c\u0a1b\u0001\u0000\u0000\u0000\u0a1c\u0a1d\u0001\u0000"+
56100 		"\u0000\u0000\u0a1d\u0a30\u0001\u0000\u0000\u0000\u0a1e\u0a20\u0005k\u0000"+
56101 		"\u0000\u0a1f\u0a1e\u0001\u0000\u0000\u0000\u0a1f\u0a20\u0001\u0000\u0000"+
56102 		"\u0000\u0a20\u0a21\u0001\u0000\u0000\u0000\u0a21\u0a30\u0005l\u0000\u0000"+
56103 		"\u0a22\u0a30\u0005\u013e\u0000\u0000\u0a23\u0a24\u0005\u011d\u0000\u0000"+
56104 		"\u0a24\u0a25\u0005M\u0000\u0000\u0a25\u0a30\u0003\u015a\u00ad\u0000\u0a26"+
56105 		"\u0a2b\u0003\u015c\u00ae\u0000\u0a27\u0a28\u0005%\u0000\u0000\u0a28\u0a2a"+
56106 		"\u0003\u015c\u00ae\u0000\u0a29\u0a27\u0001\u0000\u0000\u0000\u0a2a\u0a2d"+
56107 		"\u0001\u0000\u0000\u0000\u0a2b\u0a29\u0001\u0000\u0000\u0000\u0a2b\u0a2c"+
56108 		"\u0001\u0000\u0000\u0000\u0a2c\u0a30\u0001\u0000\u0000\u0000\u0a2d\u0a2b"+
56109 		"\u0001\u0000\u0000\u0000\u0a2e\u0a30\u0003\u0180\u00c0\u0000\u0a2f\u09fa"+
56110 		"\u0001\u0000\u0000\u0000\u0a2f\u09fb\u0001\u0000\u0000\u0000\u0a2f\u09fd"+
56111 		"\u0001\u0000\u0000\u0000\u0a2f\u09fe\u0001\u0000\u0000\u0000\u0a2f\u0a07"+
56112 		"\u0001\u0000\u0000\u0000\u0a2f\u0a0b\u0001\u0000\u0000\u0000\u0a2f\u0a13"+
56113 		"\u0001\u0000\u0000\u0000\u0a2f\u0a16\u0001\u0000\u0000\u0000\u0a2f\u0a1f"+
56114 		"\u0001\u0000\u0000\u0000\u0a2f\u0a22\u0001\u0000\u0000\u0000\u0a2f\u0a23"+
56115 		"\u0001\u0000\u0000\u0000\u0a2f\u0a26\u0001\u0000\u0000\u0000\u0a2f\u0a2e"+
56116 		"\u0001\u0000\u0000\u0000\u0a30\u0159\u0001\u0000\u0000\u0000\u0a31\u0a32"+
56117 		"\u0005\u001f\u0000\u0000\u0a32\u0a33\u0005\u019b\u0000\u0000\u0a33\u0a34"+
56118 		"\u0005\u0018\u0000\u0000\u0a34\u0a35\u0003\u00e6s\u0000\u0a35\u0a36\u0005"+
56119 		"%\u0000\u0000\u0a36\u0a37\u0005\u01a1\u0000\u0000\u0a37\u0a38\u0005\u0018"+
56120 		"\u0000\u0000\u0a38\u0a39\u0007&\u0000\u0000\u0a39\u0a3a\u0005%\u0000\u0000"+
56121 		"\u0a3a\u0a3b\u0005\u010a\u0000\u0000\u0a3b\u0a3c\u0005\u0018\u0000\u0000"+
56122 		"\u0a3c\u0a3d\u0005\u02d4\u0000\u0000\u0a3d\u0a3e\u0005 \u0000\u0000\u0a3e"+
56123 		"\u015b\u0001\u0000\u0000\u0000\u0a3f\u0a40\u0005?\u0000\u0000\u0a40\u0a42"+
56124 		"\u0003X,\u0000\u0a41\u0a3f\u0001\u0000\u0000\u0000\u0a41\u0a42\u0001\u0000"+
56125 		"\u0000\u0000\u0a42\u0a46\u0001\u0000\u0000\u0000\u0a43\u0a47\u0003\u0164"+
56126 		"\u00b2\u0000\u0a44\u0a47\u0003\u0178\u00bc\u0000\u0a45\u0a47\u0003\u017e"+
56127 		"\u00bf\u0000\u0a46\u0a43\u0001\u0000\u0000\u0000\u0a46\u0a44\u0001\u0000"+
56128 		"\u0000\u0000\u0a46\u0a45\u0001\u0000\u0000\u0000\u0a47\u015d\u0001\u0000"+
56129 		"\u0000\u0000\u0a48\u0a49\u0005?\u0000\u0000\u0a49\u0a4b\u0003X,\u0000"+
56130 		"\u0a4a\u0a48\u0001\u0000\u0000\u0000\u0a4a\u0a4b\u0001\u0000\u0000\u0000"+
56131 		"\u0a4b\u0a4f\u0001\u0000\u0000\u0000\u0a4c\u0a50\u0003\u0164\u00b2\u0000"+
56132 		"\u0a4d\u0a50\u0003\u0160\u00b0\u0000\u0a4e\u0a50\u0003\u017e\u00bf\u0000"+
56133 		"\u0a4f\u0a4c\u0001\u0000\u0000\u0000\u0a4f\u0a4d\u0001\u0000\u0000\u0000"+
56134 		"\u0a4f\u0a4e\u0001\u0000\u0000\u0000\u0a50\u015f\u0001\u0000\u0000\u0000"+
56135 		"\u0a51\u0a52\u0005B\u0000\u0000\u0a52\u0a54\u0005C\u0000\u0000\u0a53\u0a51"+
56136 		"\u0001\u0000\u0000\u0000\u0a53\u0a54\u0001\u0000\u0000\u0000\u0a54\u0a55"+
56137 		"\u0001\u0000\u0000\u0000\u0a55\u0a5a\u0003@ \u0000\u0a56\u0a57\u0005\u001f"+
56138 		"\u0000\u0000\u0a57\u0a58\u0003H$\u0000\u0a58\u0a59\u0005 \u0000\u0000"+
56139 		"\u0a59\u0a5b\u0001\u0000\u0000\u0000\u0a5a\u0a56\u0001\u0000\u0000\u0000"+
56140 		"\u0a5a\u0a5b\u0001\u0000\u0000\u0000\u0a5b\u0a5f\u0001\u0000\u0000\u0000"+
56141 		"\u0a5c\u0a5e\u0003\u0162\u00b1\u0000\u0a5d\u0a5c\u0001\u0000\u0000\u0000"+
56142 		"\u0a5e\u0a61\u0001\u0000\u0000\u0000\u0a5f\u0a5d\u0001\u0000\u0000\u0000"+
56143 		"\u0a5f\u0a60\u0001\u0000\u0000\u0000\u0a60\u0161\u0001\u0000\u0000\u0000"+
56144 		"\u0a61\u0a5f\u0001\u0000\u0000\u0000\u0a62\u0a63\u0005a\u0000\u0000\u0a63"+
56145 		"\u0a67\u00051\u0000\u0000\u0a64\u0a65\u0005\u0101\u0000\u0000\u0a65\u0a68"+
56146 		"\u0005\u0109\u0000\u0000\u0a66\u0a68\u0005\u00fe\u0000\u0000\u0a67\u0a64"+
56147 		"\u0001\u0000\u0000\u0000\u0a67\u0a66\u0001\u0000\u0000\u0000\u0a68\u0a71"+
56148 		"\u0001\u0000\u0000\u0000\u0a69\u0a6a\u0005a\u0000\u0000\u0a6a\u0a6b\u0005"+
56149 		"0\u0000\u0000\u0a6b\u0a6c\u0005\u0101\u0000\u0000\u0a6c\u0a71\u0005\u0109"+
56150 		"\u0000\u0000\u0a6d\u0a6e\u0005k\u0000\u0000\u0a6e\u0a6f\u0005f\u0000\u0000"+
56151 		"\u0a6f\u0a71\u0005\u013c\u0000\u0000\u0a70\u0a62\u0001\u0000\u0000\u0000"+
56152 		"\u0a70\u0a69\u0001\u0000\u0000\u0000\u0a70\u0a6d\u0001\u0000\u0000\u0000"+
56153 		"\u0a71\u0163\u0001\u0000\u0000\u0000\u0a72\u0a75\u0003`0\u0000\u0a73\u0a75"+
56154 		"\u0005A\u0000\u0000\u0a74\u0a72\u0001\u0000\u0000\u0000\u0a74\u0a73\u0001"+
56155 		"\u0000\u0000\u0000\u0a75\u0a78\u0001\u0000\u0000\u0000\u0a76\u0a79\u0003"+
56156 		"\u0166\u00b3\u0000\u0a77\u0a79\u0003\u0174\u00ba\u0000\u0a78\u0a76\u0001"+
56157 		"\u0000\u0000\u0000\u0a78\u0a77\u0001\u0000\u0000\u0000\u0a79\u0165\u0001"+
56158 		"\u0000\u0000\u0000\u0a7a\u0a7c\u0003\u0168\u00b4\u0000\u0a7b\u0a7a\u0001"+
56159 		"\u0000\u0000\u0000\u0a7b\u0a7c\u0001\u0000\u0000\u0000\u0a7c\u0a7e\u0001"+
56160 		"\u0000\u0000\u0000\u0a7d\u0a7f\u0003\u016a\u00b5\u0000\u0a7e\u0a7d\u0001"+
56161 		"\u0000\u0000\u0000\u0a7e\u0a7f\u0001\u0000\u0000\u0000\u0a7f\u0a81\u0001"+
56162 		"\u0000\u0000\u0000\u0a80\u0a82\u0003\u016c\u00b6\u0000\u0a81\u0a80\u0001"+
56163 		"\u0000\u0000\u0000\u0a81\u0a82\u0001\u0000\u0000\u0000\u0a82\u0167\u0001"+
56164 		"\u0000\u0000\u0000\u0a83\u0a84\u0007\'\u0000\u0000\u0a84\u0169\u0001\u0000"+
56165 		"\u0000\u0000\u0a85\u0a94\u0005M\u0000\u0000\u0a86\u0a87\u0005\u0121\u0000"+
56166 		"\u0000\u0a87\u0a88\u0005\u0018\u0000\u0000\u0a88\u0a95\u0005\u02d5\u0000"+
56167 		"\u0000\u0a89\u0a8a\u0005\u001f\u0000\u0000\u0a8a\u0a8f\u0003\u00ceg\u0000"+
56168 		"\u0a8b\u0a8c\u0005%\u0000\u0000\u0a8c\u0a8e\u0003\u00ceg\u0000\u0a8d\u0a8b"+
56169 		"\u0001\u0000\u0000\u0000\u0a8e\u0a91\u0001\u0000\u0000\u0000\u0a8f\u0a8d"+
56170 		"\u0001\u0000\u0000\u0000\u0a8f\u0a90\u0001\u0000\u0000\u0000\u0a90\u0a92"+
56171 		"\u0001\u0000\u0000\u0000\u0a91\u0a8f\u0001\u0000\u0000\u0000\u0a92\u0a93"+
56172 		"\u0005 \u0000\u0000\u0a93\u0a95\u0001\u0000\u0000\u0000\u0a94\u0a86\u0001"+
56173 		"\u0000\u0000\u0000\u0a94\u0a89\u0001\u0000\u0000\u0000\u0a95\u016b\u0001"+
56174 		"\u0000\u0000\u0000\u0a96\u0a9a\u0003\u016e\u00b7\u0000\u0a97\u0a9a\u0003"+
56175 		"\u0170\u00b8\u0000\u0a98\u0a9a\u0003\u0172\u00b9\u0000\u0a99\u0a96\u0001"+
56176 		"\u0000\u0000\u0000\u0a99\u0a97\u0001\u0000\u0000\u0000\u0a99\u0a98\u0001"+
56177 		"\u0000\u0000\u0000\u0a9a\u016d\u0001\u0000\u0000\u0000\u0a9b\u0a9c\u0005"+
56178 		"a\u0000\u0000\u0a9c\u0a9d\u00034\u001a\u0000\u0a9d\u0a9e\u0005\u001f\u0000"+
56179 		"\u0000\u0a9e\u0a9f\u0003H$\u0000\u0a9f\u0aa0\u0005 \u0000\u0000\u0aa0"+
56180 		"\u016f\u0001\u0000\u0000\u0000\u0aa1\u0aa2\u0005a\u0000\u0000\u0aa2\u0aa3"+
56181 		"\u0003\u00e6s\u0000\u0aa3\u0171\u0001\u0000\u0000\u0000\u0aa4\u0aa5\u0005"+
56182 		"a\u0000\u0000\u0aa5\u0aa6\u0005\u02d4\u0000\u0000\u0aa6\u0173\u0001\u0000"+
56183 		"\u0000\u0000\u0aa7\u0aae\u0005\u010e\u0000\u0000\u0aa8\u0aa9\u0005\u010e"+
56184 		"\u0000\u0000\u0aa9\u0aab\u0005\u0123\u0000\u0000\u0aaa\u0aac\u0003\u0176"+
56185 		"\u00bb\u0000\u0aab\u0aaa\u0001\u0000\u0000\u0000\u0aab\u0aac\u0001\u0000"+
56186 		"\u0000\u0000\u0aac\u0aae\u0001\u0000\u0000\u0000\u0aad\u0aa7\u0001\u0000"+
56187 		"\u0000\u0000\u0aad\u0aa8\u0001\u0000\u0000\u0000\u0aae\u0175\u0001\u0000"+
56188 		"\u0000\u0000\u0aaf\u0ab0\u0005M\u0000\u0000\u0ab0\u0ab1\u0005\u001f\u0000"+
56189 		"\u0000\u0ab1\u0ab2\u0005\u0199\u0000\u0000\u0ab2\u0ab3\u0005\u0018\u0000"+
56190 		"\u0000\u0ab3\u0ab4\u0005\u02d5\u0000\u0000\u0ab4\u0ab5\u0005 \u0000\u0000"+
56191 		"\u0ab5\u0177\u0001\u0000\u0000\u0000\u0ab6\u0ab7\u0005B\u0000\u0000\u0ab7"+
56192 		"\u0ab9\u0005C\u0000\u0000\u0ab8\u0ab6\u0001\u0000\u0000\u0000\u0ab8\u0ab9"+
56193 		"\u0001\u0000\u0000\u0000\u0ab9\u0aba\u0001\u0000\u0000\u0000\u0aba\u0abb"+
56194 		"\u0005\u0104\u0000\u0000\u0abb\u0ac0\u0003@ \u0000\u0abc\u0abd\u0005\u001f"+
56195 		"\u0000\u0000\u0abd\u0abe\u0003H$\u0000\u0abe\u0abf\u0005 \u0000\u0000"+
56196 		"\u0abf\u0ac1\u0001\u0000\u0000\u0000\u0ac0\u0abc\u0001\u0000\u0000\u0000"+
56197 		"\u0ac0\u0ac1\u0001\u0000\u0000\u0000\u0ac1\u0ac5\u0001\u0000\u0000\u0000"+
56198 		"\u0ac2\u0ac4\u0003\u017a\u00bd\u0000\u0ac3\u0ac2\u0001\u0000\u0000\u0000"+
56199 		"\u0ac4\u0ac7\u0001\u0000\u0000\u0000\u0ac5\u0ac3\u0001\u0000\u0000\u0000"+
56200 		"\u0ac5\u0ac6\u0001\u0000\u0000\u0000\u0ac6\u0179\u0001\u0000\u0000\u0000"+
56201 		"\u0ac7\u0ac5\u0001\u0000\u0000\u0000\u0ac8\u0ac9\u0005a\u0000\u0000\u0ac9"+
56202 		"\u0aca\u0007(\u0000\u0000\u0aca\u0acf\u0003\u017c\u00be\u0000\u0acb\u0acc"+
56203 		"\u0005k\u0000\u0000\u0acc\u0acd\u0005f\u0000\u0000\u0acd\u0acf\u0005\u013c"+
56204 		"\u0000\u0000\u0ace\u0ac8\u0001\u0000\u0000\u0000\u0ace\u0acb\u0001\u0000"+
56205 		"\u0000\u0000\u0acf\u017b\u0001\u0000\u0000\u0000\u0ad0\u0ad1\u0005\u0101"+
56206 		"\u0000\u0000\u0ad1\u0ad6\u0005\u0109\u0000\u0000\u0ad2\u0ad6\u0005\u00fe"+
56207 		"\u0000\u0000\u0ad3\u0ad4\u0005:\u0000\u0000\u0ad4\u0ad6\u0007)\u0000\u0000"+
56208 		"\u0ad5\u0ad0\u0001\u0000\u0000\u0000\u0ad5\u0ad2\u0001\u0000\u0000\u0000"+
56209 		"\u0ad5\u0ad3\u0001\u0000\u0000\u0000\u0ad6\u017d\u0001\u0000\u0000\u0000"+
56210 		"\u0ad7\u0adb\u0005\u00ff\u0000\u0000\u0ad8\u0ad9\u0005k\u0000\u0000\u0ad9"+
56211 		"\u0ada\u0005f\u0000\u0000\u0ada\u0adc\u0005\u013c\u0000\u0000\u0adb\u0ad8"+
56212 		"\u0001\u0000\u0000\u0000\u0adb\u0adc\u0001\u0000\u0000\u0000\u0adc\u0add"+
56213 		"\u0001\u0000\u0000\u0000\u0add\u0ade\u0005\u001f\u0000\u0000\u0ade\u0adf"+
56214 		"\u0003b1\u0000\u0adf\u0ae0\u0005 \u0000\u0000\u0ae0\u017f\u0001\u0000"+
56215 		"\u0000\u0000\u0ae1\u0ae2\u0005>\u0000\u0000\u0ae2\u0ae4\u0003V+\u0000"+
56216 		"\u0ae3\u0ae5\u0003\u0168\u00b4\u0000\u0ae4\u0ae3\u0001\u0000\u0000\u0000"+
56217 		"\u0ae4\u0ae5\u0001\u0000\u0000\u0000\u0ae5\u0ae7\u0001\u0000\u0000\u0000"+
56218 		"\u0ae6\u0ae8\u0003\u0182\u00c1\u0000\u0ae7\u0ae6\u0001\u0000\u0000\u0000"+
56219 		"\u0ae7\u0ae8\u0001\u0000\u0000\u0000\u0ae8\u0aea\u0001\u0000\u0000\u0000"+
56220 		"\u0ae9\u0aeb\u0003\u0184\u00c2\u0000\u0aea\u0ae9\u0001\u0000\u0000\u0000"+
56221 		"\u0aea\u0aeb\u0001\u0000\u0000\u0000\u0aeb\u0aed\u0001\u0000\u0000\u0000"+
56222 		"\u0aec\u0aee\u0003\u0188\u00c4\u0000\u0aed\u0aec\u0001\u0000\u0000\u0000"+
56223 		"\u0aed\u0aee\u0001\u0000\u0000\u0000\u0aee\u0181\u0001\u0000\u0000\u0000"+
56224 		"\u0aef\u0af0\u0005M\u0000\u0000\u0af0\u0af1\u0005\u001f\u0000\u0000\u0af1"+
56225 		"\u0af6\u0003\u00ceg\u0000\u0af2\u0af3\u0005%\u0000\u0000\u0af3\u0af5\u0003"+
56226 		"\u00ceg\u0000\u0af4\u0af2\u0001\u0000\u0000\u0000\u0af5\u0af8\u0001\u0000"+
56227 		"\u0000\u0000\u0af6\u0af4\u0001\u0000\u0000\u0000\u0af6\u0af7\u0001\u0000"+
56228 		"\u0000\u0000\u0af7\u0af9\u0001\u0000\u0000\u0000\u0af8\u0af6\u0001\u0000"+
56229 		"\u0000\u0000\u0af9\u0afa\u0005 \u0000\u0000\u0afa\u0183\u0001\u0000\u0000"+
56230 		"\u0000\u0afb\u0aff\u0003\u016e\u00b7\u0000\u0afc\u0aff\u0003\u0170\u00b8"+
56231 		"\u0000\u0afd\u0aff\u0003\u0186\u00c3\u0000\u0afe\u0afb\u0001\u0000\u0000"+
56232 		"\u0000\u0afe\u0afc\u0001\u0000\u0000\u0000\u0afe\u0afd\u0001\u0000\u0000"+
56233 		"\u0000\u0aff\u0185\u0001\u0000\u0000\u0000\u0b00\u0b01\u0005a\u0000\u0000"+
56234 		"\u0b01\u0b02\u0005\u009a\u0000\u0000\u0b02\u0187\u0001\u0000\u0000\u0000"+
56235 		"\u0b03\u0b07\u0005\u01b3\u0000\u0000\u0b04\u0b08\u0003\u00e6s\u0000\u0b05"+
56236 		"\u0b08\u00034\u001a\u0000\u0b06\u0b08\u0005\u02d4\u0000\u0000\u0b07\u0b04"+
56237 		"\u0001\u0000\u0000\u0000\u0b07\u0b05\u0001\u0000\u0000\u0000\u0b07\u0b06"+
56238 		"\u0001\u0000\u0000\u0000\u0b08\u0189\u0001\u0000\u0000\u0000\u0b09\u0b0e"+
56239 		"\u0003\u015c\u00ae\u0000\u0b0a\u0b0b\u0005%\u0000\u0000\u0b0b\u0b0d\u0003"+
56240 		"\u015c\u00ae\u0000\u0b0c\u0b0a\u0001\u0000\u0000\u0000\u0b0d\u0b10\u0001"+
56241 		"\u0000\u0000\u0000\u0b0e\u0b0c\u0001\u0000\u0000\u0000\u0b0e\u0b0f\u0001"+
56242 		"\u0000\u0000\u0000\u0b0f\u0b12\u0001\u0000\u0000\u0000\u0b10\u0b0e\u0001"+
56243 		"\u0000\u0000\u0000\u0b11\u0b09\u0001\u0000\u0000\u0000\u0b11\u0b12\u0001"+
56244 		"\u0000\u0000\u0000\u0b12\u018b\u0001\u0000\u0000\u0000\u0b13\u0b14\u0003"+
56245 		"H$\u0000\u0b14\u0b15\u0005`\u0000\u0000\u0b15\u0b1b\u0003b1\u0000\u0b16"+
56246 		"\u0b19\u0005\u0136\u0000\u0000\u0b17\u0b18\u0005k\u0000\u0000\u0b18\u0b1a"+
56247 		"\u0005l\u0000\u0000\u0b19\u0b17\u0001\u0000\u0000\u0000\u0b19\u0b1a\u0001"+
56248 		"\u0000\u0000\u0000\u0b1a\u0b1c\u0001\u0000\u0000\u0000\u0b1b\u0b16\u0001"+
56249 		"\u0000\u0000\u0000\u0b1b\u0b1c\u0001\u0000\u0000\u0000\u0b1c\u0b1e\u0001"+
56250 		"\u0000\u0000\u0000\u0b1d\u0b1f\u0003\u015e\u00af\u0000\u0b1e\u0b1d\u0001"+
56251 		"\u0000\u0000\u0000\u0b1e\u0b1f\u0001\u0000\u0000\u0000\u0b1f\u018d\u0001"+
56252 		"\u0000\u0000\u0000\u0b20\u0b21\u0003\u00e6s\u0000\u0b21\u0b22\u0005\u02d2"+
56253 		"\u0000\u0000\u0b22\u0b23\u0005\u019c\u0000\u0000\u0b23\u0b24\u0005f\u0000"+
56254 		"\u0000\u0b24\u0b25\u0005\u0198\u0000\u0000\u0b25\u018f\u0001\u0000\u0000"+
56255 		"\u0000\u0b26\u0b27\u0005?\u0000\u0000\u0b27\u0b29\u0003X,\u0000\u0b28"+
56256 		"\u0b26\u0001\u0000\u0000\u0000\u0b28\u0b29\u0001\u0000\u0000\u0000\u0b29"+
56257 		"\u0b2d\u0001\u0000\u0000\u0000\u0b2a\u0b2e\u0003\u0192\u00c9\u0000\u0b2b"+
56258 		"\u0b2e\u0003\u019c\u00ce\u0000\u0b2c\u0b2e\u0003\u017e\u00bf\u0000\u0b2d"+
56259 		"\u0b2a\u0001\u0000\u0000\u0000\u0b2d\u0b2b\u0001\u0000\u0000\u0000\u0b2d"+
56260 		"\u0b2c\u0001\u0000\u0000\u0000\u0b2e\u0191\u0001\u0000\u0000\u0000\u0b2f"+
56261 		"\u0b32\u0003\u0194\u00ca\u0000\u0b30\u0b33\u0003\u0196\u00cb\u0000\u0b31"+
56262 		"\u0b33\u0003\u0198\u00cc\u0000\u0b32\u0b30\u0001\u0000\u0000\u0000\u0b32"+
56263 		"\u0b31\u0001\u0000\u0000\u0000\u0b33\u0193\u0001\u0000\u0000\u0000\u0b34"+
56264 		"\u0b37\u0003`0\u0000\u0b35\u0b37\u0005A\u0000\u0000\u0b36\u0b34\u0001"+
56265 		"\u0000\u0000\u0000\u0b36\u0b35\u0001\u0000\u0000\u0000\u0b37\u0195\u0001"+
56266 		"\u0000\u0000\u0000\u0b38\u0b3a\u0003\u0168\u00b4\u0000\u0b39\u0b38\u0001"+
56267 		"\u0000\u0000\u0000\u0b39\u0b3a\u0001\u0000\u0000\u0000\u0b3a\u0b3b\u0001"+
56268 		"\u0000\u0000\u0000\u0b3b\u0b3d\u0003P(\u0000\u0b3c\u0b3e\u0003\u016a\u00b5"+
56269 		"\u0000\u0b3d\u0b3c\u0001\u0000\u0000\u0000\u0b3d\u0b3e\u0001\u0000\u0000"+
56270 		"\u0000\u0b3e\u0b40\u0001\u0000\u0000\u0000\u0b3f\u0b41\u0003\u016c\u00b6"+
56271 		"\u0000\u0b40\u0b3f\u0001\u0000\u0000\u0000\u0b40\u0b41\u0001\u0000\u0000"+
56272 		"\u0000\u0b41\u0197\u0001\u0000\u0000\u0000\u0b42\u0b45\u0005\u010e\u0000"+
56273 		"\u0000\u0b43\u0b46\u0003P(\u0000\u0b44\u0b46\u0003\u019a\u00cd\u0000\u0b45"+
56274 		"\u0b43\u0001\u0000\u0000\u0000\u0b45\u0b44\u0001\u0000\u0000\u0000\u0b46"+
56275 		"\u0199\u0001\u0000\u0000\u0000\u0b47\u0b48\u0005\u0123\u0000\u0000\u0b48"+
56276 		"\u0b49\u0003P(\u0000\u0b49\u0b4a\u0003\u0176\u00bb\u0000\u0b4a\u019b\u0001"+
56277 		"\u0000\u0000\u0000\u0b4b\u0b4c\u0005B\u0000\u0000\u0b4c\u0b4e\u0005C\u0000"+
56278 		"\u0000\u0b4d\u0b4b\u0001\u0000\u0000\u0000\u0b4d\u0b4e\u0001\u0000\u0000"+
56279 		"\u0000\u0b4e\u0b4f\u0001\u0000\u0000\u0000\u0b4f\u0b50\u0003P(\u0000\u0b50"+
56280 		"\u0b51\u0005\u0104\u0000\u0000\u0b51\u0b52\u0003@ \u0000\u0b52\u0b56\u0003"+
56281 		"P(\u0000\u0b53\u0b55\u0003\u017a\u00bd\u0000\u0b54\u0b53\u0001\u0000\u0000"+
56282 		"\u0000\u0b55\u0b58\u0001\u0000\u0000\u0000\u0b56\u0b54\u0001\u0000\u0000"+
56283 		"\u0000\u0b56\u0b57\u0001\u0000\u0000\u0000\u0b57\u019d\u0001\u0000\u0000"+
56284 		"\u0000\u0b58\u0b56\u0001\u0000\u0000\u0000\u0b59\u0b5a\u0005>\u0000\u0000"+
56285 		"\u0b5a\u0b5b\u0003V+\u0000\u0b5b\u0b5e\u0003\u01a0\u00d0\u0000\u0b5c\u0b5d"+
56286 		"\u0005M\u0000\u0000\u0b5d\u0b5f\u0003\u01a2\u00d1\u0000\u0b5e\u0b5c\u0001"+
56287 		"\u0000\u0000\u0000\u0b5e\u0b5f\u0001\u0000\u0000\u0000\u0b5f\u0b61\u0001"+
56288 		"\u0000\u0000\u0000\u0b60\u0b62\u0003\u0184\u00c2\u0000\u0b61\u0b60\u0001"+
56289 		"\u0000\u0000\u0000\u0b61\u0b62\u0001\u0000\u0000\u0000\u0b62\u0b64\u0001"+
56290 		"\u0000\u0000\u0000\u0b63\u0b65\u0003\u0188\u00c4\u0000\u0b64\u0b63\u0001"+
56291 		"\u0000\u0000\u0000\u0b64\u0b65\u0001\u0000\u0000\u0000\u0b65\u019f\u0001"+
56292 		"\u0000\u0000\u0000\u0b66\u0b68\u0003\u0168\u00b4\u0000\u0b67\u0b66\u0001"+
56293 		"\u0000\u0000\u0000\u0b67\u0b68\u0001\u0000\u0000\u0000\u0b68\u0b69\u0001"+
56294 		"\u0000\u0000\u0000\u0b69\u0b72\u0003P(\u0000\u0b6a\u0b6b\u0005\u010d\u0000"+
56295 		"\u0000\u0b6b\u0b72\u0005\u0110\u0000\u0000\u0b6c\u0b6e\u0005\u010e\u0000"+
56296 		"\u0000\u0b6d\u0b6c\u0001\u0000\u0000\u0000\u0b6d\u0b6e\u0001\u0000\u0000"+
56297 		"\u0000\u0b6e\u0b6f\u0001\u0000\u0000\u0000\u0b6f\u0b70\u0005\u0110\u0000"+
56298 		"\u0000\u0b70\u0b72\u0003P(\u0000\u0b71\u0b67\u0001\u0000\u0000\u0000\u0b71"+
56299 		"\u0b6a\u0001\u0000\u0000\u0000\u0b71\u0b6d\u0001\u0000\u0000\u0000\u0b72"+
56300 		"\u01a1\u0001\u0000\u0000\u0000\u0b73\u0b74\u0005\u001f\u0000\u0000\u0b74"+
56301 		"\u0b79\u0003\u00ceg\u0000\u0b75\u0b76\u0005%\u0000\u0000\u0b76\u0b78\u0003"+
56302 		"\u00ceg\u0000\u0b77\u0b75\u0001\u0000\u0000\u0000\u0b78\u0b7b\u0001\u0000"+
56303 		"\u0000\u0000\u0b79\u0b77\u0001\u0000\u0000\u0000\u0b79\u0b7a\u0001\u0000"+
56304 		"\u0000\u0000\u0b7a\u0b7c\u0001\u0000\u0000\u0000\u0b7b\u0b79\u0001\u0000"+
56305 		"\u0000\u0000\u0b7c\u0b7d\u0005 \u0000\u0000\u0b7d\u01a3\u0001\u0000\u0000"+
56306 		"\u0000\u0b7e\u0b7f\u0005\u0135\u0000\u0000\u0b7f\u0b80\u0005f\u0000\u0000"+
56307 		"\u0b80\u0b81\u0005\u01a2\u0000\u0000\u0b81\u0b82\u0005\u001f\u0000\u0000"+
56308 		"\u0b82\u0b83\u0003H$\u0000\u0b83\u0b84\u0005%\u0000\u0000\u0b84\u0b85"+
56309 		"\u0003H$\u0000\u0b85\u0b86\u0005 \u0000\u0000\u0b86\u01a5\u0001\u0000"+
56310 		"\u0000\u0000\u0b87\u0b8f\u0005a\u0000\u0000\u0b88\u0b89\u00034\u001a\u0000"+
56311 		"\u0b89\u0b8a\u0005\u001f\u0000\u0000\u0b8a\u0b8b\u0003H$\u0000\u0b8b\u0b8c"+
56312 		"\u0005 \u0000\u0000\u0b8c\u0b90\u0001\u0000\u0000\u0000\u0b8d\u0b90\u0003"+
56313 		"\u00e6s\u0000\u0b8e\u0b90\u0005\u02d4\u0000\u0000\u0b8f\u0b88\u0001\u0000"+
56314 		"\u0000\u0000\u0b8f\u0b8d\u0001\u0000\u0000\u0000\u0b8f\u0b8e\u0001\u0000"+
56315 		"\u0000\u0000\u0b90\u0b92\u0001\u0000\u0000\u0000\u0b91\u0b87\u0001\u0000"+
56316 		"\u0000\u0000\u0b91\u0b92\u0001\u0000\u0000\u0000\u0b92\u01a7\u0001\u0000"+
56317 		"\u0000\u0000\u0b93\u0b96\u0005\u01a4\u0000\u0000\u0b94\u0b97\u0003\u00e6"+
56318 		"s\u0000\u0b95\u0b97\u0005\u02d4\u0000\u0000\u0b96\u0b94\u0001\u0000\u0000"+
56319 		"\u0000\u0b96\u0b95\u0001\u0000\u0000\u0000\u0b97\u0b99\u0001\u0000\u0000"+
56320 		"\u0000\u0b98\u0b93\u0001\u0000\u0000\u0000\u0b98\u0b99\u0001\u0000\u0000"+
56321 		"\u0000\u0b99\u0ba1\u0001\u0000\u0000\u0000\u0b9a\u0b9b\u0005\u01b3\u0000"+
56322 		"\u0000\u0b9b\u0ba0\u00034\u001a\u0000\u0b9c\u0b9d\u0003\u00e6s\u0000\u0b9d"+
56323 		"\u0b9e\u0005\u02d4\u0000\u0000\u0b9e\u0ba0\u0001\u0000\u0000\u0000\u0b9f"+
56324 		"\u0b9a\u0001\u0000\u0000\u0000\u0b9f\u0b9c\u0001\u0000\u0000\u0000\u0ba0"+
56325 		"\u0ba2\u0001\u0000\u0000\u0000\u0ba1\u0b9f\u0001\u0000\u0000\u0000\u0ba1"+
56326 		"\u0ba2\u0001\u0000\u0000\u0000\u0ba2\u0ba5\u0001\u0000\u0000\u0000\u0ba3"+
56327 		"\u0ba4\u0005M\u0000\u0000\u0ba4\u0ba6\u0003\u01aa\u00d5\u0000\u0ba5\u0ba3"+
56328 		"\u0001\u0000\u0000\u0000\u0ba5\u0ba6\u0001\u0000\u0000\u0000\u0ba6\u01a9"+
56329 		"\u0001\u0000\u0000\u0000\u0ba7\u0ba8\u0005\u001f\u0000\u0000\u0ba8\u0bad"+
56330 		"\u0003\u01ac\u00d6\u0000\u0ba9\u0baa\u0005%\u0000\u0000\u0baa\u0bac\u0003"+
56331 		"\u01ac\u00d6\u0000\u0bab\u0ba9\u0001\u0000\u0000\u0000\u0bac\u0baf\u0001"+
56332 		"\u0000\u0000\u0000\u0bad\u0bab\u0001\u0000\u0000\u0000\u0bad\u0bae\u0001"+
56333 		"\u0000\u0000\u0000\u0bae\u0bb0\u0001\u0000\u0000\u0000\u0baf\u0bad\u0001"+
56334 		"\u0000\u0000\u0000\u0bb0\u0bb1\u0005 \u0000\u0000\u0bb1\u01ab\u0001\u0000"+
56335 		"\u0000\u0000\u0bb2\u0bb3\u0005\u019f\u0000\u0000\u0bb3\u0bb4\u0005\u0018"+
56336 		"\u0000\u0000\u0bb4\u0bbb\u0007*\u0000\u0000\u0bb5\u0bb6\u0005a\u0000\u0000"+
56337 		"\u0bb6\u0bb7\u0005\u00f7\u0000\u0000\u0bb7\u0bb8\u0005\u001f\u0000\u0000"+
56338 		"\u0bb8\u0bb9\u0003\u00dcn\u0000\u0bb9\u0bba\u0005 \u0000\u0000\u0bba\u0bbc"+
56339 		"\u0001\u0000\u0000\u0000\u0bbb\u0bb5\u0001\u0000\u0000\u0000\u0bbb\u0bbc"+
56340 		"\u0001\u0000\u0000\u0000\u0bbc\u0be5\u0001\u0000\u0000\u0000\u0bbd\u0bbe"+
56341 		"\u0005\u01b5\u0000\u0000\u0bbe\u0bbf\u0005\u0018\u0000\u0000\u0bbf\u0be5"+
56342 		"\u0003\u00e6s\u0000\u0bc0\u0bc1\u0005\u01b4\u0000\u0000\u0bc1\u0bc4\u0005"+
56343 		"\u0018\u0000\u0000\u0bc2\u0bc5\u0003Z-\u0000\u0bc3\u0bc5\u0005\u019e\u0000"+
56344 		"\u0000\u0bc4\u0bc2\u0001\u0000\u0000\u0000\u0bc4\u0bc3\u0001\u0000\u0000"+
56345 		"\u0000\u0bc5\u0be5\u0001\u0000\u0000\u0000\u0bc6\u0bc7\u0005\u01b7\u0000"+
56346 		"\u0000\u0bc7\u0bc8\u0005\u0018\u0000\u0000\u0bc8\u0be5\u0003\u00e6s\u0000"+
56347 		"\u0bc9\u0bca\u0005\u01b8\u0000\u0000\u0bca\u0bcb\u0005\u0018\u0000\u0000"+
56348 		"\u0bcb\u0be5\u0003\u00e6s\u0000\u0bcc\u0bcd\u0005\u01b6\u0000\u0000\u0bcd"+
56349 		"\u0bce\u0005\u0018\u0000\u0000\u0bce\u0be5\u0003\u00e6s\u0000\u0bcf\u0bd0"+
56350 		"\u0005\u01a3\u0000\u0000\u0bd0\u0bd1\u0005\u0018\u0000\u0000\u0bd1\u0bd3"+
56351 		"\u0005a\u0000\u0000\u0bd2\u0bd4\u0003\u0204\u0102\u0000\u0bd3\u0bd2\u0001"+
56352 		"\u0000\u0000\u0000\u0bd3\u0bd4\u0001\u0000\u0000\u0000\u0bd4\u0be5\u0001"+
56353 		"\u0000\u0000\u0000\u0bd5\u0bd6\u0005\u01b2\u0000\u0000\u0bd6\u0bdd\u0005"+
56354 		"\u0018\u0000\u0000\u0bd7\u0bd9\u0005a\u0000\u0000\u0bd8\u0bda\u0003\u01b0"+
56355 		"\u00d8\u0000\u0bd9\u0bd8\u0001\u0000\u0000\u0000\u0bd9\u0bda\u0001\u0000"+
56356 		"\u0000\u0000\u0bda\u0bde\u0001\u0000\u0000\u0000\u0bdb\u0bdc\u0005b\u0000"+
56357 		"\u0000\u0bdc\u0bde\u0003\u01b4\u00da\u0000\u0bdd\u0bd7\u0001\u0000\u0000"+
56358 		"\u0000\u0bdd\u0bdb\u0001\u0000\u0000\u0000\u0bde\u0be5\u0001\u0000\u0000"+
56359 		"\u0000\u0bdf\u0be5\u0003\u01b6\u00db\u0000\u0be0\u0be5\u0003\u01b8\u00dc"+
56360 		"\u0000\u0be1\u0be5\u0003\u01ba\u00dd\u0000\u0be2\u0be5\u0003\u01ae\u00d7"+
56361 		"\u0000\u0be3\u0be5\u0003\u01bc\u00de\u0000\u0be4\u0bb2\u0001\u0000\u0000"+
56362 		"\u0000\u0be4\u0bbd\u0001\u0000\u0000\u0000\u0be4\u0bc0\u0001\u0000\u0000"+
56363 		"\u0000\u0be4\u0bc6\u0001\u0000\u0000\u0000\u0be4\u0bc9\u0001\u0000\u0000"+
56364 		"\u0000\u0be4\u0bcc\u0001\u0000\u0000\u0000\u0be4\u0bcf\u0001\u0000\u0000"+
56365 		"\u0000\u0be4\u0bd5\u0001\u0000\u0000\u0000\u0be4\u0bdf\u0001\u0000\u0000"+
56366 		"\u0000\u0be4\u0be0\u0001\u0000\u0000\u0000\u0be4\u0be1\u0001\u0000\u0000"+
56367 		"\u0000\u0be4\u0be2\u0001\u0000\u0000\u0000\u0be4\u0be3\u0001\u0000\u0000"+
56368 		"\u0000\u0be5\u01ad\u0001\u0000\u0000\u0000\u0be6\u0be7\u0005\u01f4\u0000"+
56369 		"\u0000\u0be7\u0be8\u0005\u0018\u0000\u0000\u0be8\u0be9\u0005a\u0000\u0000"+
56370 		"\u0be9\u0bea\u0005\u001f\u0000\u0000\u0bea\u0beb\u0005\u01f5\u0000\u0000"+
56371 		"\u0beb\u0bec\u0005\u0018\u0000\u0000\u0bec\u0bed\u0003H$\u0000\u0bed\u0bee"+
56372 		"\u0005%\u0000\u0000\u0bee\u0bef\u0005\u01f6\u0000\u0000\u0bef\u0bf0\u0005"+
56373 		"\u0018\u0000\u0000\u0bf0\u0bf1\u0003\u01f6\u00fb\u0000\u0bf1\u01af\u0001"+
56374 		"\u0000\u0000\u0000\u0bf2\u0bf3\u0005\u001f\u0000\u0000\u0bf3\u0bf8\u0003"+
56375 		"\u01b2\u00d9\u0000\u0bf4\u0bf5\u0005%\u0000\u0000\u0bf5\u0bf7\u0003\u01b2"+
56376 		"\u00d9\u0000\u0bf6\u0bf4\u0001\u0000\u0000\u0000\u0bf7\u0bfa\u0001\u0000"+
56377 		"\u0000\u0000\u0bf8\u0bf6\u0001\u0000\u0000\u0000\u0bf8\u0bf9\u0001\u0000"+
56378 		"\u0000\u0000\u0bf9\u0bfb\u0001\u0000\u0000\u0000\u0bfa\u0bf8\u0001\u0000"+
56379 		"\u0000\u0000\u0bfb\u0bfc\u0005 \u0000\u0000\u0bfc\u01b1\u0001\u0000\u0000"+
56380 		"\u0000\u0bfd\u0bfe\u0005\u01b9\u0000\u0000\u0bfe\u0c01\u0005\u0018\u0000"+
56381 		"\u0000\u0bff\u0c02\u0005l\u0000\u0000\u0c00\u0c02\u0003v;\u0000\u0c01"+
56382 		"\u0bff\u0001\u0000\u0000\u0000\u0c01\u0c00\u0001\u0000\u0000\u0000\u0c02"+
56383 		"\u0c03\u0001\u0000\u0000\u0000\u0c03\u0c05\u0005%\u0000\u0000\u0c04\u0bfd"+
56384 		"\u0001\u0000\u0000\u0000\u0c04\u0c05\u0001\u0000\u0000\u0000\u0c05\u0c06"+
56385 		"\u0001\u0000\u0000\u0000\u0c06\u0c07\u0005\u01b0\u0000\u0000\u0c07\u0c08"+
56386 		"\u0005\u0018\u0000\u0000\u0c08\u0c09\u0007+\u0000\u0000\u0c09\u01b3\u0001"+
56387 		"\u0000\u0000\u0000\u0c0a\u0c0b\u0005\u001f\u0000\u0000\u0c0b\u0c0c\u0005"+
56388 		"\u01b0\u0000\u0000\u0c0c\u0c0d\u0005\u0018\u0000\u0000\u0c0d\u0c0e\u0005"+
56389 		"\u0134\u0000\u0000\u0c0e\u0c0f\u0005 \u0000\u0000\u0c0f\u01b5\u0001\u0000"+
56390 		"\u0000\u0000\u0c10\u0c11\u0005\u01af\u0000\u0000\u0c11\u0c12\u0005\u0018"+
56391 		"\u0000\u0000\u0c12\u0c1d\u0005a\u0000\u0000\u0c13\u0c14\u0005\u011c\u0000"+
56392 		"\u0000\u0c14\u0c15\u0005\u0018\u0000\u0000\u0c15\u0c1d\u0007,\u0000\u0000"+
56393 		"\u0c16\u0c17\u0005\u01a3\u0000\u0000\u0c17\u0c18\u0005\u0018\u0000\u0000"+
56394 		"\u0c18\u0c1a\u0005a\u0000\u0000\u0c19\u0c1b\u0003\u0204\u0102\u0000\u0c1a"+
56395 		"\u0c19\u0001\u0000\u0000\u0000\u0c1a\u0c1b\u0001\u0000\u0000\u0000\u0c1b"+
56396 		"\u0c1d\u0001\u0000\u0000\u0000\u0c1c\u0c10\u0001\u0000\u0000\u0000\u0c1c"+
56397 		"\u0c13\u0001\u0000\u0000\u0000\u0c1c\u0c16\u0001\u0000\u0000\u0000\u0c1d"+
56398 		"\u01b7\u0001\u0000\u0000\u0000\u0c1e\u0c1f\u0005\u011a\u0000\u0000\u0c1f"+
56399 		"\u0c27\u0005\u0018\u0000\u0000\u0c20\u0c21\u0005\u0123\u0000\u0000\u0c21"+
56400 		"\u0c22\u0005\u001f\u0000\u0000\u0c22\u0c23\u0003H$\u0000\u0c23\u0c24\u0005"+
56401 		" \u0000\u0000\u0c24\u0c28\u0001\u0000\u0000\u0000\u0c25\u0c28\u0005\u01a8"+
56402 		"\u0000\u0000\u0c26\u0c28\u0005\u013b\u0000\u0000\u0c27\u0c20\u0001\u0000"+
56403 		"\u0000\u0000\u0c27\u0c25\u0001\u0000\u0000\u0000\u0c27\u0c26\u0001\u0000"+
56404 		"\u0000\u0000\u0c28\u01b9\u0001\u0000\u0000\u0000\u0c29\u0c2a\u0005\u010d"+
56405 		"\u0000\u0000\u0c2a\u0c2b\u0005\u0110\u0000\u0000\u0c2b\u0c46\u0005>\u0000"+
56406 		"\u0000\u0c2c\u0c2d\u0005\u010d\u0000\u0000\u0c2d\u0c2e\u0005\u0110\u0000"+
56407 		"\u0000\u0c2e\u0c2f\u0005>\u0000\u0000\u0c2f\u0c30\u0005u\u0000\u0000\u0c30"+
56408 		"\u0c46\u0003P(\u0000\u0c31\u0c46\u0005\u0124\u0000\u0000\u0c32\u0c33\u0005"+
56409 		"\u010d\u0000\u0000\u0c33\u0c34\u0005>\u0000\u0000\u0c34\u0c35\u0005\u001f"+
56410 		"\u0000\u0000\u0c35\u0c37\u0003H$\u0000\u0c36\u0c38\u0007\u0012\u0000\u0000"+
56411 		"\u0c37\u0c36\u0001\u0000\u0000\u0000\u0c37\u0c38\u0001\u0000\u0000\u0000"+
56412 		"\u0c38\u0c40\u0001\u0000\u0000\u0000\u0c39\u0c3a\u0005%\u0000\u0000\u0c3a"+
56413 		"\u0c3c\u0003H$\u0000\u0c3b\u0c3d\u0007\u0012\u0000\u0000\u0c3c\u0c3b\u0001"+
56414 		"\u0000\u0000\u0000\u0c3c\u0c3d\u0001\u0000\u0000\u0000\u0c3d\u0c3f\u0001"+
56415 		"\u0000\u0000\u0000\u0c3e\u0c39\u0001\u0000\u0000\u0000\u0c3f\u0c42\u0001"+
56416 		"\u0000\u0000\u0000\u0c40\u0c3e\u0001\u0000\u0000\u0000\u0c40\u0c41\u0001"+
56417 		"\u0000\u0000\u0000\u0c41\u0c43\u0001\u0000\u0000\u0000\u0c42\u0c40\u0001"+
56418 		"\u0000\u0000\u0000\u0c43\u0c44\u0005 \u0000\u0000\u0c44\u0c46\u0001\u0000"+
56419 		"\u0000\u0000\u0c45\u0c29\u0001\u0000\u0000\u0000\u0c45\u0c2c\u0001\u0000"+
56420 		"\u0000\u0000\u0c45\u0c31\u0001\u0000\u0000\u0000\u0c45\u0c32\u0001\u0000"+
56421 		"\u0000\u0000\u0c46\u01bb\u0001\u0000\u0000\u0000\u0c47\u0c48\u0005\u00f6"+
56422 		"\u0000\u0000\u0c48\u0c49\u0005\u001f\u0000\u0000\u0c49\u0c4a\u0003H$\u0000"+
56423 		"\u0c4a\u0c4c\u0005\u0139\u0000\u0000\u0c4b\u0c4d\u0007-\u0000\u0000\u0c4c"+
56424 		"\u0c4b\u0001\u0000\u0000\u0000\u0c4c\u0c4d\u0001\u0000\u0000\u0000\u0c4d"+
56425 		"\u0c4e\u0001\u0000\u0000\u0000\u0c4e\u0c4f\u0005f\u0000\u0000\u0c4f\u0c50"+
56426 		"\u0005L\u0000\u0000\u0c50\u0c51\u0005\u001f\u0000\u0000\u0c51\u0c56\u0003"+
56427 		"t:\u0000\u0c52\u0c53\u0005%\u0000\u0000\u0c53\u0c55\u0003t:\u0000\u0c54"+
56428 		"\u0c52\u0001\u0000\u0000\u0000\u0c55\u0c58\u0001\u0000\u0000\u0000\u0c56"+
56429 		"\u0c54\u0001\u0000\u0000\u0000\u0c56\u0c57\u0001\u0000\u0000\u0000\u0c57"+
56430 		"\u0c59\u0001\u0000\u0000\u0000\u0c58\u0c56\u0001\u0000\u0000\u0000\u0c59"+
56431 		"\u0c5a\u0005 \u0000\u0000\u0c5a\u0c5b\u0005 \u0000\u0000\u0c5b\u01bd\u0001"+
56432 		"\u0000\u0000\u0000\u0c5c\u0c5e\u0005A\u0000\u0000\u0c5d\u0c5c\u0001\u0000"+
56433 		"\u0000\u0000\u0c5d\u0c5e\u0001\u0000\u0000\u0000\u0c5e\u0c60\u0001\u0000"+
56434 		"\u0000\u0000\u0c5f\u0c61\u0003\u0168\u00b4\u0000\u0c60\u0c5f\u0001\u0000"+
56435 		"\u0000\u0000\u0c60\u0c61\u0001\u0000\u0000\u0000\u0c61\u01bf\u0001\u0000"+
56436 		"\u0000\u0000\u0c62\u0c6c\u0003\u01c2\u00e1\u0000\u0c63\u0c6c\u0003\u01c4"+
56437 		"\u00e2\u0000\u0c64\u0c6c\u0003\u01d4\u00ea\u0000\u0c65\u0c6c\u0003\u01e4"+
56438 		"\u00f2\u0000\u0c66\u0c6c\u0003\u01e6\u00f3\u0000\u0c67\u0c6c\u0003\u01e8"+
56439 		"\u00f4\u0000\u0c68\u0c6c\u0003\u01ea\u00f5\u0000\u0c69\u0c6c\u0003\u0202"+
56440 		"\u0101\u0000\u0c6a\u0c6c\u0005\u013a\u0000\u0000\u0c6b\u0c62\u0001\u0000"+
56441 		"\u0000\u0000\u0c6b\u0c63\u0001\u0000\u0000\u0000\u0c6b\u0c64\u0001\u0000"+
56442 		"\u0000\u0000\u0c6b\u0c65\u0001\u0000\u0000\u0000\u0c6b\u0c66\u0001\u0000"+
56443 		"\u0000\u0000\u0c6b\u0c67\u0001\u0000\u0000\u0000\u0c6b\u0c68\u0001\u0000"+
56444 		"\u0000\u0000\u0c6b\u0c69\u0001\u0000\u0000\u0000\u0c6b\u0c6a\u0001\u0000"+
56445 		"\u0000\u0000\u0c6c\u01c1\u0001\u0000\u0000\u0000\u0c6d\u0c6e\u0005M\u0000"+
56446 		"\u0000\u0c6e\u0c70\u0007.\u0000\u0000\u0c6f\u0c6d\u0001\u0000\u0000\u0000"+
56447 		"\u0c6f\u0c70\u0001\u0000\u0000\u0000\u0c70\u0c71\u0001\u0000\u0000\u0000"+
56448 		"\u0c71\u0c74\u00059\u0000\u0000\u0c72\u0c75\u0003\u01c8\u00e4\u0000\u0c73"+
56449 		"\u0c75\u0003\u01ce\u00e7\u0000\u0c74\u0c72\u0001\u0000\u0000\u0000\u0c74"+
56450 		"\u0c73\u0001\u0000\u0000\u0000\u0c75\u01c3\u0001\u0000\u0000\u0000\u0c76"+
56451 		"\u0c77\u0003\u01c6\u00e3\u0000\u0c77\u0c7a\u0003\u00aeW\u0000\u0c78\u0c79"+
56452 		"\u0005\u010f\u0000\u0000\u0c79\u0c7b\u0003Z-\u0000\u0c7a\u0c78\u0001\u0000"+
56453 		"\u0000\u0000\u0c7a\u0c7b\u0001\u0000\u0000\u0000\u0c7b\u0c7f\u0001\u0000"+
56454 		"\u0000\u0000\u0c7c\u0c80\u0005l\u0000\u0000\u0c7d\u0c7e\u0005k\u0000\u0000"+
56455 		"\u0c7e\u0c80\u0005l\u0000\u0000\u0c7f\u0c7c\u0001\u0000\u0000\u0000\u0c7f"+
56456 		"\u0c7d\u0001\u0000\u0000\u0000\u0c7f\u0c80\u0001\u0000\u0000\u0000\u0c80"+
56457 		"\u0c82\u0001\u0000\u0000\u0000\u0c81\u0c83\u0005\u0141\u0000\u0000\u0c82"+
56458 		"\u0c81\u0001\u0000\u0000\u0000\u0c82\u0c83\u0001\u0000\u0000\u0000\u0c83"+
56459 		"\u01c5\u0001\u0000\u0000\u0000\u0c84\u0c85\u00053\u0000\u0000\u0c85\u0c86"+
56460 		"\u0005<\u0000\u0000\u0c86\u0c87\u0003H$\u0000\u0c87\u01c7\u0001\u0000"+
56461 		"\u0000\u0000\u0c88\u0c8d\u0003\u01ca\u00e5\u0000\u0c89\u0c8a\u0005%\u0000"+
56462 		"\u0000\u0c8a\u0c8c\u0003\u01ca\u00e5\u0000\u0c8b\u0c89\u0001\u0000\u0000"+
56463 		"\u0000\u0c8c\u0c8f\u0001\u0000\u0000\u0000\u0c8d\u0c8b\u0001\u0000\u0000"+
56464 		"\u0000\u0c8d\u0c8e\u0001\u0000\u0000\u0000\u0c8e\u01c9\u0001\u0000\u0000"+
56465 		"\u0000\u0c8f\u0c8d\u0001\u0000\u0000\u0000\u0c90\u0c97\u0003\u0156\u00ab"+
56466 		"\u0000\u0c91\u0c97\u0003\u018c\u00c6\u0000\u0c92\u0c97\u0003\u018e\u00c7"+
56467 		"\u0000\u0c93\u0c97\u0003\u0190\u00c8\u0000\u0c94\u0c97\u0003\u01f8\u00fc"+
56468 		"\u0000\u0c95\u0c97\u0003\u01cc\u00e6\u0000\u0c96\u0c90\u0001\u0000\u0000"+
56469 		"\u0000\u0c96\u0c91\u0001\u0000\u0000\u0000\u0c96\u0c92\u0001\u0000\u0000"+
56470 		"\u0000\u0c96\u0c93\u0001\u0000\u0000\u0000\u0c96\u0c94\u0001\u0000\u0000"+
56471 		"\u0000\u0c96\u0c95\u0001\u0000\u0000\u0000\u0c97\u01cb\u0001\u0000\u0000"+
56472 		"\u0000\u0c98\u0c99\u0005?\u0000\u0000\u0c99\u0c9b\u0003X,\u0000\u0c9a"+
56473 		"\u0c98\u0001\u0000\u0000\u0000\u0c9a\u0c9b\u0001\u0000\u0000\u0000\u0c9b"+
56474 		"\u0c9c\u0001\u0000\u0000\u0000\u0c9c\u0c9d\u0005\u009a\u0000\u0000\u0c9d"+
56475 		"\u0c9e\u0003t:\u0000\u0c9e\u0c9f\u0005f\u0000\u0000\u0c9f\u0ca0\u0003"+
56476 		"H$\u0000\u0ca0\u01cd\u0001\u0000\u0000\u0000\u0ca1\u0ca2\u0003\u01d0\u00e8"+
56477 		"\u0000\u0ca2\u0ca3\u0005%\u0000\u0000\u0ca3\u0ca4\u0003\u01a4\u00d2\u0000"+
56478 		"\u0ca4\u0caa\u0001\u0000\u0000\u0000\u0ca5\u0ca6\u0003\u01a4\u00d2\u0000"+
56479 		"\u0ca6\u0ca7\u0005%\u0000\u0000\u0ca7\u0ca8\u0003\u01d0\u00e8\u0000\u0ca8"+
56480 		"\u0caa\u0001\u0000\u0000\u0000\u0ca9\u0ca1\u0001\u0000\u0000\u0000\u0ca9"+
56481 		"\u0ca5\u0001\u0000\u0000\u0000\u0caa\u01cf\u0001\u0000\u0000\u0000\u0cab"+
56482 		"\u0cac\u0003\u01d2\u00e9\u0000\u0cac\u0cad\u0005\u009a\u0000\u0000\u0cad"+
56483 		"\u0cb0\u0003t:\u0000\u0cae\u0caf\u0005M\u0000\u0000\u0caf\u0cb1\u0005"+
56484 		"L\u0000\u0000\u0cb0\u0cae\u0001\u0000\u0000\u0000\u0cb0\u0cb1\u0001\u0000"+
56485 		"\u0000\u0000\u0cb1\u0cb2\u0001\u0000\u0000\u0000\u0cb2\u0cb3\u0005%\u0000"+
56486 		"\u0000\u0cb3\u0cb4\u0003\u01d2\u00e9\u0000\u0cb4\u01d1\u0001\u0000\u0000"+
56487 		"\u0000\u0cb5\u0cb6\u0003H$\u0000\u0cb6\u0cb7\u0003\u00b0X\u0000\u0cb7"+
56488 		"\u0cb8\u0005\u0100\u0000\u0000\u0cb8\u0cb9\u0005\u00fd\u0000\u0000\u0cb9"+
56489 		"\u0cba\u0005`\u0000\u0000\u0cba\u0cbc\u0005\u00f9\u0000\u0000\u0cbb\u0cbd"+
56490 		"\u0007%\u0000\u0000\u0cbc\u0cbb\u0001\u0000\u0000\u0000\u0cbc\u0cbd\u0001"+
56491 		"\u0000\u0000\u0000\u0cbd\u0cbf\u0001\u0000\u0000\u0000\u0cbe\u0cc0\u0005"+
56492 		"\u00f4\u0000\u0000\u0cbf\u0cbe\u0001\u0000\u0000\u0000\u0cbf\u0cc0\u0001"+
56493 		"\u0000\u0000\u0000\u0cc0\u0cc3\u0001\u0000\u0000\u0000\u0cc1\u0cc2\u0005"+
56494 		"k\u0000\u0000\u0cc2\u0cc4\u0005l\u0000\u0000\u0cc3\u0cc1\u0001\u0000\u0000"+
56495 		"\u0000\u0cc3\u0cc4\u0001\u0000\u0000\u0000\u0cc4\u0cc7\u0001\u0000\u0000"+
56496 		"\u0000\u0cc5\u0cc6\u0005?\u0000\u0000\u0cc6\u0cc8\u0003\u00e6s\u0000\u0cc7"+
56497 		"\u0cc5\u0001\u0000\u0000\u0000\u0cc7\u0cc8\u0001\u0000\u0000\u0000\u0cc8"+
56498 		"\u01d3\u0001\u0000\u0000\u0000\u0cc9\u0cd0\u00054\u0000\u0000\u0cca\u0cd1"+
56499 		"\u0003\u01d6\u00eb\u0000\u0ccb\u0cd1\u0003\u01e0\u00f0\u0000\u0ccc\u0cd1"+
56500 		"\u0003\u01e2\u00f1\u0000\u0ccd\u0cce\u0005\u0135\u0000\u0000\u0cce\u0ccf"+
56501 		"\u0005f\u0000\u0000\u0ccf\u0cd1\u0005\u01a2\u0000\u0000\u0cd0\u0cca\u0001"+
56502 		"\u0000\u0000\u0000\u0cd0\u0ccb\u0001\u0000\u0000\u0000\u0cd0\u0ccc\u0001"+
56503 		"\u0000\u0000\u0000\u0cd0\u0ccd\u0001\u0000\u0000\u0000\u0cd1\u01d5\u0001"+
56504 		"\u0000\u0000\u0000\u0cd2\u0cd4\u0005?\u0000\u0000\u0cd3\u0cd2\u0001\u0000"+
56505 		"\u0000\u0000\u0cd3\u0cd4\u0001\u0000\u0000\u0000\u0cd4\u0cd6\u0001\u0000"+
56506 		"\u0000\u0000\u0cd5\u0cd7\u0003\u00fa}\u0000\u0cd6\u0cd5\u0001\u0000\u0000"+
56507 		"\u0000\u0cd6\u0cd7\u0001\u0000\u0000\u0000\u0cd7\u0cd8\u0001\u0000\u0000"+
56508 		"\u0000\u0cd8\u0cdd\u0003\u01d8\u00ec\u0000\u0cd9\u0cda\u0005%\u0000\u0000"+
56509 		"\u0cda\u0cdc\u0003\u01d8\u00ec\u0000\u0cdb\u0cd9\u0001\u0000\u0000\u0000"+
56510 		"\u0cdc\u0cdf\u0001\u0000\u0000\u0000\u0cdd\u0cdb\u0001\u0000\u0000\u0000"+
56511 		"\u0cdd\u0cde\u0001\u0000\u0000\u0000\u0cde\u01d7\u0001\u0000\u0000\u0000"+
56512 		"\u0cdf\u0cdd\u0001\u0000\u0000\u0000\u0ce0\u0ce2\u0003X,\u0000\u0ce1\u0ce3"+
56513 		"\u0003\u01da\u00ed\u0000\u0ce2\u0ce1\u0001\u0000\u0000\u0000\u0ce2\u0ce3"+
56514 		"\u0001\u0000\u0000\u0000\u0ce3\u01d9\u0001\u0000\u0000\u0000\u0ce4\u0ce5"+
56515 		"\u0005M\u0000\u0000\u0ce5\u0ce6\u0005\u001f\u0000\u0000\u0ce6\u0ceb\u0003"+
56516 		"\u01dc\u00ee\u0000\u0ce7\u0ce8\u0005%\u0000\u0000\u0ce8\u0cea\u0003\u01dc"+
56517 		"\u00ee\u0000\u0ce9\u0ce7\u0001\u0000\u0000\u0000\u0cea\u0ced\u0001\u0000"+
56518 		"\u0000\u0000\u0ceb\u0ce9\u0001\u0000\u0000\u0000\u0ceb\u0cec\u0001\u0000"+
56519 		"\u0000\u0000\u0cec\u0cee\u0001\u0000\u0000\u0000\u0ced\u0ceb\u0001\u0000"+
56520 		"\u0000\u0000\u0cee\u0cef\u0005 \u0000\u0000\u0cef\u01db\u0001\u0000\u0000"+
56521 		"\u0000\u0cf0\u0cf1\u0005\u012c\u0000\u0000\u0cf1\u0cf2\u0005\u0018\u0000"+
56522 		"\u0000\u0cf2\u0d02\u0005\u02d5\u0000\u0000\u0cf3\u0cf4\u0005\u0131\u0000"+
56523 		"\u0000\u0cf4\u0cf5\u0005\u0018\u0000\u0000\u0cf5\u0d02\u0003\u01de\u00ef"+
56524 		"\u0000\u0cf6\u0cf7\u0005\u012d\u0000\u0000\u0cf7\u0cff\u0005g\u0000\u0000"+
56525 		"\u0cf8\u0cf9\u00034\u001a\u0000\u0cf9\u0cfa\u0005\u001f\u0000\u0000\u0cfa"+
56526 		"\u0cfb\u0003H$\u0000\u0cfb\u0cfc\u0005 \u0000\u0000\u0cfc\u0d00\u0001"+
56527 		"\u0000\u0000\u0000\u0cfd\u0d00\u0003\u00e6s\u0000\u0cfe\u0d00\u0005\u02d4"+
56528 		"\u0000\u0000\u0cff\u0cf8\u0001\u0000\u0000\u0000\u0cff\u0cfd\u0001\u0000"+
56529 		"\u0000\u0000\u0cff\u0cfe\u0001\u0000\u0000\u0000\u0d00\u0d02\u0001\u0000"+
56530 		"\u0000\u0000\u0d01\u0cf0\u0001\u0000\u0000\u0000\u0d01\u0cf3\u0001\u0000"+
56531 		"\u0000\u0000\u0d01\u0cf6\u0001\u0000\u0000\u0000\u0d02\u01dd\u0001\u0000"+
56532 		"\u0000\u0000\u0d03\u0d04\u0007\u0000\u0000\u0000\u0d04\u01df\u0001\u0000"+
56533 		"\u0000\u0000\u0d05\u0d07\u0005<\u0000\u0000\u0d06\u0d08\u0003\u00fa}\u0000"+
56534 		"\u0d07\u0d06\u0001\u0000\u0000\u0000\u0d07\u0d08\u0001\u0000\u0000\u0000"+
56535 		"\u0d08\u0d09\u0001\u0000\u0000\u0000\u0d09\u0d0e\u0003H$\u0000\u0d0a\u0d0b"+
56536 		"\u0005%\u0000\u0000\u0d0b\u0d0d\u0003H$\u0000\u0d0c\u0d0a\u0001\u0000"+
56537 		"\u0000\u0000\u0d0d\u0d10\u0001\u0000\u0000\u0000\u0d0e\u0d0c\u0001\u0000"+
56538 		"\u0000\u0000\u0d0e\u0d0f\u0001\u0000\u0000\u0000\u0d0f\u01e1\u0001\u0000"+
56539 		"\u0000\u0000\u0d10\u0d0e\u0001\u0000\u0000\u0000\u0d11\u0d13\u0005>\u0000"+
56540 		"\u0000\u0d12\u0d14\u0003\u00fa}\u0000\u0d13\u0d12\u0001\u0000\u0000\u0000"+
56541 		"\u0d13\u0d14\u0001\u0000\u0000\u0000\u0d14\u0d15\u0001\u0000\u0000\u0000"+
56542 		"\u0d15\u0d1a\u0003V+\u0000\u0d16\u0d17\u0005%\u0000\u0000\u0d17\u0d19"+
56543 		"\u0003V+\u0000\u0d18\u0d16\u0001\u0000\u0000\u0000\u0d19\u0d1c\u0001\u0000"+
56544 		"\u0000\u0000\u0d1a\u0d18\u0001\u0000\u0000\u0000\u0d1a\u0d1b\u0001\u0000"+
56545 		"\u0000\u0000\u0d1b\u01e3\u0001\u0000\u0000\u0000\u0d1c\u0d1a\u0001\u0000"+
56546 		"\u0000\u0000\u0d1d\u0d1f\u0005M\u0000\u0000\u0d1e\u0d1d\u0001\u0000\u0000"+
56547 		"\u0000\u0d1e\u0d1f\u0001\u0000\u0000\u0000\u0d1f\u0d20\u0001\u0000\u0000"+
56548 		"\u0000\u0d20\u0d21\u0007.\u0000\u0000\u0d21\u0d24\u0005?\u0000\u0000\u0d22"+
56549 		"\u0d25\u0005r\u0000\u0000\u0d23\u0d25\u0003X,\u0000\u0d24\u0d22\u0001"+
56550 		"\u0000\u0000\u0000\u0d24\u0d23\u0001\u0000\u0000\u0000\u0d25\u01e5\u0001"+
56551 		"\u0000\u0000\u0000\u0d26\u0d27\u0007/\u0000\u0000\u0d27\u0d2a\u0005G\u0000"+
56552 		"\u0000\u0d28\u0d2b\u0005r\u0000\u0000\u0d29\u0d2b\u0003\u00e8t\u0000\u0d2a"+
56553 		"\u0d28\u0001\u0000\u0000\u0000\u0d2a\u0d29\u0001\u0000\u0000\u0000\u0d2b"+
56554 		"\u01e7\u0001\u0000\u0000\u0000\u0d2c\u0d2f\u0005\u0142\u0000\u0000\u0d2d"+
56555 		"\u0d2e\u0005\u00f6\u0000\u0000\u0d2e\u0d30\u0003b1\u0000\u0d2f\u0d2d\u0001"+
56556 		"\u0000\u0000\u0000\u0d2f\u0d30\u0001\u0000\u0000\u0000\u0d30\u0d31\u0001"+
56557 		"\u0000\u0000\u0000\u0d31\u0d32\u0005g\u0000\u0000\u0d32\u0d35\u0003@ "+
56558 		"\u0000\u0d33\u0d34\u0005\u00f6\u0000\u0000\u0d34\u0d36\u0003b1\u0000\u0d35"+
56559 		"\u0d33\u0001\u0000\u0000\u0000\u0d35\u0d36\u0001\u0000\u0000\u0000\u0d36"+
56560 		"\u0d3c\u0001\u0000\u0000\u0000\u0d37\u0d38\u0005M\u0000\u0000\u0d38\u0d39"+
56561 		"\u0005\u001f\u0000\u0000\u0d39\u0d3a\u0003\u00e2q\u0000\u0d3a\u0d3b\u0005"+
56562 		" \u0000\u0000\u0d3b\u0d3d\u0001\u0000\u0000\u0000\u0d3c\u0d37\u0001\u0000"+
56563 		"\u0000\u0000\u0d3c\u0d3d\u0001\u0000\u0000\u0000\u0d3d\u01e9\u0001\u0000"+
56564 		"\u0000\u0000\u0d3e\u0d3f\u0005:\u0000\u0000\u0d3f\u0d42\u0005\u001f\u0000"+
56565 		"\u0000\u0d40\u0d43\u0003\u01ec\u00f6\u0000\u0d41\u0d43\u0003\u01ee\u00f7"+
56566 		"\u0000\u0d42\u0d40\u0001\u0000\u0000\u0000\u0d42\u0d41\u0001\u0000\u0000"+
56567 		"\u0000\u0d43\u0d44\u0001\u0000\u0000\u0000\u0d44\u0d45\u0005 \u0000\u0000"+
56568 		"\u0d45\u01eb\u0001\u0000\u0000\u0000\u0d46\u0d47\u0005\u01b3\u0000\u0000"+
56569 		"\u0d47\u0d4b\u0005\u0018\u0000\u0000\u0d48\u0d4c\u00034\u001a\u0000\u0d49"+
56570 		"\u0d4c\u0003\u00e6s\u0000\u0d4a\u0d4c\u0005\u02d4\u0000\u0000\u0d4b\u0d48"+
56571 		"\u0001\u0000\u0000\u0000\u0d4b\u0d49\u0001\u0000\u0000\u0000\u0d4b\u0d4a"+
56572 		"\u0001\u0000\u0000\u0000\u0d4c\u01ed\u0001\u0000\u0000\u0000\u0d4d\u0d4e"+
56573 		"\u0005\u01a3\u0000\u0000\u0d4e\u0d54\u0005\u0018\u0000\u0000\u0d4f\u0d55"+
56574 		"\u0005b\u0000\u0000\u0d50\u0d52\u0005a\u0000\u0000\u0d51\u0d53\u0003\u01f0"+
56575 		"\u00f8\u0000\u0d52\u0d51\u0001\u0000\u0000\u0000\u0d52\u0d53\u0001\u0000"+
56576 		"\u0000\u0000\u0d53\u0d55\u0001\u0000\u0000\u0000\u0d54\u0d4f\u0001\u0000"+
56577 		"\u0000\u0000\u0d54\u0d50\u0001\u0000\u0000\u0000\u0d55\u01ef\u0001\u0000"+
56578 		"\u0000\u0000\u0d56\u0d5a\u0005\u001f\u0000\u0000\u0d57\u0d58\u0005\u01bb"+
56579 		"\u0000\u0000\u0d58\u0d59\u0005\u0018\u0000\u0000\u0d59\u0d5b\u0003@ \u0000"+
56580 		"\u0d5a\u0d57\u0001\u0000\u0000\u0000\u0d5a\u0d5b\u0001\u0000\u0000\u0000"+
56581 		"\u0d5b\u0d5d\u0001\u0000\u0000\u0000\u0d5c\u0d5e\u0003\u01f2\u00f9\u0000"+
56582 		"\u0d5d\u0d5c\u0001\u0000\u0000\u0000\u0d5d\u0d5e\u0001\u0000\u0000\u0000"+
56583 		"\u0d5e\u0d60\u0001\u0000\u0000\u0000\u0d5f\u0d61\u0003\u01f4\u00fa\u0000"+
56584 		"\u0d60\u0d5f\u0001\u0000\u0000\u0000\u0d60\u0d61\u0001\u0000\u0000\u0000"+
56585 		"\u0d61\u0d62\u0001\u0000\u0000\u0000\u0d62\u0d63\u0005 \u0000\u0000\u0d63"+
56586 		"\u01f1\u0001\u0000\u0000\u0000\u0d64\u0d66\u0005%\u0000\u0000\u0d65\u0d64"+
56587 		"\u0001\u0000\u0000\u0000\u0d65\u0d66\u0001\u0000\u0000\u0000\u0d66\u0d67"+
56588 		"\u0001\u0000\u0000\u0000\u0d67\u0d68\u0005\u01a0\u0000\u0000\u0d68\u0d69"+
56589 		"\u0005\u0018\u0000\u0000\u0d69\u0d6a\u0003\u01de\u00ef\u0000\u0d6a\u01f3"+
56590 		"\u0001\u0000\u0000\u0000\u0d6b\u0d6d\u0005%\u0000\u0000\u0d6c\u0d6b\u0001"+
56591 		"\u0000\u0000\u0000\u0d6c\u0d6d\u0001\u0000\u0000\u0000\u0d6d\u0d6e\u0001"+
56592 		"\u0000\u0000\u0000\u0d6e\u0d6f\u0005\u01ba\u0000\u0000\u0d6f\u0d70\u0005"+
56593 		"\u0018\u0000\u0000\u0d70\u0d71\u0003\u01f6\u00fb\u0000\u0d71\u01f5\u0001"+
56594 		"\u0000\u0000\u0000\u0d72\u0d76\u0005\u0129\u0000\u0000\u0d73\u0d74\u0005"+
56595 		"\u02d5\u0000\u0000\u0d74\u0d76\u00070\u0000\u0000\u0d75\u0d72\u0001\u0000"+
56596 		"\u0000\u0000\u0d75\u0d73\u0001\u0000\u0000\u0000\u0d76\u01f7\u0001\u0000"+
56597 		"\u0000\u0000\u0d77\u0d7a\u0003\u01fa\u00fd\u0000\u0d78\u0d7b\u0003\u01fc"+
56598 		"\u00fe\u0000\u0d79\u0d7b\u0003\u0200\u0100\u0000\u0d7a\u0d78\u0001\u0000"+
56599 		"\u0000\u0000\u0d7a\u0d79\u0001\u0000\u0000\u0000\u0d7b\u01f9\u0001\u0000"+
56600 		"\u0000\u0000\u0d7c\u0d7d\u0005>\u0000\u0000\u0d7d\u0d7e\u0003V+\u0000"+
56601 		"\u0d7e\u01fb\u0001\u0000\u0000\u0000\u0d7f\u0d85\u0005\u010e\u0000\u0000"+
56602 		"\u0d80\u0d86\u0003\u019a\u00cd\u0000\u0d81\u0d83\u0003R)\u0000\u0d82\u0d84"+
56603 		"\u0003\u01fe\u00ff\u0000\u0d83\u0d82\u0001\u0000\u0000\u0000\u0d83\u0d84"+
56604 		"\u0001\u0000\u0000\u0000\u0d84\u0d86\u0001\u0000\u0000\u0000\u0d85\u0d80"+
56605 		"\u0001\u0000\u0000\u0000\u0d85\u0d81\u0001\u0000\u0000\u0000\u0d86\u01fd"+
56606 		"\u0001\u0000\u0000\u0000\u0d87\u0d88\u0005a\u0000\u0000\u0d88\u0d8b\u0003"+
56607 		"\u00e6s\u0000\u0d89\u0d8b\u0005\u009a\u0000\u0000\u0d8a\u0d87\u0001\u0000"+
56608 		"\u0000\u0000\u0d8a\u0d89\u0001\u0000\u0000\u0000\u0d8b\u01ff\u0001\u0000"+
56609 		"\u0000\u0000\u0d8c\u0d8d\u0005\u010d\u0000\u0000\u0d8d\u0d95\u0005\u0110"+
56610 		"\u0000\u0000\u0d8e\u0d8f\u0005M\u0000\u0000\u0d8f\u0d90\u0005\u019d\u0000"+
56611 		"\u0000\u0d90\u0d91\u0005\u0018\u0000\u0000\u0d91\u0d93\u0005\u02d5\u0000"+
56612 		"\u0000\u0d92\u0d94\u0005\u0117\u0000\u0000\u0d93\u0d92\u0001\u0000\u0000"+
56613 		"\u0000\u0d93\u0d94\u0001\u0000\u0000\u0000\u0d94\u0d96\u0001\u0000\u0000"+
56614 		"\u0000\u0d95\u0d8e\u0001\u0000\u0000\u0000\u0d95\u0d96\u0001\u0000\u0000"+
56615 		"\u0000\u0d96\u0d98\u0001\u0000\u0000\u0000\u0d97\u0d99\u0003\u0184\u00c2"+
56616 		"\u0000\u0d98\u0d97\u0001\u0000\u0000\u0000\u0d98\u0d99\u0001\u0000\u0000"+
56617 		"\u0000\u0d99\u0201\u0001\u0000\u0000\u0000\u0d9a\u0d9b\u0005:\u0000\u0000"+
56618 		"\u0d9b\u0d9c\u0005\u001f\u0000\u0000\u0d9c\u0d9d\u0005\u01bc\u0000\u0000"+
56619 		"\u0d9d\u0d9e\u0005\u0018\u0000\u0000\u0d9e\u0d9f\u00071\u0000\u0000\u0d9f"+
56620 		"\u0dad\u0005 \u0000\u0000\u0da0\u0da1\u0005\u01af\u0000\u0000\u0da1\u0da2"+
56621 		"\u0005\u0018\u0000\u0000\u0da2\u0dad\u0005a\u0000\u0000\u0da3\u0da4\u0005"+
56622 		"\u011c\u0000\u0000\u0da4\u0da5\u0005\u0018\u0000\u0000\u0da5\u0dad\u0007"+
56623 		",\u0000\u0000\u0da6\u0da7\u0005\u01a3\u0000\u0000\u0da7\u0da8\u0005\u0018"+
56624 		"\u0000\u0000\u0da8\u0daa\u0005a\u0000\u0000\u0da9\u0dab\u0003\u0204\u0102"+
56625 		"\u0000\u0daa\u0da9\u0001\u0000\u0000\u0000\u0daa\u0dab\u0001\u0000\u0000"+
56626 		"\u0000\u0dab\u0dad\u0001\u0000\u0000\u0000\u0dac\u0d9a\u0001\u0000\u0000"+
56627 		"\u0000\u0dac\u0da0\u0001\u0000\u0000\u0000\u0dac\u0da3\u0001\u0000\u0000"+
56628 		"\u0000\u0dac\u0da6\u0001\u0000\u0000\u0000\u0dad\u0203\u0001\u0000\u0000"+
56629 		"\u0000\u0dae\u0daf\u0005\u001f\u0000\u0000\u0daf\u0db0\u0005\u01bb\u0000"+
56630 		"\u0000\u0db0\u0db1\u0005\u0018\u0000\u0000\u0db1\u0db6\u0003@ \u0000\u0db2"+
56631 		"\u0db3\u0005%\u0000\u0000\u0db3\u0db4\u0005\u01a0\u0000\u0000\u0db4\u0db5"+
56632 		"\u0005\u0018\u0000\u0000\u0db5\u0db7\u0003\u01de\u00ef\u0000\u0db6\u0db2"+
56633 		"\u0001\u0000\u0000\u0000\u0db6\u0db7\u0001\u0000\u0000\u0000\u0db7\u0db8"+
56634 		"\u0001\u0000\u0000\u0000\u0db8\u0db9\u0005 \u0000\u0000\u0db9\u0205\u0001"+
56635 		"\u0000\u0000\u0000\u0dba\u0dbb\u0005\u01f7\u0000\u0000\u0dbb\u0dbc\u0005"+
56636 		"\u0018\u0000\u0000\u0dbc\u0dbe\u00072\u0000\u0000\u0dbd\u0dba\u0001\u0000"+
56637 		"\u0000\u0000\u0dbd\u0dbe\u0001\u0000\u0000\u0000\u0dbe\u0dc0\u0001\u0000"+
56638 		"\u0000\u0000\u0dbf\u0dc1\u0003\u0208\u0104\u0000\u0dc0\u0dbf\u0001\u0000"+
56639 		"\u0000\u0000\u0dc0\u0dc1\u0001\u0000\u0000\u0000\u0dc1\u0dc4\u0001\u0000"+
56640 		"\u0000\u0000\u0dc2\u0dc3\u0005\u010f\u0000\u0000\u0dc3\u0dc5\u0003\u00e6"+
56641 		"s\u0000\u0dc4\u0dc2\u0001\u0000\u0000\u0000\u0dc4\u0dc5\u0001\u0000\u0000"+
56642 		"\u0000\u0dc5\u0dcf\u0001\u0000\u0000\u0000\u0dc6\u0dc7\u0005M\u0000\u0000"+
56643 		"\u0dc7\u0dcc\u0003\u020a\u0105\u0000\u0dc8\u0dc9\u0005%\u0000\u0000\u0dc9"+
56644 		"\u0dcb\u0003\u020a\u0105\u0000\u0dca\u0dc8\u0001\u0000\u0000\u0000\u0dcb"+
56645 		"\u0dce\u0001\u0000\u0000\u0000\u0dcc\u0dca\u0001\u0000\u0000\u0000\u0dcc"+
56646 		"\u0dcd\u0001\u0000\u0000\u0000\u0dcd\u0dd0\u0001\u0000\u0000\u0000\u0dce"+
56647 		"\u0dcc\u0001\u0000\u0000\u0000\u0dcf\u0dc6\u0001\u0000\u0000\u0000\u0dcf"+
56648 		"\u0dd0\u0001\u0000\u0000\u0000\u0dd0\u0207\u0001\u0000\u0000\u0000\u0dd1"+
56649 		"\u0dd3\u0005a\u0000\u0000\u0dd2\u0dd4\u0005@\u0000\u0000\u0dd3\u0dd2\u0001"+
56650 		"\u0000\u0000\u0000\u0dd3\u0dd4\u0001\u0000\u0000\u0000\u0dd4\u0dd5\u0001"+
56651 		"\u0000\u0000\u0000\u0dd5\u0dda\u0003\u020e\u0107\u0000\u0dd6\u0dd7\u0005"+
56652 		"%\u0000\u0000\u0dd7\u0dd9\u0003\u020e\u0107\u0000\u0dd8\u0dd6\u0001\u0000"+
56653 		"\u0000\u0000\u0dd9\u0ddc\u0001\u0000\u0000\u0000\u0dda\u0dd8\u0001\u0000"+
56654 		"\u0000\u0000\u0dda\u0ddb\u0001\u0000\u0000\u0000\u0ddb\u0de1\u0001\u0000"+
56655 		"\u0000\u0000\u0ddc\u0dda\u0001\u0000\u0000\u0000\u0ddd\u0dde\u0005%\u0000"+
56656 		"\u0000\u0dde\u0de0\u0003\u0212\u0109\u0000\u0ddf\u0ddd\u0001\u0000\u0000"+
56657 		"\u0000\u0de0\u0de3\u0001\u0000\u0000\u0000\u0de1\u0ddf\u0001\u0000\u0000"+
56658 		"\u0000\u0de1\u0de2\u0001\u0000\u0000\u0000\u0de2\u0de4\u0001\u0000\u0000"+
56659 		"\u0000\u0de3\u0de1\u0001\u0000\u0000\u0000\u0de4\u0de5\u0003\u0216\u010b"+
56660 		"\u0000\u0de5\u0209\u0001\u0000\u0000\u0000\u0de6\u0de7\u0005\u011f\u0000"+
56661 		"\u0000\u0de7\u0dec\u0003\u020c\u0106\u0000\u0de8\u0de9\u0005%\u0000\u0000"+
56662 		"\u0de9\u0deb\u0003\u020c\u0106\u0000\u0dea\u0de8\u0001\u0000\u0000\u0000"+
56663 		"\u0deb\u0dee\u0001\u0000\u0000\u0000\u0dec\u0dea\u0001\u0000\u0000\u0000"+
56664 		"\u0dec\u0ded\u0001\u0000\u0000\u0000\u0ded\u0e09\u0001\u0000\u0000\u0000"+
56665 		"\u0dee\u0dec\u0001\u0000\u0000\u0000\u0def\u0df0\u0005\u0291\u0000\u0000"+
56666 		"\u0df0\u0df1\u0005\u0018\u0000\u0000\u0df1\u0e09\u0003\u00e6s\u0000\u0df2"+
56667 		"\u0df3\u0005\u0292\u0000\u0000\u0df3\u0df4\u0005\u0018\u0000\u0000\u0df4"+
56668 		"\u0e09\u0003\u00e6s\u0000\u0df5\u0df6\u0005\u0294\u0000\u0000\u0df6\u0df7"+
56669 		"\u0005\u0018\u0000\u0000\u0df7\u0e09\u0007\u0000\u0000\u0000\u0df8\u0df9"+
56670 		"\u0005\u0295\u0000\u0000\u0df9\u0dfa\u0005\u0018\u0000\u0000\u0dfa\u0e09"+
56671 		"\u0007\u0000\u0000\u0000\u0dfb\u0dfc\u0005\u0296\u0000\u0000\u0dfc\u0dfd"+
56672 		"\u0005\u0018\u0000\u0000\u0dfd\u0e09\u0003\u00e6s\u0000\u0dfe\u0dff\u0005"+
56673 		"\u0206\u0000\u0000\u0dff\u0e09\u0007\u0000\u0000\u0000\u0e00\u0e01\u0005"+
56674 		"\u0207\u0000\u0000\u0e01\u0e09\u0007\u0000\u0000\u0000\u0e02\u0e03\u0005"+
56675 		"\u0297\u0000\u0000\u0e03\u0e04\u0005\u0018\u0000\u0000\u0e04\u0e05\u0005"+
56676 		"a\u0000\u0000\u0e05\u0e06\u0005\u0298\u0000\u0000\u0e06\u0e07\u0005\u0018"+
56677 		"\u0000\u0000\u0e07\u0e09\u0003\u00e6s\u0000\u0e08\u0de6\u0001\u0000\u0000"+
56678 		"\u0000\u0e08\u0def\u0001\u0000\u0000\u0000\u0e08\u0df2\u0001\u0000\u0000"+
56679 		"\u0000\u0e08\u0df5\u0001\u0000\u0000\u0000\u0e08\u0df8\u0001\u0000\u0000"+
56680 		"\u0000\u0e08\u0dfb\u0001\u0000\u0000\u0000\u0e08\u0dfe\u0001\u0000\u0000"+
56681 		"\u0000\u0e08\u0e00\u0001\u0000\u0000\u0000\u0e08\u0e02\u0001\u0000\u0000"+
56682 		"\u0000\u0e09\u020b\u0001\u0000\u0000\u0000\u0e0a\u0e0b\u0005\u0205\u0000"+
56683 		"\u0000\u0e0b\u0e0c\u0005\u0018\u0000\u0000\u0e0c\u0e11\u00073\u0000\u0000"+
56684 		"\u0e0d\u0e0e\u0005\u0298\u0000\u0000\u0e0e\u0e0f\u0005\u0018\u0000\u0000"+
56685 		"\u0e0f\u0e11\u0003\u00e6s\u0000\u0e10\u0e0a\u0001\u0000\u0000\u0000\u0e10"+
56686 		"\u0e0d\u0001\u0000\u0000\u0000\u0e11\u020d\u0001\u0000\u0000\u0000\u0e12"+
56687 		"\u0e13\u0005\u001f\u0000\u0000\u0e13\u0e14\u0005\u00aa\u0000\u0000\u0e14"+
56688 		"\u0e15\u0005\u0018\u0000\u0000\u0e15\u0e16\u0003\u00e6s\u0000\u0e16\u0e17"+
56689 		"\u0005%\u0000\u0000\u0e17\u0e18\u0005\u01f9\u0000\u0000\u0e18\u0e19\u0005"+
56690 		"\u0018\u0000\u0000\u0e19\u0e1a\u0005\u02d4\u0000\u0000\u0e1a\u0e1b\u0003"+
56691 		"\u0210\u0108\u0000\u0e1b\u0e1c\u0005 \u0000\u0000\u0e1c\u020f\u0001\u0000"+
56692 		"\u0000\u0000\u0e1d\u0e1e\u0005%\u0000\u0000\u0e1e\u0e1f\u0005\u01fa\u0000"+
56693 		"\u0000\u0e1f\u0e20\u0005\u0018\u0000\u0000\u0e20\u0e22\u0003\u001e\u000f"+
56694 		"\u0000\u0e21\u0e23\u00074\u0000\u0000\u0e22\u0e21\u0001\u0000\u0000\u0000"+
56695 		"\u0e22\u0e23\u0001\u0000\u0000\u0000\u0e23\u0e25\u0001\u0000\u0000\u0000"+
56696 		"\u0e24\u0e1d\u0001\u0000\u0000\u0000\u0e24\u0e25\u0001\u0000\u0000\u0000"+
56697 		"\u0e25\u0e30\u0001\u0000\u0000\u0000\u0e26\u0e27\u0005%\u0000\u0000\u0e27"+
56698 		"\u0e28\u0005\u01fb\u0000\u0000\u0e28\u0e2e\u0005\u0018\u0000\u0000\u0e29"+
56699 		"\u0e2b\u0003\u001e\u000f\u0000\u0e2a\u0e2c\u00074\u0000\u0000\u0e2b\u0e2a"+
56700 		"\u0001\u0000\u0000\u0000\u0e2b\u0e2c\u0001\u0000\u0000\u0000\u0e2c\u0e2f"+
56701 		"\u0001\u0000\u0000\u0000\u0e2d\u0e2f\u0005\u01fd\u0000\u0000\u0e2e\u0e29"+
56702 		"\u0001\u0000\u0000\u0000\u0e2e\u0e2d\u0001\u0000\u0000\u0000\u0e2f\u0e31"+
56703 		"\u0001\u0000\u0000\u0000\u0e30\u0e26\u0001\u0000\u0000\u0000\u0e30\u0e31"+
56704 		"\u0001\u0000\u0000\u0000\u0e31\u0e39\u0001\u0000\u0000\u0000\u0e32\u0e33"+
56705 		"\u0005%\u0000\u0000\u0e33\u0e34\u0005\u01fc\u0000\u0000\u0e34\u0e35\u0005"+
56706 		"\u0018\u0000\u0000\u0e35\u0e37\u0003\u001e\u000f\u0000\u0e36\u0e38\u0007"+
56707 		"5\u0000\u0000\u0e37\u0e36\u0001\u0000\u0000\u0000\u0e37\u0e38\u0001\u0000"+
56708 		"\u0000\u0000\u0e38\u0e3a\u0001\u0000\u0000\u0000\u0e39\u0e32\u0001\u0000"+
56709 		"\u0000\u0000\u0e39\u0e3a\u0001\u0000\u0000\u0000\u0e3a\u0211\u0001\u0000"+
56710 		"\u0000\u0000\u0e3b\u0e3c\u0005\u0204\u0000\u0000\u0e3c\u0e3e\u0003\u00e6"+
56711 		"s\u0000\u0e3d\u0e3f\u0003\u0214\u010a\u0000\u0e3e\u0e3d\u0001\u0000\u0000"+
56712 		"\u0000\u0e3e\u0e3f\u0001\u0000\u0000\u0000\u0e3f\u0e40\u0001\u0000\u0000"+
56713 		"\u0000\u0e40\u0e45\u0003\u020e\u0107\u0000\u0e41\u0e42\u0005%\u0000\u0000"+
56714 		"\u0e42\u0e44\u0003\u020e\u0107\u0000\u0e43\u0e41\u0001\u0000\u0000\u0000"+
56715 		"\u0e44\u0e47\u0001\u0000\u0000\u0000\u0e45\u0e43\u0001\u0000\u0000\u0000"+
56716 		"\u0e45\u0e46\u0001\u0000\u0000\u0000\u0e46\u0213\u0001\u0000\u0000\u0000"+
56717 		"\u0e47\u0e45\u0001\u0000\u0000\u0000\u0e48\u0e49\u0005\u0202\u0000\u0000"+
56718 		"\u0e49\u0e4b\u0005\u011f\u0000\u0000\u0e4a\u0e48\u0001\u0000\u0000\u0000"+
56719 		"\u0e4a\u0e4b\u0001\u0000\u0000\u0000\u0e4b\u0e4d\u0001\u0000\u0000\u0000"+
56720 		"\u0e4c\u0e4e\u0005\u009a\u0000\u0000\u0e4d\u0e4c\u0001\u0000\u0000\u0000"+
56721 		"\u0e4d\u0e4e\u0001\u0000\u0000\u0000\u0e4e\u0e52\u0001\u0000\u0000\u0000"+
56722 		"\u0e4f\u0e50\u0005\u0202\u0000\u0000\u0e50\u0e52\u0005\u0203\u0000\u0000"+
56723 		"\u0e51\u0e4a\u0001\u0000\u0000\u0000\u0e51\u0e4f\u0001\u0000\u0000\u0000"+
56724 		"\u0e52\u0215\u0001\u0000\u0000\u0000\u0e53\u0e54\u0005\u018e\u0000\u0000"+
56725 		"\u0e54\u0e55\u0005a\u0000\u0000\u0e55\u0e5a\u0003\u020e\u0107\u0000\u0e56"+
56726 		"\u0e57\u0005%\u0000\u0000\u0e57\u0e59\u0003\u020e\u0107\u0000\u0e58\u0e56"+
56727 		"\u0001\u0000\u0000\u0000\u0e59\u0e5c\u0001\u0000\u0000\u0000\u0e5a\u0e58"+
56728 		"\u0001\u0000\u0000\u0000\u0e5a\u0e5b\u0001\u0000\u0000\u0000\u0e5b\u0e5e"+
56729 		"\u0001\u0000\u0000\u0000\u0e5c\u0e5a\u0001\u0000\u0000\u0000\u0e5d\u0e53"+
56730 		"\u0001\u0000\u0000\u0000\u0e5d\u0e5e\u0001\u0000\u0000\u0000\u0e5e\u0217"+
56731 		"\u0001\u0000\u0000\u0000\u0e5f\u0e69\u0005\u00cd\u0000\u0000\u0e60\u0e65"+
56732 		"\u0003\u021a\u010d\u0000\u0e61\u0e62\u0005%\u0000\u0000\u0e62\u0e64\u0003"+
56733 		"\u021a\u010d\u0000\u0e63\u0e61\u0001\u0000\u0000\u0000\u0e64\u0e67\u0001"+
56734 		"\u0000\u0000\u0000\u0e65\u0e63\u0001\u0000\u0000\u0000\u0e65\u0e66\u0001"+
56735 		"\u0000\u0000\u0000\u0e66\u0e6a\u0001\u0000\u0000\u0000\u0e67\u0e65\u0001"+
56736 		"\u0000\u0000\u0000\u0e68\u0e6a\u0003\u021c\u010e\u0000\u0e69\u0e60\u0001"+
56737 		"\u0000\u0000\u0000\u0e69\u0e68\u0001\u0000\u0000\u0000\u0e6a\u0219\u0001"+
56738 		"\u0000\u0000\u0000\u0e6b\u0e6d\u0003\u00ecv\u0000\u0e6c\u0e6e\u0005`\u0000"+
56739 		"\u0000\u0e6d\u0e6c\u0001\u0000\u0000\u0000\u0e6d\u0e6e\u0001\u0000\u0000"+
56740 		"\u0000\u0e6e\u0e6f\u0001\u0000\u0000\u0000\u0e6f\u0e72\u0003\u00aeW\u0000"+
56741 		"\u0e70\u0e71\u0005\u0018\u0000\u0000\u0e71\u0e73\u0003t:\u0000\u0e72\u0e70"+
56742 		"\u0001\u0000\u0000\u0000\u0e72\u0e73\u0001\u0000\u0000\u0000\u0e73\u0e78"+
56743 		"\u0001\u0000\u0000\u0000\u0e74\u0e75\u0003\u00ecv\u0000\u0e75\u0e76\u0005"+
56744 		"\u00ce\u0000\u0000\u0e76\u0e78\u0001\u0000\u0000\u0000\u0e77\u0e6b\u0001"+
56745 		"\u0000\u0000\u0000\u0e77\u0e74\u0001\u0000\u0000\u0000\u0e78\u021b\u0001"+
56746 		"\u0000\u0000\u0000\u0e79\u0e7b\u0003\u00ecv\u0000\u0e7a\u0e7c\u0005`\u0000"+
56747 		"\u0000\u0e7b\u0e7a\u0001\u0000\u0000\u0000\u0e7b\u0e7c\u0001\u0000\u0000"+
56748 		"\u0000\u0e7c\u0e7d\u0001\u0000\u0000\u0000\u0e7d\u0e7e\u0003\u021e\u010f"+
56749 		"\u0000\u0e7e\u021d\u0001\u0000\u0000\u0000\u0e7f\u0e80\u0005;\u0000\u0000"+
56750 		"\u0e80\u0e81\u0005\u001f\u0000\u0000\u0e81\u0e86\u0003\u0220\u0110\u0000"+
56751 		"\u0e82\u0e83\u0005%\u0000\u0000\u0e83\u0e85\u0003\u0220\u0110\u0000\u0e84"+
56752 		"\u0e82\u0001\u0000\u0000\u0000\u0e85\u0e88\u0001\u0000\u0000\u0000\u0e86"+
56753 		"\u0e84\u0001\u0000\u0000\u0000\u0e86\u0e87\u0001\u0000\u0000\u0000\u0e87"+
56754 		"\u0e89\u0001\u0000\u0000\u0000\u0e88\u0e86\u0001\u0000\u0000\u0000\u0e89"+
56755 		"\u0e8a\u0005 \u0000\u0000\u0e8a\u021f\u0001\u0000\u0000\u0000\u0e8b\u0e8e"+
56756 		"\u0003\u0222\u0111\u0000\u0e8c\u0e8e\u0003\u0226\u0113\u0000\u0e8d\u0e8b"+
56757 		"\u0001\u0000\u0000\u0000\u0e8d\u0e8c\u0001\u0000\u0000\u0000\u0e8e\u0221"+
56758 		"\u0001\u0000\u0000\u0000\u0e8f\u0e93\u0003H$\u0000\u0e90\u0e94\u0003\u00b0"+
56759 		"X\u0000\u0e91\u0e92\u0005`\u0000\u0000\u0e92\u0e94\u0003b1\u0000\u0e93"+
56760 		"\u0e90\u0001\u0000\u0000\u0000\u0e93\u0e91\u0001\u0000\u0000\u0000\u0e94"+
56761 		"\u0e97\u0001\u0000\u0000\u0000\u0e95\u0e96\u0005\u010f\u0000\u0000\u0e96"+
56762 		"\u0e98\u0003Z-\u0000\u0e97\u0e95\u0001\u0000\u0000\u0000\u0e97\u0e98\u0001"+
56763 		"\u0000\u0000\u0000\u0e98\u0ea5\u0001\u0000\u0000\u0000\u0e99\u0e9a\u0005"+
56764 		"\u009a\u0000\u0000\u0e9a\u0e9c\u0003b1\u0000\u0e9b\u0e99\u0001\u0000\u0000"+
56765 		"\u0000\u0e9b\u0e9c\u0001\u0000\u0000\u0000\u0e9c\u0ea6\u0001\u0000\u0000"+
56766 		"\u0000\u0e9d\u0ea3\u0005\u0125\u0000\u0000\u0e9e\u0e9f\u0005\u001f\u0000"+
56767 		"\u0000\u0e9f\u0ea0\u0005\u02d5\u0000\u0000\u0ea0\u0ea1\u0005%\u0000\u0000"+
56768 		"\u0ea1\u0ea2\u0005\u02d5\u0000\u0000\u0ea2\u0ea4\u0005 \u0000\u0000\u0ea3"+
56769 		"\u0e9e\u0001\u0000\u0000\u0000\u0ea3\u0ea4\u0001\u0000\u0000\u0000\u0ea4"+
56770 		"\u0ea6\u0001\u0000\u0000\u0000\u0ea5\u0e9b\u0001\u0000\u0000\u0000\u0ea5"+
56771 		"\u0e9d\u0001\u0000\u0000\u0000\u0ea6\u0ea8\u0001\u0000\u0000\u0000\u0ea7"+
56772 		"\u0ea9\u0005\u013e\u0000\u0000\u0ea8\u0ea7\u0001\u0000\u0000\u0000\u0ea8"+
56773 		"\u0ea9\u0001\u0000\u0000\u0000\u0ea9\u0eaa\u0001\u0000\u0000\u0000\u0eaa"+
56774 		"\u0eab\u0003\u0224\u0112\u0000\u0eab\u0223\u0001\u0000\u0000\u0000\u0eac"+
56775 		"\u0eb0\u0005l\u0000\u0000\u0ead\u0eae\u0005k\u0000\u0000\u0eae\u0eb0\u0005"+
56776 		"l\u0000\u0000\u0eaf\u0eac\u0001\u0000\u0000\u0000\u0eaf\u0ead\u0001\u0000"+
56777 		"\u0000\u0000\u0eaf\u0eb0\u0001\u0000\u0000\u0000\u0eb0\u0ebe\u0001\u0000"+
56778 		"\u0000\u0000\u0eb1\u0eb2\u0005@\u0000\u0000\u0eb2\u0eb5\u0005C\u0000\u0000"+
56779 		"\u0eb3\u0eb5\u0005A\u0000\u0000\u0eb4\u0eb1\u0001\u0000\u0000\u0000\u0eb4"+
56780 		"\u0eb3\u0001\u0000\u0000\u0000\u0eb4\u0eb5\u0001\u0000\u0000\u0000\u0eb5"+
56781 		"\u0ebe\u0001\u0000\u0000\u0000\u0eb6\u0eb7\u0005\u00ff\u0000\u0000\u0eb7"+
56782 		"\u0eb8\u0005\u001f\u0000\u0000\u0eb8\u0eb9\u0003b1\u0000\u0eb9\u0eba\u0005"+
56783 		" \u0000\u0000\u0eba\u0ebe\u0001\u0000\u0000\u0000\u0ebb\u0ebc\u0005M\u0000"+
56784 		"\u0000\u0ebc\u0ebe\u0003\u00ceg\u0000\u0ebd\u0eaf\u0001\u0000\u0000\u0000"+
56785 		"\u0ebd\u0eb4\u0001\u0000\u0000\u0000\u0ebd\u0eb6\u0001\u0000\u0000\u0000"+
56786 		"\u0ebd\u0ebb\u0001\u0000\u0000\u0000\u0ebe\u0225\u0001\u0000\u0000\u0000"+
56787 		"\u0ebf\u0ec0\u0005@\u0000\u0000\u0ec0\u0ec3\u0005C\u0000\u0000\u0ec1\u0ec3"+
56788 		"\u0005A\u0000\u0000\u0ec2\u0ebf\u0001\u0000\u0000\u0000\u0ec2\u0ec1\u0001"+
56789 		"\u0000\u0000\u0000\u0ec3\u0ec4\u0001\u0000\u0000\u0000\u0ec4\u0ec5\u0005"+
56790 		"\u001f\u0000\u0000\u0ec5\u0eca\u0003H$\u0000\u0ec6\u0ec7\u0005%\u0000"+
56791 		"\u0000\u0ec7\u0ec9\u0003H$\u0000\u0ec8\u0ec6\u0001\u0000\u0000\u0000\u0ec9"+
56792 		"\u0ecc\u0001\u0000\u0000\u0000\u0eca\u0ec8\u0001\u0000\u0000\u0000\u0eca"+
56793 		"\u0ecb\u0001\u0000\u0000\u0000\u0ecb\u0ecd\u0001\u0000\u0000\u0000\u0ecc"+
56794 		"\u0eca\u0001\u0000\u0000\u0000\u0ecd\u0ece\u0005 \u0000\u0000\u0ece\u0ed2"+
56795 		"\u0001\u0000\u0000\u0000\u0ecf\u0ed0\u0005\u00ff\u0000\u0000\u0ed0\u0ed2"+
56796 		"\u0003b1\u0000\u0ed1\u0ec2\u0001\u0000\u0000\u0000\u0ed1\u0ecf\u0001\u0000"+
56797 		"\u0000\u0000\u0ed2\u0227\u0001\u0000\u0000\u0000\u0ed3\u0ed4\u0005:\u0000"+
56798 		"\u0000\u0ed4\u0ed5\u0003\u00ecv\u0000\u0ed5\u0ed6\u0003\u022a\u0115\u0000"+
56799 		"\u0ed6\u0229\u0001\u0000\u0000\u0000\u0ed7\u0ed8\u0005\u0014\u0000\u0000"+
56800 		"\u0ed8\u0eda\u0003*\u0015\u0000\u0ed9\u0ed7\u0001\u0000\u0000\u0000\u0ed9"+
56801 		"\u0eda\u0001\u0000\u0000\u0000\u0eda\u0edb\u0001\u0000\u0000\u0000\u0edb"+
56802 		"\u0ee2\u0005\u0018\u0000\u0000\u0edc\u0ee3\u0003b1\u0000\u0edd\u0ede\u0003"+
56803 		"*\u0015\u0000\u0ede\u0edf\u0005\u0014\u0000\u0000\u0edf\u0ee0\u0003*\u0015"+
56804 		"\u0000\u0ee0\u0ee3\u0001\u0000\u0000\u0000\u0ee1\u0ee3\u0005\u02db\u0000"+
56805 		"\u0000\u0ee2\u0edc\u0001\u0000\u0000\u0000\u0ee2\u0edd\u0001\u0000\u0000"+
56806 		"\u0000\u0ee2\u0ee1\u0001\u0000\u0000\u0000\u0ee3\u0eef\u0001\u0000\u0000"+
56807 		"\u0000\u0ee4\u0ee5\u0003\u0230\u0118\u0000\u0ee5\u0ee6\u0003b1\u0000\u0ee6"+
56808 		"\u0eef\u0001\u0000\u0000\u0000\u0ee7\u0ee8\u0005\u0018\u0000\u0000\u0ee8"+
56809 		"\u0eef\u0003\u022c\u0116\u0000\u0ee9\u0eea\u0005\u0018\u0000\u0000\u0eea"+
56810 		"\u0eeb\u0005\u001f\u0000\u0000\u0eeb\u0eec\u0003\u02de\u016f\u0000\u0eec"+
56811 		"\u0eed\u0005 \u0000\u0000\u0eed\u0eef\u0001\u0000\u0000\u0000\u0eee\u0ed9"+
56812 		"\u0001\u0000\u0000\u0000\u0eee\u0ee4\u0001\u0000\u0000\u0000\u0eee\u0ee7"+
56813 		"\u0001\u0000\u0000\u0000\u0eee\u0ee9\u0001\u0000\u0000\u0000\u0eef\u022b"+
56814 		"\u0001\u0000\u0000\u0000\u0ef0\u0f04\u0003\u00ecv\u0000\u0ef1\u0ef2\u0005"+
56815 		"\u00ce\u0000\u0000\u0ef2\u0ef3\u0003\u022e\u0117\u0000\u0ef3\u0ef4\u0005"+
56816 		"f\u0000\u0000\u0ef4\u0ef5\u0003\u02de\u016f\u0000\u0ef5\u0f01\u0005f\u0000"+
56817 		"\u0000\u0ef6\u0f02\u0005\u00cb\u0000\u0000\u0ef7\u0ef8\u00050\u0000\u0000"+
56818 		"\u0ef8\u0ef9\u0005\u00cf\u0000\u0000\u0ef9\u0efe\u0003N\'\u0000\u0efa"+
56819 		"\u0efb\u0005%\u0000\u0000\u0efb\u0efd\u0003N\'\u0000\u0efc\u0efa\u0001"+
56820 		"\u0000\u0000\u0000\u0efd\u0f00\u0001\u0000\u0000\u0000\u0efe\u0efc\u0001"+
56821 		"\u0000\u0000\u0000\u0efe\u0eff\u0001\u0000\u0000\u0000\u0eff\u0f02\u0001"+
56822 		"\u0000\u0000\u0000\u0f00\u0efe\u0001\u0000\u0000\u0000\u0f01\u0ef6\u0001"+
56823 		"\u0000\u0000\u0000\u0f01\u0ef7\u0001\u0000\u0000\u0000\u0f02\u0f04\u0001"+
56824 		"\u0000\u0000\u0000\u0f03\u0ef0\u0001\u0000\u0000\u0000\u0f03\u0ef1\u0001"+
56825 		"\u0000\u0000\u0000\u0f04\u022d\u0001\u0000\u0000\u0000\u0f05\u0f07\u0007"+
56826 		"6\u0000\u0000\u0f06\u0f05\u0001\u0000\u0000\u0000\u0f06\u0f07\u0001\u0000"+
56827 		"\u0000\u0000\u0f07\u0f09\u0001\u0000\u0000\u0000\u0f08\u0f0a\u00077\u0000"+
56828 		"\u0000\u0f09\u0f08\u0001\u0000\u0000\u0000\u0f09\u0f0a\u0001\u0000\u0000"+
56829 		"\u0000\u0f0a\u0f0c\u0001\u0000\u0000\u0000\u0f0b\u0f0d\u00078\u0000\u0000"+
56830 		"\u0f0c\u0f0b\u0001\u0000\u0000\u0000\u0f0c\u0f0d\u0001\u0000\u0000\u0000"+
56831 		"\u0f0d\u0f0f\u0001\u0000\u0000\u0000\u0f0e\u0f10\u0005\u0210\u0000\u0000"+
56832 		"\u0f0f\u0f0e\u0001\u0000\u0000\u0000\u0f0f\u0f10\u0001\u0000\u0000\u0000"+
56833 		"\u0f10\u022f\u0001\u0000\u0000\u0000\u0f11\u0f12\u0005\u000f\u0000\u0000"+
56834 		"\u0f12\u0f22\u0005\u0018\u0000\u0000\u0f13\u0f14\u0005\u0010\u0000\u0000"+
56835 		"\u0f14\u0f22\u0005\u0018\u0000\u0000\u0f15\u0f16\u0005\u0011\u0000\u0000"+
56836 		"\u0f16\u0f22\u0005\u0018\u0000\u0000\u0f17\u0f18\u0005\u0012\u0000\u0000"+
56837 		"\u0f18\u0f22\u0005\u0018\u0000\u0000\u0f19\u0f1a\u0005\r\u0000\u0000\u0f1a"+
56838 		"\u0f22\u0005\u0018\u0000\u0000\u0f1b\u0f1c\u0005\t\u0000\u0000\u0f1c\u0f22"+
56839 		"\u0005\u0018\u0000\u0000\u0f1d\u0f1e\u0005\f\u0000\u0000\u0f1e\u0f22\u0005"+
56840 		"\u0018\u0000\u0000\u0f1f\u0f20\u0005\b\u0000\u0000\u0f20\u0f22\u0005\u0018"+
56841 		"\u0000\u0000\u0f21\u0f11\u0001\u0000\u0000\u0000\u0f21\u0f13\u0001\u0000"+
56842 		"\u0000\u0000\u0f21\u0f15\u0001\u0000\u0000\u0000\u0f21\u0f17\u0001\u0000"+
56843 		"\u0000\u0000\u0f21\u0f19\u0001\u0000\u0000\u0000\u0f21\u0f1b\u0001\u0000"+
56844 		"\u0000\u0000\u0f21\u0f1d\u0001\u0000\u0000\u0000\u0f21\u0f1f\u0001\u0000"+
56845 		"\u0000\u0000\u0f22\u0231\u0001\u0000\u0000\u0000\u0f23\u0f37\u0005\u001f"+
56846 		"\u0000\u0000\u0f24\u0f26\u0003\u00ecv\u0000\u0f25\u0f27\u0005`\u0000\u0000"+
56847 		"\u0f26\u0f25\u0001\u0000\u0000\u0000\u0f26\u0f27\u0001\u0000\u0000\u0000"+
56848 		"\u0f27\u0f2b\u0001\u0000\u0000\u0000\u0f28\u0f29\u0003L&\u0000\u0f29\u0f2a"+
56849 		"\u0005\u0014\u0000\u0000\u0f2a\u0f2c\u0001\u0000\u0000\u0000\u0f2b\u0f28"+
56850 		"\u0001\u0000\u0000\u0000\u0f2b\u0f2c\u0001\u0000\u0000\u0000\u0f2c\u0f2d"+
56851 		"\u0001\u0000\u0000\u0000\u0f2d\u0f30\u0003\u00aeW\u0000\u0f2e\u0f2f\u0005"+
56852 		"\u0018\u0000\u0000\u0f2f\u0f31\u0003\u00e6s\u0000\u0f30\u0f2e\u0001\u0000"+
56853 		"\u0000\u0000\u0f30\u0f31\u0001\u0000\u0000\u0000\u0f31\u0f33\u0001\u0000"+
56854 		"\u0000\u0000\u0f32\u0f34\u0005\u00d3\u0000\u0000\u0f33\u0f32\u0001\u0000"+
56855 		"\u0000\u0000\u0f33\u0f34\u0001\u0000\u0000\u0000\u0f34\u0f36\u0001\u0000"+
56856 		"\u0000\u0000\u0f35\u0f24\u0001\u0000\u0000\u0000\u0f36\u0f39\u0001\u0000"+
56857 		"\u0000\u0000\u0f37\u0f35\u0001\u0000\u0000\u0000\u0f37\u0f38\u0001\u0000"+
56858 		"\u0000\u0000\u0f38\u0f3a\u0001\u0000\u0000\u0000\u0f39\u0f37\u0001\u0000"+
56859 		"\u0000\u0000\u0f3a\u0f3b\u0005 \u0000\u0000\u0f3b\u0233\u0001\u0000\u0000"+
56860 		"\u0000\u0f3c\u0f40\u0003\u023a\u011d\u0000\u0f3d\u0f40\u0003\u0238\u011c"+
56861 		"\u0000\u0f3e\u0f40\u0003\u0236\u011b\u0000\u0f3f\u0f3c\u0001\u0000\u0000"+
56862 		"\u0000\u0f3f\u0f3d\u0001\u0000\u0000\u0000\u0f3f\u0f3e\u0001\u0000\u0000"+
56863 		"\u0000\u0f40\u0235\u0001\u0000\u0000\u0000\u0f41\u0f42\u0005\u00d0\u0000"+
56864 		"\u0000\u0f42\u0f43\u0003\u00ecv\u0000\u0f43\u0f44\u0005;\u0000\u0000\u0f44"+
56865 		"\u0f4e\u0003\u0152\u00a9\u0000\u0f45\u0f46\u0005M\u0000\u0000\u0f46\u0f4b"+
56866 		"\u0003\u0240\u0120\u0000\u0f47\u0f48\u0005%\u0000\u0000\u0f48\u0f4a\u0003"+
56867 		"\u0240\u0120\u0000\u0f49\u0f47\u0001\u0000\u0000\u0000\u0f4a\u0f4d\u0001"+
56868 		"\u0000\u0000\u0000\u0f4b\u0f49\u0001\u0000\u0000\u0000\u0f4b\u0f4c\u0001"+
56869 		"\u0000\u0000\u0000\u0f4c\u0f4f\u0001\u0000\u0000\u0000\u0f4d\u0f4b\u0001"+
56870 		"\u0000\u0000\u0000\u0f4e\u0f45\u0001\u0000\u0000\u0000\u0f4e\u0f4f\u0001"+
56871 		"\u0000\u0000\u0000\u0f4f\u0f51\u0001\u0000\u0000\u0000\u0f50\u0f52\u0005"+
56872 		"`\u0000\u0000\u0f51\u0f50\u0001\u0000\u0000\u0000\u0f51\u0f52\u0001\u0000"+
56873 		"\u0000\u0000\u0f52\u0f53\u0001\u0000\u0000\u0000\u0f53\u0f54\u0005}\u0000"+
56874 		"\u0000\u0f54\u0f55\u0003\u023e\u011f\u0000\u0f55\u0f56\u0005\u00d2\u0000"+
56875 		"\u0000\u0f56\u0f57\u0005\u011e\u0000\u0000\u0f57\u0237\u0001\u0000\u0000"+
56876 		"\u0000\u0f58\u0f59\u0005\u00d0\u0000\u0000\u0f59\u0f63\u0005;\u0000\u0000"+
56877 		"\u0f5a\u0f5b\u0005M\u0000\u0000\u0f5b\u0f60\u0003\u0240\u0120\u0000\u0f5c"+
56878 		"\u0f5d\u0005%\u0000\u0000\u0f5d\u0f5f\u0003\u0240\u0120\u0000\u0f5e\u0f5c"+
56879 		"\u0001\u0000\u0000\u0000\u0f5f\u0f62\u0001\u0000\u0000\u0000\u0f60\u0f5e"+
56880 		"\u0001\u0000\u0000\u0000\u0f60\u0f61\u0001\u0000\u0000\u0000\u0f61\u0f64"+
56881 		"\u0001\u0000\u0000\u0000\u0f62\u0f60\u0001\u0000\u0000\u0000\u0f63\u0f5a"+
56882 		"\u0001\u0000\u0000\u0000\u0f63\u0f64\u0001\u0000\u0000\u0000\u0f64\u0f66"+
56883 		"\u0001\u0000\u0000\u0000\u0f65\u0f67\u0005`\u0000\u0000\u0f66\u0f65\u0001"+
56884 		"\u0000\u0000\u0000\u0f66\u0f67\u0001\u0000\u0000\u0000\u0f67\u0f68\u0001"+
56885 		"\u0000\u0000\u0000\u0f68\u0f6a\u0005\u00d2\u0000\u0000\u0f69\u0f6b\u0005"+
56886 		"\u001f\u0000\u0000\u0f6a\u0f69\u0001\u0000\u0000\u0000\u0f6a\u0f6b\u0001"+
56887 		"\u0000\u0000\u0000\u0f6b\u0f6c\u0001\u0000\u0000\u0000\u0f6c\u0f6e\u0003"+
56888 		"\u02de\u016f\u0000\u0f6d\u0f6f\u0005 \u0000\u0000\u0f6e\u0f6d\u0001\u0000"+
56889 		"\u0000\u0000\u0f6e\u0f6f\u0001\u0000\u0000\u0000\u0f6f\u0239\u0001\u0000"+
56890 		"\u0000\u0000\u0f70\u0f71\u0005\u00d0\u0000\u0000\u0f71\u0f7b\u0003\u00ae"+
56891 		"W\u0000\u0f72\u0f73\u0005M\u0000\u0000\u0f73\u0f78\u0003\u0240\u0120\u0000"+
56892 		"\u0f74\u0f75\u0005%\u0000\u0000\u0f75\u0f77\u0003\u0240\u0120\u0000\u0f76"+
56893 		"\u0f74\u0001\u0000\u0000\u0000\u0f77\u0f7a\u0001\u0000\u0000\u0000\u0f78"+
56894 		"\u0f76\u0001\u0000\u0000\u0000\u0f78\u0f79\u0001\u0000\u0000\u0000\u0f79"+
56895 		"\u0f7c\u0001\u0000\u0000\u0000\u0f7a\u0f78\u0001\u0000\u0000\u0000\u0f7b"+
56896 		"\u0f72\u0001\u0000\u0000\u0000\u0f7b\u0f7c\u0001\u0000\u0000\u0000\u0f7c"+
56897 		"\u0f7e\u0001\u0000\u0000\u0000\u0f7d\u0f7f\u0005`\u0000\u0000\u0f7e\u0f7d"+
56898 		"\u0001\u0000\u0000\u0000\u0f7e\u0f7f\u0001\u0000\u0000\u0000\u0f7f\u0f80"+
56899 		"\u0001\u0000\u0000\u0000\u0f80\u0f81\u0005}\u0000\u0000\u0f81\u0f82\u0003"+
56900 		"\u023e\u011f\u0000\u0f82\u0f83\u0005\u00d2\u0000\u0000\u0f83\u0f84\u0003"+
56901 		"b1\u0000\u0f84\u023b\u0001\u0000\u0000\u0000\u0f85\u0f86\u0003\u0156\u00ab"+
56902 		"\u0000\u0f86\u0f87\u0003\u015c\u00ae\u0000\u0f87\u0f8a\u0001\u0000\u0000"+
56903 		"\u0000\u0f88\u0f8a\u0003\u018c\u00c6\u0000\u0f89\u0f85\u0001\u0000\u0000"+
56904 		"\u0000\u0f89\u0f88\u0001\u0000\u0000\u0000\u0f8a\u0f8e\u0001\u0000\u0000"+
56905 		"\u0000\u0f8b\u0f8d\u0003\u0190\u00c8\u0000\u0f8c\u0f8b\u0001\u0000\u0000"+
56906 		"\u0000\u0f8d\u0f90\u0001\u0000\u0000\u0000\u0f8e\u0f8c\u0001\u0000\u0000"+
56907 		"\u0000\u0f8e\u0f8f\u0001\u0000\u0000\u0000\u0f8f\u023d\u0001\u0000\u0000"+
56908 		"\u0000\u0f90\u0f8e\u0001\u0000\u0000\u0000\u0f91\u0f93\u0003\u0242\u0121"+
56909 		"\u0000\u0f92\u0f91\u0001\u0000\u0000\u0000\u0f93\u0f96\u0001\u0000\u0000"+
56910 		"\u0000\u0f94\u0f92\u0001\u0000\u0000\u0000\u0f94\u0f95\u0001\u0000\u0000"+
56911 		"\u0000\u0f95\u023f\u0001\u0000\u0000\u0000\u0f96\u0f94\u0001\u0000\u0000"+
56912 		"\u0000\u0f97\u0f99\u0005\u0176\u0000\u0000\u0f98\u0f97\u0001\u0000\u0000"+
56913 		"\u0000\u0f98\u0f99\u0001\u0000\u0000\u0000\u0f99\u0fb1\u0001\u0000\u0000"+
56914 		"\u0000\u0f9a\u0f9c\u0005\u0211\u0000\u0000\u0f9b\u0f9a\u0001\u0000\u0000"+
56915 		"\u0000\u0f9b\u0f9c\u0001\u0000\u0000\u0000\u0f9c\u0fb1\u0001\u0000\u0000"+
56916 		"\u0000\u0f9d\u0f9e\u0005\u00d0\u0000\u0000\u0f9e\u0f9f\u0005l\u0000\u0000"+
56917 		"\u0f9f\u0fa0\u0005a\u0000\u0000\u0fa0\u0fa1\u0005l\u0000\u0000\u0fa1\u0fa7"+
56918 		"\u0005\u0213\u0000\u0000\u0fa2\u0fa3\u0005\u0214\u0000\u0000\u0fa3\u0fa4"+
56919 		"\u0005a\u0000\u0000\u0fa4\u0fa5\u0005l\u0000\u0000\u0fa5\u0fa7\u0005\u0213"+
56920 		"\u0000\u0000\u0fa6\u0f9d\u0001\u0000\u0000\u0000\u0fa6\u0fa2\u0001\u0000"+
56921 		"\u0000\u0000\u0fa6\u0fa7\u0001\u0000\u0000\u0000\u0fa7\u0fb1\u0001\u0000"+
56922 		"\u0000\u0000\u0fa8\u0faa\u0003\u00eew\u0000\u0fa9\u0fa8\u0001\u0000\u0000"+
56923 		"\u0000\u0fa9\u0faa\u0001\u0000\u0000\u0000\u0faa\u0fb1\u0001\u0000\u0000"+
56924 		"\u0000\u0fab\u0fac\u0005\u0293\u0000\u0000\u0fac\u0fad\u0005\u0018\u0000"+
56925 		"\u0000\u0fad\u0faf\u0007\u0000\u0000\u0000\u0fae\u0fab\u0001\u0000\u0000"+
56926 		"\u0000\u0fae\u0faf\u0001\u0000\u0000\u0000\u0faf\u0fb1\u0001\u0000\u0000"+
56927 		"\u0000\u0fb0\u0f98\u0001\u0000\u0000\u0000\u0fb0\u0f9b\u0001\u0000\u0000"+
56928 		"\u0000\u0fb0\u0fa6\u0001\u0000\u0000\u0000\u0fb0\u0fa9\u0001\u0000\u0000"+
56929 		"\u0000\u0fb0\u0fae\u0001\u0000\u0000\u0000\u0fb1\u0241\u0001\u0000\u0000"+
56930 		"\u0000\u0fb2\u0fbd\u0003\u0104\u0082\u0000\u0fb3\u0fbd\u0003\u011a\u008d"+
56931 		"\u0000\u0fb4\u0fbd\u0003\u012e\u0097\u0000\u0fb5\u0fbd\u0003\u0142\u00a1"+
56932 		"\u0000\u0fb6\u0fbd\u0003\u02bc\u015e\u0000\u0fb7\u0fbd\u0003\u02ca\u0165"+
56933 		"\u0000\u0fb8\u0fbd\u0003\u02d4\u016a\u0000\u0fb9\u0fbd\u0003\u02de\u016f"+
56934 		"\u0000\u0fba\u0fbd\u0003\u0228\u0114\u0000\u0fbb\u0fbd\u0003\u0218\u010c"+
56935 		"\u0000\u0fbc\u0fb2\u0001\u0000\u0000\u0000\u0fbc\u0fb3\u0001\u0000\u0000"+
56936 		"\u0000\u0fbc\u0fb4\u0001\u0000\u0000\u0000\u0fbc\u0fb5\u0001\u0000\u0000"+
56937 		"\u0000\u0fbc\u0fb6\u0001\u0000\u0000\u0000\u0fbc\u0fb7\u0001\u0000\u0000"+
56938 		"\u0000\u0fbc\u0fb8\u0001\u0000\u0000\u0000\u0fbc\u0fb9\u0001\u0000\u0000"+
56939 		"\u0000\u0fbc\u0fba\u0001\u0000\u0000\u0000\u0fbc\u0fbb\u0001\u0000\u0000"+
56940 		"\u0000\u0fbd\u0fbf\u0001\u0000\u0000\u0000\u0fbe\u0fc0\u0005+\u0000\u0000"+
56941 		"\u0fbf\u0fbe\u0001\u0000\u0000\u0000\u0fbf\u0fc0\u0001\u0000\u0000\u0000"+
56942 		"\u0fc0\u0243\u0001\u0000\u0000\u0000\u0fc1\u0fc6\u0003\u0246\u0123\u0000"+
56943 		"\u0fc2\u0fc3\u0005%\u0000\u0000\u0fc3\u0fc5\u0003\u0246\u0123\u0000\u0fc4"+
56944 		"\u0fc2\u0001\u0000\u0000\u0000\u0fc5\u0fc8\u0001\u0000\u0000\u0000\u0fc6"+
56945 		"\u0fc4\u0001\u0000\u0000\u0000\u0fc6\u0fc7\u0001\u0000\u0000\u0000\u0fc7"+
56946 		"\u0fca\u0001\u0000\u0000\u0000\u0fc8\u0fc6\u0001\u0000\u0000\u0000\u0fc9"+
56947 		"\u0fc1\u0001\u0000\u0000\u0000\u0fc9\u0fca\u0001\u0000\u0000\u0000\u0fca"+
56948 		"\u0245\u0001\u0000\u0000\u0000\u0fcb\u0fcd\u0003\u021a\u010d\u0000\u0fcc"+
56949 		"\u0fce\u0005\u0215\u0000\u0000\u0fcd\u0fcc\u0001\u0000\u0000\u0000\u0fcd"+
56950 		"\u0fce\u0001\u0000\u0000\u0000\u0fce\u0fd1\u0001\u0000\u0000\u0000\u0fcf"+
56951 		"\u0fd0\u0005\u0018\u0000\u0000\u0fd0\u0fd2\u0003\u001a\r\u0000\u0fd1\u0fcf"+
56952 		"\u0001\u0000\u0000\u0000\u0fd1\u0fd2\u0001\u0000\u0000\u0000\u0fd2\u0fd4"+
56953 		"\u0001\u0000\u0000\u0000\u0fd3\u0fd5\u00079\u0000\u0000\u0fd4\u0fd3\u0001"+
56954 		"\u0000\u0000\u0000\u0fd4\u0fd5\u0001\u0000\u0000\u0000\u0fd5\u0247\u0001"+
56955 		"\u0000\u0000\u0000\u0fd6\u0fd8\u0003\u024a\u0125\u0000\u0fd7\u0fd6\u0001"+
56956 		"\u0000\u0000\u0000\u0fd7\u0fd8\u0001\u0000\u0000\u0000\u0fd8\u0fdb\u0001"+
56957 		"\u0000\u0000\u0000\u0fd9\u0fda\u0005f\u0000\u0000\u0fda\u0fdc\u0005\u013c"+
56958 		"\u0000\u0000\u0fdb\u0fd9\u0001\u0000\u0000\u0000\u0fdb\u0fdc\u0001\u0000"+
56959 		"\u0000\u0000\u0fdc\u0fdd\u0001\u0000\u0000\u0000\u0fdd\u0fde\u0005`\u0000"+
56960 		"\u0000\u0fde\u0fdf\u0003\u024e\u0127\u0000\u0fdf\u0249\u0001\u0000\u0000"+
56961 		"\u0000\u0fe0\u0fe9\u0005M\u0000\u0000\u0fe1\u0fe6\u0003\u024c\u0126\u0000"+
56962 		"\u0fe2\u0fe3\u0005%\u0000\u0000\u0fe3\u0fe5\u0003\u024c\u0126\u0000\u0fe4"+
56963 		"\u0fe2\u0001\u0000\u0000\u0000\u0fe5\u0fe8\u0001\u0000\u0000\u0000\u0fe6"+
56964 		"\u0fe4\u0001\u0000\u0000\u0000\u0fe6\u0fe7\u0001\u0000\u0000\u0000\u0fe7"+
56965 		"\u0fea\u0001\u0000\u0000\u0000\u0fe8\u0fe6\u0001\u0000\u0000\u0000\u0fe9"+
56966 		"\u0fe1\u0001\u0000\u0000\u0000\u0fe9\u0fea\u0001\u0000\u0000\u0000\u0fea"+
56967 		"\u024b\u0001\u0000\u0000\u0000\u0feb\u0ff1\u0005\u0176\u0000\u0000\u0fec"+
56968 		"\u0ff1\u0005\u01f1\u0000\u0000\u0fed\u0ff1\u0003\u00eew\u0000\u0fee\u0ff1"+
56969 		"\u0005\u0220\u0000\u0000\u0fef\u0ff1\u0005\u0211\u0000\u0000\u0ff0\u0feb"+
56970 		"\u0001\u0000\u0000\u0000\u0ff0\u0fec\u0001\u0000\u0000\u0000\u0ff0\u0fed"+
56971 		"\u0001\u0000\u0000\u0000\u0ff0\u0fee\u0001\u0000\u0000\u0000\u0ff0\u0fef"+
56972 		"\u0001\u0000\u0000\u0000\u0ff1\u024d\u0001\u0000\u0000\u0000\u0ff2\u0ff4"+
56973 		"\u0005}\u0000\u0000\u0ff3\u0ff2\u0001\u0000\u0000\u0000\u0ff3\u0ff4\u0001"+
56974 		"\u0000\u0000\u0000\u0ff4\u0ff5\u0001\u0000\u0000\u0000\u0ff5\u0ff7\u0003"+
56975 		"\u023e\u011f\u0000\u0ff6\u0ff8\u0005\u011e\u0000\u0000\u0ff7\u0ff6\u0001"+
56976 		"\u0000\u0000\u0000\u0ff7\u0ff8\u0001\u0000\u0000\u0000\u0ff8\u1016\u0001"+
56977 		"\u0000\u0000\u0000\u0ff9\u0ffa\u0005\u0169\u0000\u0000\u0ffa\u0ffe\u0005"+
56978 		"\u00aa\u0000\u0000\u0ffb\u0ffc\u0003L&\u0000\u0ffc\u0ffd\u0005\u0014\u0000"+
56979 		"\u0000\u0ffd\u0fff\u0001\u0000\u0000\u0000\u0ffe\u0ffb\u0001\u0000\u0000"+
56980 		"\u0000\u0ffe\u0fff\u0001\u0000\u0000\u0000\u0fff\u1003\u0001\u0000\u0000"+
56981 		"\u0000\u1000\u1001\u0003L&\u0000\u1001\u1002\u0005\u0014\u0000\u0000\u1002"+
56982 		"\u1004\u0001\u0000\u0000\u0000\u1003\u1000\u0001\u0000\u0000\u0000\u1003"+
56983 		"\u1004\u0001\u0000\u0000\u0000\u1004\u1005\u0001\u0000\u0000\u0000\u1005"+
56984 		"\u1016\u0003N\'\u0000\u1006\u1007\u0005}\u0000\u0000\u1007\u1008\u0005"+
56985 		"\u0218\u0000\u0000\u1008\u1009\u0005M\u0000\u0000\u1009\u100e\u0003\u0250"+
56986 		"\u0128\u0000\u100a\u100b\u0005%\u0000\u0000\u100b\u100d\u0003\u0250\u0128"+
56987 		"\u0000\u100c\u100a\u0001\u0000\u0000\u0000\u100d\u1010\u0001\u0000\u0000"+
56988 		"\u0000\u100e\u100c\u0001\u0000\u0000\u0000\u100e\u100f\u0001\u0000\u0000"+
56989 		"\u0000\u100f\u1011\u0001\u0000\u0000\u0000\u1010\u100e\u0001\u0000\u0000"+
56990 		"\u0000\u1011\u1013\u0003\u023e\u011f\u0000\u1012\u1014\u0005\u011e\u0000"+
56991 		"\u0000\u1013\u1012\u0001\u0000\u0000\u0000\u1013\u1014\u0001\u0000\u0000"+
56992 		"\u0000\u1014\u1016\u0001\u0000\u0000\u0000\u1015\u0ff3\u0001\u0000\u0000"+
56993 		"\u0000\u1015\u0ff9\u0001\u0000\u0000\u0000\u1015\u1006\u0001\u0000\u0000"+
56994 		"\u0000\u1016\u024f\u0001\u0000\u0000\u0000\u1017\u1018\u0005\u0219\u0000"+
56995 		"\u0000\u1018\u1019\u0005\u0018\u0000\u0000\u1019\u102e\u0003\u001c\u000e"+
56996 		"\u0000\u101a\u101b\u0005\u0108\u0000\u0000\u101b\u101c\u0005\u021b\u0000"+
56997 		"\u0000\u101c\u101d\u0005\u021a\u0000\u0000\u101d\u1022\u0005\u0018\u0000"+
56998 		"\u0000\u101e\u1023\u0005\u021c\u0000\u0000\u101f\u1020\u0005\u021d\u0000"+
56999 		"\u0000\u1020\u1023\u0005\u021e\u0000\u0000\u1021\u1023\u0005\u021f\u0000"+
57000 		"\u0000\u1022\u101e\u0001\u0000\u0000\u0000\u1022\u101f\u0001\u0000\u0000"+
57001 		"\u0000\u1022\u1021\u0001\u0000\u0000\u0000\u1023\u102e\u0001\u0000\u0000"+
57002 		"\u0000\u1024\u1025\u0005\u028c\u0000\u0000\u1025\u1026\u0005\u0018\u0000"+
57003 		"\u0000\u1026\u102e\u0003\u001e\u000f\u0000\u1027\u1028\u0005\u0299\u0000"+
57004 		"\u0000\u1028\u1029\u0005\u0018\u0000\u0000\u1029\u102e\u0003\u001c\u000e"+
57005 		"\u0000\u102a\u102b\u0005\u029a\u0000\u0000\u102b\u102c\u0005\u0018\u0000"+
57006 		"\u0000\u102c\u102e\u0007\u0000\u0000\u0000\u102d\u1017\u0001\u0000\u0000"+
57007 		"\u0000\u102d\u101a\u0001\u0000\u0000\u0000\u102d\u1024\u0001\u0000\u0000"+
57008 		"\u0000\u102d\u1027\u0001\u0000\u0000\u0000\u102d\u102a\u0001\u0000\u0000"+
57009 		"\u0000\u102e\u0251\u0001\u0000\u0000\u0000\u102f\u1030\u0005M\u0000\u0000"+
57010 		"\u1030\u1035\u0003\u0254\u012a\u0000\u1031\u1032\u0005%\u0000\u0000\u1032"+
57011 		"\u1034\u0003\u0254\u012a\u0000\u1033\u1031\u0001\u0000\u0000\u0000\u1034"+
57012 		"\u1037\u0001\u0000\u0000\u0000\u1035\u1033\u0001\u0000\u0000\u0000\u1035"+
57013 		"\u1036\u0001\u0000\u0000\u0000\u1036\u1039\u0001\u0000\u0000\u0000\u1037"+
57014 		"\u1035\u0001\u0000\u0000\u0000\u1038\u102f\u0001\u0000\u0000\u0000\u1038"+
57015 		"\u1039\u0001\u0000\u0000\u0000\u1039\u103a\u0001\u0000\u0000\u0000\u103a"+
57016 		"\u103c\u0005`\u0000\u0000\u103b\u103d\u0003\u0256\u012b\u0000\u103c\u103b"+
57017 		"\u0001\u0000\u0000\u0000\u103c\u103d\u0001\u0000\u0000\u0000\u103d\u103e"+
57018 		"\u0001\u0000\u0000\u0000\u103e\u1042\u0003\u02de\u016f\u0000\u103f\u1040"+
57019 		"\u0005M\u0000\u0000\u1040\u1041\u0005\u00ff\u0000\u0000\u1041\u1043\u0005"+
57020 		"\u0102\u0000\u0000\u1042\u103f\u0001\u0000\u0000\u0000\u1042\u1043\u0001"+
57021 		"\u0000\u0000\u0000\u1043\u0253\u0001\u0000\u0000\u0000\u1044\u1045\u0007"+
57022 		":\u0000\u0000\u1045\u0255\u0001\u0000\u0000\u0000\u1046\u1047\u0005M\u0000"+
57023 		"\u0000\u1047\u104c\u0003\u0258\u012c\u0000\u1048\u1049\u0005%\u0000\u0000"+
57024 		"\u1049\u104b\u0003\u0258\u012c\u0000\u104a\u1048\u0001\u0000\u0000\u0000"+
57025 		"\u104b\u104e\u0001\u0000\u0000\u0000\u104c\u104a\u0001\u0000\u0000\u0000"+
57026 		"\u104c\u104d\u0001\u0000\u0000\u0000\u104d\u0257\u0001\u0000\u0000\u0000"+
57027 		"\u104e\u104c\u0001\u0000\u0000\u0000\u104f\u105b\u0003N\'\u0000\u1050"+
57028 		"\u1051\u0005\u001f\u0000\u0000\u1051\u1056\u0003H$\u0000\u1052\u1053\u0005"+
57029 		"%\u0000\u0000\u1053\u1055\u0003H$\u0000\u1054\u1052\u0001\u0000\u0000"+
57030 		"\u0000\u1055\u1058\u0001\u0000\u0000\u0000\u1056\u1054\u0001\u0000\u0000"+
57031 		"\u0000\u1056\u1057\u0001\u0000\u0000\u0000\u1057\u1059\u0001\u0000\u0000"+
57032 		"\u0000\u1058\u1056\u0001\u0000\u0000\u0000\u1059\u105a\u0005 \u0000\u0000"+
57033 		"\u105a\u105c\u0001\u0000\u0000\u0000\u105b\u1050\u0001\u0000\u0000\u0000"+
57034 		"\u105b\u105c\u0001\u0000\u0000\u0000\u105c\u105d\u0001\u0000\u0000\u0000"+
57035 		"\u105d\u105e\u0005`\u0000\u0000\u105e\u105f\u0005\u001f\u0000\u0000\u105f"+
57036 		"\u1060\u0003\u02de\u016f\u0000\u1060\u1061\u0005 \u0000\u0000\u1061\u0259"+
57037 		"\u0001\u0000\u0000\u0000\u1062\u1063\u0005M\u0000\u0000\u1063\u1064\u0003"+
57038 		"\u025c\u012e\u0000\u1064\u1065\u0005%\u0000\u0000\u1065\u1066\u0003\u025c"+
57039 		"\u012e\u0000\u1066\u1068\u0001\u0000\u0000\u0000\u1067\u1062\u0001\u0000"+
57040 		"\u0000\u0000\u1067\u1068\u0001\u0000\u0000\u0000\u1068\u106d\u0001\u0000"+
57041 		"\u0000\u0000\u1069\u106e\u0005f\u0000\u0000\u106a\u106e\u0005\u0222\u0000"+
57042 		"\u0000\u106b\u106c\u0005\u0223\u0000\u0000\u106c\u106e\u0005\u00cf\u0000"+
57043 		"\u0000\u106d\u1069\u0001\u0000\u0000\u0000\u106d\u106a\u0001\u0000\u0000"+
57044 		"\u0000\u106d\u106b\u0001\u0000\u0000\u0000\u106e\u1070\u0001\u0000\u0000"+
57045 		"\u0000\u106f\u1071\u0005/\u0000\u0000\u1070\u106f\u0001\u0000\u0000\u0000"+
57046 		"\u1070\u1071\u0001\u0000\u0000\u0000\u1071\u1073\u0001\u0000\u0000\u0000"+
57047 		"\u1072\u1074\u0005%\u0000\u0000\u1073\u1072\u0001\u0000\u0000\u0000\u1073"+
57048 		"\u1074\u0001\u0000\u0000\u0000\u1074\u1076\u0001\u0000\u0000\u0000\u1075"+
57049 		"\u1077\u00050\u0000\u0000\u1076\u1075\u0001\u0000\u0000\u0000\u1076\u1077"+
57050 		"\u0001\u0000\u0000\u0000\u1077\u1079\u0001\u0000\u0000\u0000\u1078\u107a"+
57051 		"\u0005%\u0000\u0000\u1079\u1078\u0001\u0000\u0000\u0000\u1079\u107a\u0001"+
57052 		"\u0000\u0000\u0000\u107a\u107c\u0001\u0000\u0000\u0000\u107b\u107d\u0005"+
57053 		"1\u0000\u0000\u107c\u107b\u0001\u0000\u0000\u0000\u107c\u107d\u0001\u0000"+
57054 		"\u0000\u0000\u107d\u107f\u0001\u0000\u0000\u0000\u107e\u1080\u0005%\u0000"+
57055 		"\u0000\u107f\u107e\u0001\u0000\u0000\u0000\u107f\u1080\u0001\u0000\u0000"+
57056 		"\u0000\u1080\u1083\u0001\u0000\u0000\u0000\u1081\u1082\u0005M\u0000\u0000"+
57057 		"\u1082\u1084\u0005\u0224\u0000\u0000\u1083\u1081\u0001\u0000\u0000\u0000"+
57058 		"\u1083\u1084\u0001\u0000\u0000\u0000\u1084\u1088\u0001\u0000\u0000\u0000"+
57059 		"\u1085\u1086\u0005k\u0000\u0000\u1086\u1087\u0005f\u0000\u0000\u1087\u1089"+
57060 		"\u0005\u013c\u0000\u0000\u1088\u1085\u0001\u0000\u0000\u0000\u1088\u1089"+
57061 		"\u0001\u0000\u0000\u0000\u1089\u108a\u0001\u0000\u0000\u0000\u108a\u108f"+
57062 		"\u0005`\u0000\u0000\u108b\u1090\u0003\u023e\u011f\u0000\u108c\u108d\u0005"+
57063 		"\u0169\u0000\u0000\u108d\u108e\u0005\u00aa\u0000\u0000\u108e\u1090\u0003"+
57064 		"\u025e\u012f\u0000\u108f\u108b\u0001\u0000\u0000\u0000\u108f\u108c\u0001"+
57065 		"\u0000\u0000\u0000\u1090\u025b\u0001\u0000\u0000\u0000\u1091\u1097\u0005"+
57066 		"\u0176\u0000\u0000\u1092\u1097\u0003\u00eew\u0000\u1093\u1097\u0005\u0220"+
57067 		"\u0000\u0000\u1094\u1097\u0005\u0211\u0000\u0000\u1095\u1097\u0001\u0000"+
57068 		"\u0000\u0000\u1096\u1091\u0001\u0000\u0000\u0000\u1096\u1092\u0001\u0000"+
57069 		"\u0000\u0000\u1096\u1093\u0001\u0000\u0000\u0000\u1096\u1094\u0001\u0000"+
57070 		"\u0000\u0000\u1096\u1095\u0001\u0000\u0000\u0000\u1097\u025d\u0001\u0000"+
57071 		"\u0000\u0000\u1098\u1099\u0003N\'\u0000\u1099\u109a\u0005\u0014\u0000"+
57072 		"\u0000\u109a\u109b\u0003N\'\u0000\u109b\u109c\u0005\u0014\u0000\u0000"+
57073 		"\u109c\u109d\u0003N\'\u0000\u109d\u025f\u0001\u0000\u0000\u0000\u109e"+
57074 		"\u10a4\u0003@ \u0000\u109f\u10a4\u0003:\u001d\u0000\u10a0\u10a1\u0005"+
57075 		"r\u0000\u0000\u10a1\u10a4\u0005\u0155\u0000\u0000\u10a2\u10a4\u0005\u00cc"+
57076 		"\u0000\u0000\u10a3\u109e\u0001\u0000\u0000\u0000\u10a3\u109f\u0001\u0000"+
57077 		"\u0000\u0000\u10a3\u10a0\u0001\u0000\u0000\u0000\u10a3\u10a2\u0001\u0000"+
57078 		"\u0000\u0000\u10a4\u0261\u0001\u0000\u0000\u0000\u10a5\u10a6\u0005`\u0000"+
57079 		"\u0000\u10a6\u10c2\u0003\u00aeW\u0000\u10a7\u10a8\u0007;\u0000\u0000\u10a8"+
57080 		"\u10a9\u0005M\u0000\u0000\u10a9\u10c2\u0003b1\u0000\u10aa\u10ab\u0005"+
57081 		"\u0225\u0000\u0000\u10ab\u10ac\u0005w\u0000\u0000\u10ac\u10c2\u0003b1"+
57082 		"\u0000\u10ad\u10af\u0005\u0228\u0000\u0000\u10ae\u10b0\u0003b1\u0000\u10af"+
57083 		"\u10ae\u0001\u0000\u0000\u0000\u10af\u10b0\u0001\u0000\u0000\u0000\u10b0"+
57084 		"\u10c2\u0001\u0000\u0000\u0000\u10b1\u10b2\u0005\u0101\u0000\u0000\u10b2"+
57085 		"\u10c2\u0005\u0228\u0000\u0000\u10b3\u10b5\u0005\u0229\u0000\u0000\u10b4"+
57086 		"\u10b6\u0003b1\u0000\u10b5\u10b4\u0001\u0000\u0000\u0000\u10b5\u10b6\u0001"+
57087 		"\u0000\u0000\u0000\u10b6\u10c2\u0001\u0000\u0000\u0000\u10b7\u10b8\u0005"+
57088 		"\u0101\u0000\u0000\u10b8\u10c2\u0005\u0229\u0000\u0000\u10b9\u10ba\u0005"+
57089 		"\u0227\u0000\u0000\u10ba\u10c2\u0003b1\u0000\u10bb\u10bc\u0005\u0101\u0000"+
57090 		"\u0000\u10bc\u10c2\u0005\u0227\u0000\u0000\u10bd\u10bf\u0005\u0101\u0000"+
57091 		"\u0000\u10be\u10bd\u0001\u0000\u0000\u0000\u10be\u10bf\u0001\u0000\u0000"+
57092 		"\u0000\u10bf\u10c0\u0001\u0000\u0000\u0000\u10c0\u10c2";
57093 	private static final String _serializedATNSegment2 =
57094 		"\u0005\u0226\u0000\u0000\u10c1\u10a5\u0001\u0000\u0000\u0000\u10c1\u10a7"+
57095 		"\u0001\u0000\u0000\u0000\u10c1\u10aa\u0001\u0000\u0000\u0000\u10c1\u10ad"+
57096 		"\u0001\u0000\u0000\u0000\u10c1\u10b1\u0001\u0000\u0000\u0000\u10c1\u10b3"+
57097 		"\u0001\u0000\u0000\u0000\u10c1\u10b7\u0001\u0000\u0000\u0000\u10c1\u10b9"+
57098 		"\u0001\u0000\u0000\u0000\u10c1\u10bb\u0001\u0000\u0000\u0000\u10c1\u10be"+
57099 		"\u0001\u0000\u0000\u0000\u10c2\u0263\u0001\u0000\u0000\u0000\u10c3\u10c4"+
57100 		"\u0005\u0231\u0000\u0000\u10c4\u10c6\u0003R)\u0000\u10c5\u10c3\u0001\u0000"+
57101 		"\u0000\u0000\u10c5\u10c6\u0001\u0000\u0000\u0000\u10c6\u10c9\u0001\u0000"+
57102 		"\u0000\u0000\u10c7\u10c8\u0005_\u0000\u0000\u10c8\u10ca\u0003\u0266\u0133"+
57103 		"\u0000\u10c9\u10c7\u0001\u0000\u0000\u0000\u10c9\u10ca\u0001\u0000\u0000"+
57104 		"\u0000\u10ca\u10d7\u0001\u0000\u0000\u0000\u10cb\u10cc\u0005M\u0000\u0000"+
57105 		"\u10cc\u10cd\u0005\u001f\u0000\u0000\u10cd\u10d2\u0003\u026c\u0136\u0000"+
57106 		"\u10ce\u10cf\u0005%\u0000\u0000\u10cf\u10d1\u0003\u026c\u0136\u0000\u10d0"+
57107 		"\u10ce\u0001\u0000\u0000\u0000\u10d1\u10d4\u0001\u0000\u0000\u0000\u10d2"+
57108 		"\u10d0\u0001\u0000\u0000\u0000\u10d2\u10d3\u0001\u0000\u0000\u0000\u10d3"+
57109 		"\u10d5\u0001\u0000\u0000\u0000\u10d4\u10d2\u0001\u0000\u0000\u0000\u10d5"+
57110 		"\u10d6\u0005 \u0000\u0000\u10d6\u10d8\u0001\u0000\u0000\u0000\u10d7\u10cb"+
57111 		"\u0001\u0000\u0000\u0000\u10d7\u10d8\u0001\u0000\u0000\u0000\u10d8\u10e2"+
57112 		"\u0001\u0000\u0000\u0000\u10d9\u10e0\u0005a\u0000\u0000\u10da\u10db\u0003"+
57113 		"4\u001a\u0000\u10db\u10dc\u0005\u001f\u0000\u0000\u10dc\u10dd\u0003H$"+
57114 		"\u0000\u10dd\u10de\u0005 \u0000\u0000\u10de\u10e1\u0001\u0000\u0000\u0000"+
57115 		"\u10df\u10e1\u0003N\'\u0000\u10e0\u10da\u0001\u0000\u0000\u0000\u10e0"+
57116 		"\u10df\u0001\u0000\u0000\u0000\u10e1\u10e3\u0001\u0000\u0000\u0000\u10e2"+
57117 		"\u10d9\u0001\u0000\u0000\u0000\u10e2\u10e3\u0001\u0000\u0000\u0000\u10e3"+
57118 		"\u10e9\u0001\u0000\u0000\u0000\u10e4\u10e7\u0005\u01b3\u0000\u0000\u10e5"+
57119 		"\u10e8\u0003N\'\u0000\u10e6\u10e8\u0003\u001c\u000e\u0000\u10e7\u10e5"+
57120 		"\u0001\u0000\u0000\u0000\u10e7\u10e6\u0001\u0000\u0000\u0000\u10e8\u10ea"+
57121 		"\u0001\u0000\u0000\u0000\u10e9\u10e4\u0001\u0000\u0000\u0000\u10e9\u10ea"+
57122 		"\u0001\u0000\u0000\u0000\u10ea\u0265\u0001\u0000\u0000\u0000\u10eb\u10f0"+
57123 		"\u0003\u0268\u0134\u0000\u10ec\u10ed\u0005h\u0000\u0000\u10ed\u10ef\u0003"+
57124 		"\u0268\u0134\u0000\u10ee\u10ec\u0001\u0000\u0000\u0000\u10ef\u10f2\u0001"+
57125 		"\u0000\u0000\u0000\u10f0\u10ee\u0001\u0000\u0000\u0000\u10f0\u10f1\u0001"+
57126 		"\u0000\u0000\u0000\u10f1\u0267\u0001\u0000\u0000\u0000\u10f2\u10f0\u0001"+
57127 		"\u0000\u0000\u0000\u10f3\u10f4\u0003H$\u0000\u10f4\u10f5\u0005q\u0000"+
57128 		"\u0000\u10f5\u10f6\u0005\u001f\u0000\u0000\u10f6\u10fb\u0003b1\u0000\u10f7"+
57129 		"\u10f8\u0005%\u0000\u0000\u10f8\u10fa\u0003b1\u0000\u10f9\u10f7\u0001"+
57130 		"\u0000\u0000\u0000\u10fa\u10fd\u0001\u0000\u0000\u0000\u10fb\u10f9\u0001"+
57131 		"\u0000\u0000\u0000\u10fb\u10fc\u0001\u0000\u0000\u0000\u10fc\u10fe\u0001"+
57132 		"\u0000\u0000\u0000\u10fd\u10fb\u0001\u0000\u0000\u0000\u10fe\u10ff\u0005"+
57133 		" \u0000\u0000\u10ff\u1105\u0001\u0000\u0000\u0000\u1100\u1101\u0003H$"+
57134 		"\u0000\u1101\u1102\u0003n7\u0000\u1102\u1103\u0003b1\u0000\u1103\u1105"+
57135 		"\u0001\u0000\u0000\u0000\u1104\u10f3\u0001\u0000\u0000\u0000\u1104\u1100"+
57136 		"\u0001\u0000\u0000\u0000\u1105\u0269\u0001\u0000\u0000\u0000\u1106\u110d"+
57137 		"\u0005\u013a\u0000\u0000\u1107\u1108\u0005\u00f6\u0000\u0000\u1108\u110b"+
57138 		"\u0005\u0018\u0000\u0000\u1109\u110c\u0005r\u0000\u0000\u110a\u110c\u0003"+
57139 		"b1\u0000\u110b\u1109\u0001\u0000\u0000\u0000\u110b\u110a\u0001\u0000\u0000"+
57140 		"\u0000\u110c\u110e\u0001\u0000\u0000\u0000\u110d\u1107\u0001\u0000\u0000"+
57141 		"\u0000\u110d\u110e\u0001\u0000\u0000\u0000\u110e\u111b\u0001\u0000\u0000"+
57142 		"\u0000\u110f\u1110\u0005M\u0000\u0000\u1110\u1111\u0005\u001f\u0000\u0000"+
57143 		"\u1111\u1116\u0003\u026c\u0136\u0000\u1112\u1113\u0005%\u0000\u0000\u1113"+
57144 		"\u1115\u0003\u026c\u0136\u0000\u1114\u1112\u0001\u0000\u0000\u0000\u1115"+
57145 		"\u1118\u0001\u0000\u0000\u0000\u1116\u1114\u0001\u0000\u0000\u0000\u1116"+
57146 		"\u1117\u0001\u0000\u0000\u0000\u1117\u1119\u0001\u0000\u0000\u0000\u1118"+
57147 		"\u1116\u0001\u0000\u0000\u0000\u1119\u111a\u0005 \u0000\u0000\u111a\u111c"+
57148 		"\u0001\u0000\u0000\u0000\u111b\u110f\u0001\u0000\u0000\u0000\u111b\u111c"+
57149 		"\u0001\u0000\u0000\u0000\u111c\u1145\u0001\u0000\u0000\u0000\u111d\u1145"+
57150 		"\u0005\u009d\u0000\u0000\u111e\u1122\u0005\u022d\u0000\u0000\u111f\u1120"+
57151 		"\u0005\u00f6\u0000\u0000\u1120\u1121\u0005\u0018\u0000\u0000\u1121\u1123"+
57152 		"\u0003b1\u0000\u1122\u111f\u0001\u0000\u0000\u0000\u1122\u1123\u0001\u0000"+
57153 		"\u0000\u0000\u1123\u1129\u0001\u0000\u0000\u0000\u1124\u1125\u0005M\u0000"+
57154 		"\u0000\u1125\u1126\u0005\u001f\u0000\u0000\u1126\u1127\u0003\u0270\u0138"+
57155 		"\u0000\u1127\u1128\u0005 \u0000\u0000\u1128\u112a\u0001\u0000\u0000\u0000"+
57156 		"\u1129\u1124\u0001\u0000\u0000\u0000\u1129\u112a\u0001\u0000\u0000\u0000"+
57157 		"\u112a\u1145\u0001\u0000\u0000\u0000\u112b\u112c\u0005:\u0000\u0000\u112c"+
57158 		"\u112d\u0005\u001f\u0000\u0000\u112d\u112e\u0003\u0272\u0139\u0000\u112e"+
57159 		"\u112f\u0005%\u0000\u0000\u112f\u1130\u0003\u0272\u0139\u0000\u1130\u1131"+
57160 		"\u0001\u0000\u0000\u0000\u1131\u1132\u0005 \u0000\u0000\u1132\u1145\u0001"+
57161 		"\u0000\u0000\u0000\u1133\u1140\u0005\u022e\u0000\u0000\u1134\u1135\u0005"+
57162 		"M\u0000\u0000\u1135\u1136\u0005\u001f\u0000\u0000\u1136\u113b\u0003\u0274"+
57163 		"\u013a\u0000\u1137\u1138\u0005%\u0000\u0000\u1138\u113a\u0003\u0274\u013a"+
57164 		"\u0000\u1139\u1137\u0001\u0000\u0000\u0000\u113a\u113d\u0001\u0000\u0000"+
57165 		"\u0000\u113b\u1139\u0001\u0000\u0000\u0000\u113b\u113c\u0001\u0000\u0000"+
57166 		"\u0000\u113c\u113e\u0001\u0000\u0000\u0000\u113d\u113b\u0001\u0000\u0000"+
57167 		"\u0000\u113e\u113f\u0005 \u0000\u0000\u113f\u1141\u0001\u0000\u0000\u0000"+
57168 		"\u1140\u1134\u0001\u0000\u0000\u0000\u1140\u1141\u0001\u0000\u0000\u0000"+
57169 		"\u1141\u1145\u0001\u0000\u0000\u0000\u1142\u1145\u0005\u022f\u0000\u0000"+
57170 		"\u1143\u1145\u0005\u0230\u0000\u0000\u1144\u1106\u0001\u0000\u0000\u0000"+
57171 		"\u1144\u111d\u0001\u0000\u0000\u0000\u1144\u111e\u0001\u0000\u0000\u0000"+
57172 		"\u1144\u112b\u0001\u0000\u0000\u0000\u1144\u1133\u0001\u0000\u0000\u0000"+
57173 		"\u1144\u1142\u0001\u0000\u0000\u0000\u1144\u1143\u0001\u0000\u0000\u0000"+
57174 		"\u1145\u026b\u0001\u0000\u0000\u0000\u1146\u1147\u0005\u01b1\u0000\u0000"+
57175 		"\u1147\u1148\u0005\u0018\u0000\u0000\u1148\u118a\u0007\u0000\u0000\u0000"+
57176 		"\u1149\u114a\u0005\u0121\u0000\u0000\u114a\u114b\u0005\u0018\u0000\u0000"+
57177 		"\u114b\u118a\u0003b1\u0000\u114c\u114d\u0005\u01ab\u0000\u0000\u114d\u114e"+
57178 		"\u0005\u0018\u0000\u0000\u114e\u118a\u0007\u0000\u0000\u0000\u114f\u1150"+
57179 		"\u0005\u01ac\u0000\u0000\u1150\u1151\u0005\u0018\u0000\u0000\u1151\u118a"+
57180 		"\u0007\u0000\u0000\u0000\u1152\u1153\u0005\u01a7\u0000\u0000\u1153\u1154"+
57181 		"\u0005\u0018\u0000\u0000\u1154\u118a\u0007\u0000\u0000\u0000\u1155\u1156"+
57182 		"\u0005\u01a6\u0000\u0000\u1156\u1157\u0005\u0018\u0000\u0000\u1157\u118a"+
57183 		"\u0007\u0000\u0000\u0000\u1158\u1159\u0005\u01bd\u0000\u0000\u1159\u115a"+
57184 		"\u0005\u0018\u0000\u0000\u115a\u118a\u0007\u0000\u0000\u0000\u115b\u115c"+
57185 		"\u0005\u0131\u0000\u0000\u115c\u1162\u0005\u0018\u0000\u0000\u115d\u115f"+
57186 		"\u0005a\u0000\u0000\u115e\u1160\u0003\u00e2q\u0000\u115f\u115e\u0001\u0000"+
57187 		"\u0000\u0000\u115f\u1160\u0001\u0000\u0000\u0000\u1160\u1163\u0001\u0000"+
57188 		"\u0000\u0000\u1161\u1163\u0005b\u0000\u0000\u1162\u115d\u0001\u0000\u0000"+
57189 		"\u0000\u1162\u1161\u0001\u0000\u0000\u0000\u1163\u118a\u0001\u0000\u0000"+
57190 		"\u0000\u1164\u1165\u0005\u013d\u0000\u0000\u1165\u1166\u0005\u0018\u0000"+
57191 		"\u0000\u1166\u118a\u0007\u0000\u0000\u0000\u1167\u1168\u0005\u01ae\u0000"+
57192 		"\u0000\u1168\u1169\u0005\u0018\u0000\u0000\u1169\u116b\u0003b1\u0000\u116a"+
57193 		"\u116c\u0005\u0117\u0000\u0000\u116b\u116a\u0001\u0000\u0000\u0000\u116b"+
57194 		"\u116c\u0001\u0000\u0000\u0000\u116c\u118a\u0001\u0000\u0000\u0000\u116d"+
57195 		"\u116e\u0005\u0197\u0000\u0000\u116e\u116f\u0005\u0018\u0000\u0000\u116f"+
57196 		"\u118a\u0007\u0000\u0000\u0000\u1170\u1171\u0005\u0196\u0000\u0000\u1171"+
57197 		"\u1172\u0005\u0018\u0000\u0000\u1172\u118a\u0007\u0000\u0000\u0000\u1173"+
57198 		"\u1174\u0005\u01f3\u0000\u0000\u1174\u1175\u0005\u0018\u0000\u0000\u1175"+
57199 		"\u118a\u0007\u0000\u0000\u0000\u1176\u1177\u0005\u012c\u0000\u0000\u1177"+
57200 		"\u1178\u0005\u0018\u0000\u0000\u1178\u118a\u0003b1\u0000\u1179\u117a\u0005"+
57201 		"\u019f\u0000\u0000\u117a\u117b\u0005\u0018\u0000\u0000\u117b\u1187\u0007"+
57202 		"\u001d\u0000\u0000\u117c\u117d\u0005a\u0000\u0000\u117d\u117e\u0005\u00f7"+
57203 		"\u0000\u0000\u117e\u117f\u0005\u001f\u0000\u0000\u117f\u1184\u0003\u026e"+
57204 		"\u0137\u0000\u1180\u1181\u0005%\u0000\u0000\u1181\u1183\u0003\u026e\u0137"+
57205 		"\u0000\u1182\u1180\u0001\u0000\u0000\u0000\u1183\u1186\u0001\u0000\u0000"+
57206 		"\u0000\u1184\u1182\u0001\u0000\u0000\u0000\u1184\u1185\u0001\u0000\u0000"+
57207 		"\u0000\u1185\u1188\u0001\u0000\u0000\u0000\u1186\u1184\u0001\u0000\u0000"+
57208 		"\u0000\u1187\u117c\u0001\u0000\u0000\u0000\u1187\u1188\u0001\u0000\u0000"+
57209 		"\u0000\u1188\u118a\u0001\u0000\u0000\u0000\u1189\u1146\u0001\u0000\u0000"+
57210 		"\u0000\u1189\u1149\u0001\u0000\u0000\u0000\u1189\u114c\u0001\u0000\u0000"+
57211 		"\u0000\u1189\u114f\u0001\u0000\u0000\u0000\u1189\u1152\u0001\u0000\u0000"+
57212 		"\u0000\u1189\u1155\u0001\u0000\u0000\u0000\u1189\u1158\u0001\u0000\u0000"+
57213 		"\u0000\u1189\u115b\u0001\u0000\u0000\u0000\u1189\u1164\u0001\u0000\u0000"+
57214 		"\u0000\u1189\u1167\u0001\u0000\u0000\u0000\u1189\u116d\u0001\u0000\u0000"+
57215 		"\u0000\u1189\u1170\u0001\u0000\u0000\u0000\u1189\u1173\u0001\u0000\u0000"+
57216 		"\u0000\u1189\u1176\u0001\u0000\u0000\u0000\u1189\u1179\u0001\u0000\u0000"+
57217 		"\u0000\u118a\u026d\u0001\u0000\u0000\u0000\u118b\u118e\u0003b1\u0000\u118c"+
57218 		"\u118d\u0005g\u0000\u0000\u118d\u118f\u0003b1\u0000\u118e\u118c\u0001"+
57219 		"\u0000\u0000\u0000\u118e\u118f\u0001\u0000\u0000\u0000\u118f\u026f\u0001"+
57220 		"\u0000\u0000\u0000\u1190\u1191\u0005\u022b\u0000\u0000\u1191\u1192\u0005"+
57221 		"\u0018\u0000\u0000\u1192\u1197\u0007\u0000\u0000\u0000\u1193\u1194\u0005"+
57222 		"\u022c\u0000\u0000\u1194\u1195\u0005\u0018\u0000\u0000\u1195\u1197\u0007"+
57223 		"\u0000\u0000\u0000\u1196\u1190\u0001\u0000\u0000\u0000\u1196\u1193\u0001"+
57224 		"\u0000\u0000\u0000\u1197\u0271\u0001\u0000\u0000\u0000\u1198\u1199\u0005"+
57225 		"\u0197\u0000\u0000\u1199\u119a\u0005\u0018\u0000\u0000\u119a\u11ae\u0007"+
57226 		"\u0000\u0000\u0000\u119b\u119c\u0005\u0196\u0000\u0000\u119c\u119d\u0005"+
57227 		"\u0018\u0000\u0000\u119d\u11ae\u0007\u0000\u0000\u0000\u119e\u119f\u0005"+
57228 		"\u01f3\u0000\u0000\u119f\u11a0\u0005\u0018\u0000\u0000\u11a0\u11ae\u0007"+
57229 		"\u0000\u0000\u0000\u11a1\u11a2\u0005\u01ac\u0000\u0000\u11a2\u11a3\u0005"+
57230 		"\u0018\u0000\u0000\u11a3\u11ae\u0007\u0000\u0000\u0000\u11a4\u11a5\u0005"+
57231 		"\u01a7\u0000\u0000\u11a5\u11a6\u0005\u0018\u0000\u0000\u11a6\u11ae\u0007"+
57232 		"\u0000\u0000\u0000\u11a7\u11a8\u0005\u019d\u0000\u0000\u11a8\u11a9\u0005"+
57233 		"\u0018\u0000\u0000\u11a9\u11ab\u0003b1\u0000\u11aa\u11ac\u0005\u0117\u0000"+
57234 		"\u0000\u11ab\u11aa\u0001\u0000\u0000\u0000\u11ab\u11ac\u0001\u0000\u0000"+
57235 		"\u0000\u11ac\u11ae\u0001\u0000\u0000\u0000\u11ad\u1198\u0001\u0000\u0000"+
57236 		"\u0000\u11ad\u119b\u0001\u0000\u0000\u0000\u11ad\u119e\u0001\u0000\u0000"+
57237 		"\u0000\u11ad\u11a1\u0001\u0000\u0000\u0000\u11ad\u11a4\u0001\u0000\u0000"+
57238 		"\u0000\u11ad\u11a7\u0001\u0000\u0000\u0000\u11ae\u0273\u0001\u0000\u0000"+
57239 		"\u0000\u11af\u11b0\u0005\u012c\u0000\u0000\u11b0\u11b1\u0005\u0018\u0000"+
57240 		"\u0000\u11b1\u11ba\u0003b1\u0000\u11b2\u11b3\u0005\u01ae\u0000\u0000\u11b3"+
57241 		"\u11b4\u0005\u0018\u0000\u0000\u11b4\u11b6\u0003b1\u0000\u11b5\u11b7\u0005"+
57242 		"\u0117\u0000\u0000\u11b6\u11b5\u0001\u0000\u0000\u0000\u11b6\u11b7\u0001"+
57243 		"\u0000\u0000\u0000\u11b7\u11ba\u0001\u0000\u0000\u0000\u11b8\u11ba\u0003"+
57244 		"\u00e2q\u0000\u11b9\u11af\u0001\u0000\u0000\u0000\u11b9\u11b2\u0001\u0000"+
57245 		"\u0000\u0000\u11b9\u11b8\u0001\u0000\u0000\u0000\u11ba\u0275\u0001\u0000"+
57246 		"\u0000\u0000\u11bb\u11bc\u0005\u023a\u0000\u0000\u11bc\u11bd\u0005\u00aa"+
57247 		"\u0000\u0000\u11bd\u11be\u0005\u0018\u0000\u0000\u11be\u11f2\u00032\u0019"+
57248 		"\u0000\u11bf\u11c0\u0005\u010f\u0000\u0000\u11c0\u11f2\u0003\u00e6s\u0000"+
57249 		"\u11c1\u11f2\u0003\u0280\u0140\u0000\u11c2\u11c3\u0005:\u0000\u0000\u11c3"+
57250 		"\u11c8\u0003\u027e\u013f\u0000\u11c4\u11c5\u0005%\u0000\u0000\u11c5\u11c7"+
57251 		"\u0003\u027e\u013f\u0000\u11c6\u11c4\u0001\u0000\u0000\u0000\u11c7\u11ca"+
57252 		"\u0001\u0000\u0000\u0000\u11c8\u11c6\u0001\u0000\u0000\u0000\u11c8\u11c9"+
57253 		"\u0001\u0000\u0000\u0000\u11c9\u11cd\u0001\u0000\u0000\u0000\u11ca\u11c8"+
57254 		"\u0001\u0000\u0000\u0000\u11cb\u11cc\u0005M\u0000\u0000\u11cc\u11ce\u0003"+
57255 		"\u02a6\u0153\u0000\u11cd\u11cb\u0001\u0000\u0000\u0000\u11cd\u11ce\u0001"+
57256 		"\u0000\u0000\u0000\u11ce\u11f2\u0001\u0000\u0000\u0000\u11cf\u11d0\u0005"+
57257 		"\u023a\u0000\u0000\u11d0\u11d1\u0005\u001f\u0000\u0000\u11d1\u11d6\u0003"+
57258 		"\u027a\u013d\u0000\u11d2\u11d3\u0005%\u0000\u0000\u11d3\u11d5\u0003\u027a"+
57259 		"\u013d\u0000\u11d4\u11d2\u0001\u0000\u0000\u0000\u11d5\u11d8\u0001\u0000"+
57260 		"\u0000\u0000\u11d6\u11d4\u0001\u0000\u0000\u0000\u11d6\u11d7\u0001\u0000"+
57261 		"\u0000\u0000\u11d7\u11d9\u0001\u0000\u0000\u0000\u11d8\u11d6\u0001\u0000"+
57262 		"\u0000\u0000\u11d9\u11da\u0005 \u0000\u0000\u11da\u11f2\u0001\u0000\u0000"+
57263 		"\u0000\u11db\u11dc\u0005\u023a\u0000\u0000\u11dc\u11dd\u0005\u028d\u0000"+
57264 		"\u0000\u11dd\u11de\u0005\u0018\u0000\u0000\u11de\u11f2\u0005\u02d4\u0000"+
57265 		"\u0000\u11df\u11e0\u00059\u0000\u0000\u11e0\u11e1\u0005\u028f\u0000\u0000"+
57266 		"\u11e1\u11e2\u0005a\u0000\u0000\u11e2\u11e3\u0005\u0155\u0000\u0000\u11e3"+
57267 		"\u11ed\u0003\u00e6s\u0000\u11e4\u11e5\u0005M\u0000\u0000\u11e5\u11ea\u0003"+
57268 		"\u0278\u013c\u0000\u11e6\u11e7\u0005%\u0000\u0000\u11e7\u11e9\u0003\u0278"+
57269 		"\u013c\u0000\u11e8\u11e6\u0001\u0000\u0000\u0000\u11e9\u11ec\u0001\u0000"+
57270 		"\u0000\u0000\u11ea\u11e8\u0001\u0000\u0000\u0000\u11ea\u11eb\u0001\u0000"+
57271 		"\u0000\u0000\u11eb\u11ee\u0001\u0000\u0000\u0000\u11ec\u11ea\u0001\u0000"+
57272 		"\u0000\u0000\u11ed\u11e4\u0001\u0000\u0000\u0000\u11ed\u11ee\u0001\u0000"+
57273 		"\u0000\u0000\u11ee\u11f2\u0001\u0000\u0000\u0000\u11ef\u11f2\u0005\u0290"+
57274 		"\u0000\u0000\u11f0\u11f2\u0005\u028e\u0000\u0000\u11f1\u11bb\u0001\u0000"+
57275 		"\u0000\u0000\u11f1\u11bf\u0001\u0000\u0000\u0000\u11f1\u11c1\u0001\u0000"+
57276 		"\u0000\u0000\u11f1\u11c2\u0001\u0000\u0000\u0000\u11f1\u11cf\u0001\u0000"+
57277 		"\u0000\u0000\u11f1\u11db\u0001\u0000\u0000\u0000\u11f1\u11df\u0001\u0000"+
57278 		"\u0000\u0000\u11f1\u11ef\u0001\u0000\u0000\u0000\u11f1\u11f0\u0001\u0000"+
57279 		"\u0000\u0000\u11f2\u0277\u0001\u0000\u0000\u0000\u11f3\u11f4\u0005\u0289"+
57280 		"\u0000\u0000\u11f4\u11f5\u0005\u0018\u0000\u0000\u11f5\u1200\u0007<\u0000"+
57281 		"\u0000\u11f6\u11f7\u0005\u0287\u0000\u0000\u11f7\u11fd\u0005\u0018\u0000"+
57282 		"\u0000\u11f8\u11fe\u0003\u027c\u013e\u0000\u11f9\u11fa\u0005\u0288\u0000"+
57283 		"\u0000\u11fa\u11fb\u0005\u0018\u0000\u0000\u11fb\u11fe\u00032\u0019\u0000"+
57284 		"\u11fc\u11fe\u0007=\u0000\u0000\u11fd\u11f8\u0001\u0000\u0000\u0000\u11fd"+
57285 		"\u11f9\u0001\u0000\u0000\u0000\u11fd\u11fc\u0001\u0000\u0000\u0000\u11fe"+
57286 		"\u1200\u0001\u0000\u0000\u0000\u11ff\u11f3\u0001\u0000\u0000\u0000\u11ff"+
57287 		"\u11f6\u0001\u0000\u0000\u0000\u1200\u0279\u0001\u0000\u0000\u0000\u1201"+
57288 		"\u1202\u0005\u01fb\u0000\u0000\u1202\u1203\u0005\u0018\u0000\u0000\u1203"+
57289 		"\u1204\u0005\u02d5\u0000\u0000\u1204\u120f\u0007>\u0000\u0000\u1205\u1206"+
57290 		"\u0005\u027a\u0000\u0000\u1206\u1207\u0005\u0018\u0000\u0000\u1207\u120f"+
57291 		"\u0005\u02d4\u0000\u0000\u1208\u1209\u0005\u0287\u0000\u0000\u1209\u120c"+
57292 		"\u0005\u0018\u0000\u0000\u120a\u120d\u0005\u02d4\u0000\u0000\u120b\u120d"+
57293 		"\u0003\u027c\u013e\u0000\u120c\u120a\u0001\u0000\u0000\u0000\u120c\u120b"+
57294 		"\u0001\u0000\u0000\u0000\u120d\u120f\u0001\u0000\u0000\u0000\u120e\u1201"+
57295 		"\u0001\u0000\u0000\u0000\u120e\u1205\u0001\u0000\u0000\u0000\u120e\u1208"+
57296 		"\u0001\u0000\u0000\u0000\u120f\u027b\u0001\u0000\u0000\u0000\u1210\u1219"+
57297 		"\u0005\u02d4\u0000\u0000\u1211\u1212\u0005\u0286\u0000\u0000\u1212\u1213"+
57298 		"\u0005\u001f\u0000\u0000\u1213\u1214\u0003\u00e6s\u0000\u1214\u1215\u0005"+
57299 		"\u0018\u0000\u0000\u1215\u1216\u0005\u02d4\u0000\u0000\u1216\u1217\u0005"+
57300 		" \u0000\u0000\u1217\u1219\u0001\u0000\u0000\u0000\u1218\u1210\u0001\u0000"+
57301 		"\u0000\u0000\u1218\u1211\u0001\u0000\u0000\u0000\u1219\u027d\u0001\u0000"+
57302 		"\u0000\u0000\u121a\u1246\u0003\u0288\u0144\u0000\u121b\u1246\u0003\u028a"+
57303 		"\u0145\u0000\u121c\u1246\u0003\u028c\u0146\u0000\u121d\u1246\u0003\u028e"+
57304 		"\u0147\u0000\u121e\u121f\u0005\u01f7\u0000\u0000\u121f\u1220\u0005\u0018"+
57305 		"\u0000\u0000\u1220\u1246\u00072\u0000\u0000\u1221\u1246\u0003\u0292\u0149"+
57306 		"\u0000\u1222\u1223\u0005\u0285\u0000\u0000\u1223\u1246\u0007\u0000\u0000"+
57307 		"\u0000\u1224\u1225\u0005\u0176\u0000\u0000\u1225\u1246\u0007?\u0000\u0000"+
57308 		"\u1226\u1246\u0007@\u0000\u0000\u1227\u1246\u0007A\u0000\u0000\u1228\u1246"+
57309 		"\u0007B\u0000\u0000\u1229\u122a\u0005\u029a\u0000\u0000\u122a\u122b\u0005"+
57310 		"\u0018\u0000\u0000\u122b\u1246\u0007C\u0000\u0000\u122c\u1246\u0003\u0294"+
57311 		"\u014a\u0000\u122d\u122e\u0005\u011f\u0000\u0000\u122e\u122f\u0005\u001f"+
57312 		"\u0000\u0000\u122f\u1230\u0003\u020c\u0106\u0000\u1230\u1231\u0005 \u0000"+
57313 		"\u0000\u1231\u1246\u0001\u0000\u0000\u0000\u1232\u1233\u00053\u0000\u0000"+
57314 		"\u1233\u1234\u0005\u00cc\u0000\u0000\u1234\u1235\u0005:\u0000\u0000\u1235"+
57315 		"\u1246\u0005\u027e\u0000\u0000\u1236\u1237\u0005\u027b\u0000\u0000\u1237"+
57316 		"\u1246\u0007\u0000\u0000\u0000\u1238\u1239\u0005\u01ef\u0000\u0000\u1239"+
57317 		"\u1246\u0007D\u0000\u0000\u123a\u1246\u0003\u0296\u014b\u0000\u123b\u1246"+
57318 		"\u0003\u029c\u014e\u0000\u123c\u1246\u0003\u02a2\u0151\u0000\u123d\u1246"+
57319 		"\u0003\u02a0\u0150\u0000\u123e\u1246\u0003\u029e\u014f\u0000\u123f\u1246"+
57320 		"\u0003\u02a4\u0152\u0000\u1240\u1246\u0003\u02a6\u0153\u0000\u1241\u1242"+
57321 		"\u0005\u0279\u0000\u0000\u1242\u1246\u0007\u0000\u0000\u0000\u1243\u1244"+
57322 		"\u0005\u0278\u0000\u0000\u1244\u1246\u0007\u0000\u0000\u0000\u1245\u121a"+
57323 		"\u0001\u0000\u0000\u0000\u1245\u121b\u0001\u0000\u0000\u0000\u1245\u121c"+
57324 		"\u0001\u0000\u0000\u0000\u1245\u121d\u0001\u0000\u0000\u0000\u1245\u121e"+
57325 		"\u0001\u0000\u0000\u0000\u1245\u1221\u0001\u0000\u0000\u0000\u1245\u1222"+
57326 		"\u0001\u0000\u0000\u0000\u1245\u1224\u0001\u0000\u0000\u0000\u1245\u1226"+
57327 		"\u0001\u0000\u0000\u0000\u1245\u1227\u0001\u0000\u0000\u0000\u1245\u1228"+
57328 		"\u0001\u0000\u0000\u0000\u1245\u1229\u0001\u0000\u0000\u0000\u1245\u122c"+
57329 		"\u0001\u0000\u0000\u0000\u1245\u122d\u0001\u0000\u0000\u0000\u1245\u1232"+
57330 		"\u0001\u0000\u0000\u0000\u1245\u1236\u0001\u0000\u0000\u0000\u1245\u1238"+
57331 		"\u0001\u0000\u0000\u0000\u1245\u123a\u0001\u0000\u0000\u0000\u1245\u123b"+
57332 		"\u0001\u0000\u0000\u0000\u1245\u123c\u0001\u0000\u0000\u0000\u1245\u123d"+
57333 		"\u0001\u0000\u0000\u0000\u1245\u123e\u0001\u0000\u0000\u0000\u1245\u123f"+
57334 		"\u0001\u0000\u0000\u0000\u1245\u1240\u0001\u0000\u0000\u0000\u1245\u1241"+
57335 		"\u0001\u0000\u0000\u0000\u1245\u1243\u0001\u0000\u0000\u0000\u1246\u027f"+
57336 		"\u0001\u0000\u0000\u0000\u1247\u124c\u0003\u0286\u0143\u0000\u1248\u124c"+
57337 		"\u0003\u020e\u0107\u0000\u1249\u124c\u0003\u0282\u0141\u0000\u124a\u124c"+
57338 		"\u0003\u0284\u0142\u0000\u124b\u1247\u0001\u0000\u0000\u0000\u124b\u1248"+
57339 		"\u0001\u0000\u0000\u0000\u124b\u1249\u0001\u0000\u0000\u0000\u124b\u124a"+
57340 		"\u0001\u0000\u0000\u0000\u124c\u0281\u0001\u0000\u0000\u0000\u124d\u124e"+
57341 		"\u00059\u0000\u0000\u124e\u124f\u0005\u0204\u0000\u0000\u124f\u1254\u0003"+
57342 		"\u00e6s\u0000\u1250\u1251\u0005\u0202\u0000\u0000\u1251\u1255\u0005\u011f"+
57343 		"\u0000\u0000\u1252\u1253\u0005\u0202\u0000\u0000\u1253\u1255\u0005\u0203"+
57344 		"\u0000\u0000\u1254\u1250\u0001\u0000\u0000\u0000\u1254\u1252\u0001\u0000"+
57345 		"\u0000\u0000\u1254\u1255\u0001\u0000\u0000\u0000\u1255\u1264\u0001\u0000"+
57346 		"\u0000\u0000\u1256\u1257\u0005\u0235\u0000\u0000\u1257\u1258\u0005\u0204"+
57347 		"\u0000\u0000\u1258\u1264\u0003\u00e6s\u0000\u1259\u125a\u0005\u023a\u0000"+
57348 		"\u0000\u125a\u125b\u0005\u0204\u0000\u0000\u125b\u125c\u0003\u00e6s\u0000"+
57349 		"\u125c\u125d\u0003\u0284\u0142\u0000\u125d\u1264\u0001\u0000\u0000\u0000"+
57350 		"\u125e\u1264\u0005\u009a\u0000\u0000\u125f\u1260\u0005\u00aa\u0000\u0000"+
57351 		"\u1260\u1261\u0005\u0018\u0000\u0000\u1261\u1264\u0003\u00e6s\u0000\u1262"+
57352 		"\u1264\u0007E\u0000\u0000\u1263\u124d\u0001\u0000\u0000\u0000\u1263\u1256"+
57353 		"\u0001\u0000\u0000\u0000\u1263\u1259\u0001\u0000\u0000\u0000\u1263\u125e"+
57354 		"\u0001\u0000\u0000\u0000\u1263\u125f\u0001\u0000\u0000\u0000\u1263\u1262"+
57355 		"\u0001\u0000\u0000\u0000\u1264\u0283\u0001\u0000\u0000\u0000\u1265\u1268"+
57356 		"\u0007F\u0000\u0000\u1266\u1268\u0007A\u0000\u0000\u1267\u1265\u0001\u0000"+
57357 		"\u0000\u0000\u1267\u1266\u0001\u0000\u0000\u0000\u1268\u0285\u0001\u0000"+
57358 		"\u0000\u0000\u1269\u126a\u00059\u0000\u0000\u126a\u126b\u0005\u017a\u0000"+
57359 		"\u0000\u126b\u1270\u0003\u020e\u0107\u0000\u126c\u126d\u0005%\u0000\u0000"+
57360 		"\u126d\u126f\u0003\u020e\u0107\u0000\u126e\u126c\u0001\u0000\u0000\u0000"+
57361 		"\u126f\u1272\u0001\u0000\u0000\u0000\u1270\u126e\u0001\u0000\u0000\u0000"+
57362 		"\u1270\u1271\u0001\u0000\u0000\u0000\u1271\u1276\u0001\u0000\u0000\u0000"+
57363 		"\u1272\u1270\u0001\u0000\u0000\u0000\u1273\u1274\u0005g\u0000\u0000\u1274"+
57364 		"\u1275\u0005\u0204\u0000\u0000\u1275\u1277\u0003\u00e6s\u0000\u1276\u1273"+
57365 		"\u0001\u0000\u0000\u0000\u1276\u1277\u0001\u0000\u0000\u0000\u1277\u128a"+
57366 		"\u0001\u0000\u0000\u0000\u1278\u1279\u00059\u0000\u0000\u1279\u127a\u0005"+
57367 		"\u018e\u0000\u0000\u127a\u127b\u0005\u017a\u0000\u0000\u127b\u1280\u0003"+
57368 		"\u020e\u0107\u0000\u127c\u127d\u0005%\u0000\u0000\u127d\u127f\u0003\u020e"+
57369 		"\u0107\u0000\u127e\u127c\u0001\u0000\u0000\u0000\u127f\u1282\u0001\u0000"+
57370 		"\u0000\u0000\u1280\u127e\u0001\u0000\u0000\u0000\u1280\u1281\u0001\u0000"+
57371 		"\u0000\u0000\u1281\u128a\u0001\u0000\u0000\u0000\u1282\u1280\u0001\u0000"+
57372 		"\u0000\u0000\u1283\u1284\u0005\u0235\u0000\u0000\u1284\u1285\u0005\u017a"+
57373 		"\u0000\u0000\u1285\u128a\u0005\u02d4\u0000\u0000\u1286\u1287\u0005\u023a"+
57374 		"\u0000\u0000\u1287\u1288\u0005\u017a\u0000\u0000\u1288\u128a\u0003\u020e"+
57375 		"\u0107\u0000\u1289\u1269\u0001\u0000\u0000\u0000\u1289\u1278\u0001\u0000"+
57376 		"\u0000\u0000\u1289\u1283\u0001\u0000\u0000\u0000\u1289\u1286\u0001\u0000"+
57377 		"\u0000\u0000\u128a\u0287\u0001\u0000\u0000\u0000\u128b\u128c\u0005\u023b"+
57378 		"\u0000\u0000\u128c\u128d\u0005\u0018\u0000\u0000\u128d\u1294\u0007\u0000"+
57379 		"\u0000\u0000\u128e\u128f\u0005\u001f\u0000\u0000\u128f\u1290\u0005\u023c"+
57380 		"\u0000\u0000\u1290\u1291\u0005\u0018\u0000\u0000\u1291\u1292\u0003\u00e6"+
57381 		"s\u0000\u1292\u1293\u0005 \u0000\u0000\u1293\u1295\u0001\u0000\u0000\u0000"+
57382 		"\u1294\u128e\u0001\u0000\u0000\u0000\u1294\u1295\u0001\u0000\u0000\u0000"+
57383 		"\u1295\u0289\u0001\u0000\u0000\u0000\u1296\u1297\u0005\u0277\u0000\u0000"+
57384 		"\u1297\u12ab\u0007\u0000\u0000\u0000\u1298\u12a2\u0005\u0275\u0000\u0000"+
57385 		"\u1299\u12a3\u0005b\u0000\u0000\u129a\u12a0\u0005a\u0000\u0000\u129b\u129c"+
57386 		"\u0005\u001f\u0000\u0000\u129c\u129d\u0005\u0276\u0000\u0000\u129d\u129e"+
57387 		"\u0005\u0018\u0000\u0000\u129e\u129f\u0007\u0000\u0000\u0000\u129f\u12a1"+
57388 		"\u0005 \u0000\u0000\u12a0\u129b\u0001\u0000\u0000\u0000\u12a0\u12a1\u0001"+
57389 		"\u0000\u0000\u0000\u12a1\u12a3\u0001\u0000\u0000\u0000\u12a2\u1299\u0001"+
57390 		"\u0000\u0000\u0000\u12a2\u129a\u0001\u0000\u0000\u0000\u12a3\u12ab\u0001"+
57391 		"\u0000\u0000\u0000\u12a4\u12a5\u0005\u0274\u0000\u0000\u12a5\u12ab\u0007"+
57392 		"\u0000\u0000\u0000\u12a6\u12a7\u0005\u0273\u0000\u0000\u12a7\u12ab\u0007"+
57393 		"\u0000\u0000\u0000\u12a8\u12a9\u0005\u0272\u0000\u0000\u12a9\u12ab\u0007"+
57394 		"\u0000\u0000\u0000\u12aa\u1296\u0001\u0000\u0000\u0000\u12aa\u1298\u0001"+
57395 		"\u0000\u0000\u0000\u12aa\u12a4\u0001\u0000\u0000\u0000\u12aa\u12a6\u0001"+
57396 		"\u0000\u0000\u0000\u12aa\u12a8\u0001\u0000\u0000\u0000\u12ab\u028b\u0001"+
57397 		"\u0000\u0000\u0000\u12ac\u12ad\u0005\u0270\u0000\u0000\u12ad\u12ae\u0005"+
57398 		"\u001f\u0000\u0000\u12ae\u12af\u0005\u0271\u0000\u0000\u12af\u12b0\u0005"+
57399 		"\u0018\u0000\u0000\u12b0\u12b1\u0007\u0000\u0000\u0000\u12b1\u12b2\u0005"+
57400 		" \u0000\u0000\u12b2\u028d\u0001\u0000\u0000\u0000\u12b3\u12c7\u0005\u026f"+
57401 		"\u0000\u0000\u12b4\u12b5\u0005\u0018\u0000\u0000\u12b5\u12c8\u0005b\u0000"+
57402 		"\u0000\u12b6\u12b7\u0005\u0018\u0000\u0000\u12b7\u12b9\u0005a\u0000\u0000"+
57403 		"\u12b8\u12b6\u0001\u0000\u0000\u0000\u12b8\u12b9\u0001\u0000\u0000\u0000"+
57404 		"\u12b9\u12c5\u0001\u0000\u0000\u0000\u12ba\u12bb\u0005\u001f\u0000\u0000"+
57405 		"\u12bb\u12c0\u0003\u0290\u0148\u0000\u12bc\u12bd\u0005%\u0000\u0000\u12bd"+
57406 		"\u12bf\u0003\u0290\u0148\u0000\u12be\u12bc\u0001\u0000\u0000\u0000\u12bf"+
57407 		"\u12c2\u0001\u0000\u0000\u0000\u12c0\u12be\u0001\u0000\u0000\u0000\u12c0"+
57408 		"\u12c1\u0001\u0000\u0000\u0000\u12c1\u12c3\u0001\u0000\u0000\u0000\u12c2"+
57409 		"\u12c0\u0001\u0000\u0000\u0000\u12c3\u12c4\u0005 \u0000\u0000\u12c4\u12c6"+
57410 		"\u0001\u0000\u0000\u0000\u12c5\u12ba\u0001\u0000\u0000\u0000\u12c5\u12c6"+
57411 		"\u0001\u0000\u0000\u0000\u12c6\u12c8\u0001\u0000\u0000\u0000\u12c7\u12b4"+
57412 		"\u0001\u0000\u0000\u0000\u12c7\u12b8\u0001\u0000\u0000\u0000\u12c8\u028f"+
57413 		"\u0001\u0000\u0000\u0000\u12c9\u12ca\u0005\u026e\u0000\u0000\u12ca\u12cb"+
57414 		"\u0005\u0018\u0000\u0000\u12cb\u12d1\u0007\u0000\u0000\u0000\u12cc\u12cd"+
57415 		"\u0005\u026d\u0000\u0000\u12cd\u12ce\u0005\u0018\u0000\u0000\u12ce\u12cf"+
57416 		"\u0005\u02d5\u0000\u0000\u12cf\u12d1\u0007G\u0000\u0000\u12d0\u12c9\u0001"+
57417 		"\u0000\u0000\u0000\u12d0\u12cc\u0001\u0000\u0000\u0000\u12d1\u0291\u0001"+
57418 		"\u0000\u0000\u0000\u12d2\u12d3\u0005\u026b\u0000\u0000\u12d3\u12d7\u0007"+
57419 		"\u0000\u0000\u0000\u12d4\u12d5\u0005\u0269\u0000\u0000\u12d5\u12d7\u0007"+
57420 		"H\u0000\u0000\u12d6\u12d2\u0001\u0000\u0000\u0000\u12d6\u12d4\u0001\u0000"+
57421 		"\u0000\u0000\u12d7\u0293\u0001\u0000\u0000\u0000\u12d8\u12d9\u0005\u0206"+
57422 		"\u0000\u0000\u12d9\u12ec\u0007\u0000\u0000\u0000\u12da\u12db\u0005\u0207"+
57423 		"\u0000\u0000\u12db\u12ec\u0007\u0000\u0000\u0000\u12dc\u12dd\u0005\u0291"+
57424 		"\u0000\u0000\u12dd\u12de\u0005\u0018\u0000\u0000\u12de\u12ec\u0005\u02d4"+
57425 		"\u0000\u0000\u12df\u12e0\u0005\u0292\u0000\u0000\u12e0\u12e1\u0005\u0018"+
57426 		"\u0000\u0000\u12e1\u12ec\u0005\u02d4\u0000\u0000\u12e2\u12e3\u0005\u0294"+
57427 		"\u0000\u0000\u12e3\u12e4\u0005\u0018\u0000\u0000\u12e4\u12ec\u0007\u0000"+
57428 		"\u0000\u0000\u12e5\u12e6\u0005\u0295\u0000\u0000\u12e6\u12e7\u0005\u0018"+
57429 		"\u0000\u0000\u12e7\u12ec\u0007\u0000\u0000\u0000\u12e8\u12e9\u0005\u0296"+
57430 		"\u0000\u0000\u12e9\u12ea\u0005\u0018\u0000\u0000\u12ea\u12ec\u0005\u02d5"+
57431 		"\u0000\u0000\u12eb\u12d8\u0001\u0000\u0000\u0000\u12eb\u12da\u0001\u0000"+
57432 		"\u0000\u0000\u12eb\u12dc\u0001\u0000\u0000\u0000\u12eb\u12df\u0001\u0000"+
57433 		"\u0000\u0000\u12eb\u12e2\u0001\u0000\u0000\u0000\u12eb\u12e5\u0001\u0000"+
57434 		"\u0000\u0000\u12eb\u12e8\u0001\u0000\u0000\u0000\u12ec\u0295\u0001\u0000"+
57435 		"\u0000\u0000\u12ed\u1301\u0005\u0268\u0000\u0000\u12ee\u12ef\u0005\u0018"+
57436 		"\u0000\u0000\u12ef\u1302\u0005b\u0000\u0000\u12f0\u12f1\u0005\u0018\u0000"+
57437 		"\u0000\u12f1\u12f3\u0005a\u0000\u0000\u12f2\u12f0\u0001\u0000\u0000\u0000"+
57438 		"\u12f2\u12f3\u0001\u0000\u0000\u0000\u12f3\u12ff\u0001\u0000\u0000\u0000"+
57439 		"\u12f4\u12f5\u0005\u001f\u0000\u0000\u12f5\u12fa\u0003\u0298\u014c\u0000"+
57440 		"\u12f6\u12f7\u0005%\u0000\u0000\u12f7\u12f9\u0003\u0298\u014c\u0000\u12f8"+
57441 		"\u12f6\u0001\u0000\u0000\u0000\u12f9\u12fc\u0001\u0000\u0000\u0000\u12fa"+
57442 		"\u12f8\u0001\u0000\u0000\u0000\u12fa\u12fb\u0001\u0000\u0000\u0000\u12fb"+
57443 		"\u12fd\u0001\u0000\u0000\u0000\u12fc\u12fa\u0001\u0000\u0000\u0000\u12fd"+
57444 		"\u12fe\u0005 \u0000\u0000\u12fe\u1300\u0001\u0000\u0000\u0000\u12ff\u12f4"+
57445 		"\u0001\u0000\u0000\u0000\u12ff\u1300\u0001\u0000\u0000\u0000\u1300\u1302"+
57446 		"\u0001\u0000\u0000\u0000\u1301\u12ee\u0001\u0000\u0000\u0000\u1301\u12f2"+
57447 		"\u0001\u0000\u0000\u0000\u1302\u0297\u0001\u0000\u0000\u0000\u1303\u1304"+
57448 		"\u0005\u0267\u0000\u0000\u1304\u1305\u0005\u0018\u0000\u0000\u1305\u1330"+
57449 		"\u0007A\u0000\u0000\u1306\u1307\u0005\u0264\u0000\u0000\u1307\u1308\u0005"+
57450 		"\u0018\u0000\u0000\u1308\u1309\u0005\u001f\u0000\u0000\u1309\u130a\u0005"+
57451 		"\u0266\u0000\u0000\u130a\u130b\u0005\u0018\u0000\u0000\u130b\u130c\u0005"+
57452 		"\u02d5\u0000\u0000\u130c\u1330\u0005 \u0000\u0000\u130d\u130e\u0005\u0263"+
57453 		"\u0000\u0000\u130e\u130f\u0005\u0018\u0000\u0000\u130f\u1330\u0005\u02d5"+
57454 		"\u0000\u0000\u1310\u1311\u0005\u0262\u0000\u0000\u1311\u1312\u0005\u0018"+
57455 		"\u0000\u0000\u1312\u1330\u0005\u02d5\u0000\u0000\u1313\u1314\u0005\u0261"+
57456 		"\u0000\u0000\u1314\u1315\u0005\u0018\u0000\u0000\u1315\u1330\u0005\u02d5"+
57457 		"\u0000\u0000\u1316\u1317\u0005\u0260\u0000\u0000\u1317\u1318\u0005\u0018"+
57458 		"\u0000\u0000\u1318\u1330\u0007I\u0000\u0000\u1319\u131a\u0005\u025f\u0000"+
57459 		"\u0000\u131a\u131b\u0005\u0018\u0000\u0000\u131b\u1330\u0007J\u0000\u0000"+
57460 		"\u131c\u131d\u0005\u025e\u0000\u0000\u131d\u131e\u0005\u0018\u0000\u0000"+
57461 		"\u131e\u1330\u0005\u02d5\u0000\u0000\u131f\u1320\u0005\u025d\u0000\u0000"+
57462 		"\u1320\u1321\u0005\u0018\u0000\u0000\u1321\u1330\u0007\u0000\u0000\u0000"+
57463 		"\u1322\u1323\u0005\u025c\u0000\u0000\u1323\u1324\u0005\u0018\u0000\u0000"+
57464 		"\u1324\u1325\u0005\u001f\u0000\u0000\u1325\u132a\u0003\u029a\u014d\u0000"+
57465 		"\u1326\u1327\u0005%\u0000\u0000\u1327\u1329\u0003\u029a\u014d\u0000\u1328"+
57466 		"\u1326\u0001\u0000\u0000\u0000\u1329\u132c\u0001\u0000\u0000\u0000\u132a"+
57467 		"\u1328\u0001\u0000\u0000\u0000\u132a\u132b\u0001\u0000\u0000\u0000\u132b"+
57468 		"\u132d\u0001\u0000\u0000\u0000\u132c\u132a\u0001\u0000\u0000\u0000\u132d"+
57469 		"\u132e\u0005 \u0000\u0000\u132e\u1330\u0001\u0000\u0000\u0000\u132f\u1303"+
57470 		"\u0001\u0000\u0000\u0000\u132f\u1306\u0001\u0000\u0000\u0000\u132f\u130d"+
57471 		"\u0001\u0000\u0000\u0000\u132f\u1310\u0001\u0000\u0000\u0000\u132f\u1313"+
57472 		"\u0001\u0000\u0000\u0000\u132f\u1316\u0001\u0000\u0000\u0000\u132f\u1319"+
57473 		"\u0001\u0000\u0000\u0000\u132f\u131c\u0001\u0000\u0000\u0000\u132f\u131f"+
57474 		"\u0001\u0000\u0000\u0000\u132f\u1322\u0001\u0000\u0000\u0000\u1330\u0299"+
57475 		"\u0001\u0000\u0000\u0000\u1331\u1332\u0005\u025a\u0000\u0000\u1332\u1333"+
57476 		"\u0005\u0018\u0000\u0000\u1333\u1334\u0005\u02d5\u0000\u0000\u1334\u133f"+
57477 		"\u0007K\u0000\u0000\u1335\u1336\u0005\u025b\u0000\u0000\u1336\u1337\u0005"+
57478 		"\u0018\u0000\u0000\u1337\u133f\u0005\u02d5\u0000\u0000\u1338\u1339\u0005"+
57479 		"\u0259\u0000\u0000\u1339\u133a\u0005\u0018\u0000\u0000\u133a\u133f\u0005"+
57480 		"\u02d5\u0000\u0000\u133b\u133c\u0005\u0258\u0000\u0000\u133c\u133d\u0005"+
57481 		"\u0018\u0000\u0000\u133d\u133f\u0005\u02d5\u0000\u0000\u133e\u1331\u0001"+
57482 		"\u0000\u0000\u0000\u133e\u1335\u0001\u0000\u0000\u0000\u133e\u1338\u0001"+
57483 		"\u0000\u0000\u0000\u133e\u133b\u0001\u0000\u0000\u0000\u133f\u029b\u0001"+
57484 		"\u0000\u0000\u0000\u1340\u1341\u0005\u0257\u0000\u0000\u1341\u1347\u0007"+
57485 		"L\u0000\u0000\u1342\u1343\u0005\u0255\u0000\u0000\u1343\u1347\u0007\u0000"+
57486 		"\u0000\u0000\u1344\u1345\u0005\u0253\u0000\u0000\u1345\u1347\u0007M\u0000"+
57487 		"\u0000\u1346\u1340\u0001\u0000\u0000\u0000\u1346\u1342\u0001\u0000\u0000"+
57488 		"\u0000\u1346\u1344\u0001\u0000\u0000\u0000\u1347\u029d\u0001\u0000\u0000"+
57489 		"\u0000\u1348\u1349\u0005\u0252\u0000\u0000\u1349\u135e\u0007\u0000\u0000"+
57490 		"\u0000\u134a\u134b\u0005\u0251\u0000\u0000\u134b\u135e\u0007\u0000\u0000"+
57491 		"\u0000\u134c\u134d\u0005\u0250\u0000\u0000\u134d\u135e\u0007\u0000\u0000"+
57492 		"\u0000\u134e\u134f\u0005\u024f\u0000\u0000\u134f\u135e\u0007\u0000\u0000"+
57493 		"\u0000\u1350\u1351\u0005\u024e\u0000\u0000\u1351\u135e\u0007\u0000\u0000"+
57494 		"\u0000\u1352\u1353\u0005\u024d\u0000\u0000\u1353\u1354\u0005\u0018\u0000"+
57495 		"\u0000\u1354\u135e\u0005\u02d5\u0000\u0000\u1355\u1356\u0005\u024c\u0000"+
57496 		"\u0000\u1356\u135e\u0007\u0000\u0000\u0000\u1357\u1358\u0005\u024b\u0000"+
57497 		"\u0000\u1358\u135e\u0007\u0000\u0000\u0000\u1359\u135a\u0005\u024a\u0000"+
57498 		"\u0000\u135a\u135e\u0007\u0000\u0000\u0000\u135b\u135c\u0005\u0249\u0000"+
57499 		"\u0000\u135c\u135e\u0007\u0000\u0000\u0000\u135d\u1348\u0001\u0000\u0000"+
57500 		"\u0000\u135d\u134a\u0001\u0000\u0000\u0000\u135d\u134c\u0001\u0000\u0000"+
57501 		"\u0000\u135d\u134e\u0001\u0000\u0000\u0000\u135d\u1350\u0001\u0000\u0000"+
57502 		"\u0000\u135d\u1352\u0001\u0000\u0000\u0000\u135d\u1355\u0001\u0000\u0000"+
57503 		"\u0000\u135d\u1357\u0001\u0000\u0000\u0000\u135d\u1359\u0001\u0000\u0000"+
57504 		"\u0000\u135d\u135b\u0001\u0000\u0000\u0000\u135e\u029f\u0001\u0000\u0000"+
57505 		"\u0000\u135f\u1360\u0005\u0248\u0000\u0000\u1360\u1367\u0007\u0000\u0000"+
57506 		"\u0000\u1361\u1362\u0005\u0247\u0000\u0000\u1362\u1367\u0007\u0000\u0000"+
57507 		"\u0000\u1363\u1364\u0005\u0246\u0000\u0000\u1364\u1365\u0005\u0018\u0000"+
57508 		"\u0000\u1365\u1367\u0007\u0000\u0000\u0000\u1366\u135f\u0001\u0000\u0000"+
57509 		"\u0000\u1366\u1361\u0001\u0000\u0000\u0000\u1366\u1363\u0001\u0000\u0000"+
57510 		"\u0000\u1367\u02a1\u0001\u0000\u0000\u0000\u1368\u136f\u0005\u0245\u0000"+
57511 		"\u0000\u1369\u136f\u0005\u0244\u0000\u0000\u136a\u136f\u0005\u0243\u0000"+
57512 		"\u0000\u136b\u136f\u0005\u0242\u0000\u0000\u136c\u136d\u0005\u0241\u0000"+
57513 		"\u0000\u136d\u136f\u0007\u0000\u0000\u0000\u136e\u1368\u0001\u0000\u0000"+
57514 		"\u0000\u136e\u1369\u0001\u0000\u0000\u0000\u136e\u136a\u0001\u0000\u0000"+
57515 		"\u0000\u136e\u136b\u0001\u0000\u0000\u0000\u136e\u136c\u0001\u0000\u0000"+
57516 		"\u0000\u136f\u02a3\u0001\u0000\u0000\u0000\u1370\u1371\u0005\u023f\u0000"+
57517 		"\u0000\u1371\u1372\u0005\u0018\u0000\u0000\u1372\u1373\u0005\u02d5\u0000"+
57518 		"\u0000\u1373\u1374\u0007N\u0000\u0000\u1374\u02a5\u0001\u0000\u0000\u0000"+
57519 		"\u1375\u1376\u0005\u007f\u0000\u0000\u1376\u1377\u0005\u0222\u0000\u0000"+
57520 		"\u1377\u1379\u0005\u02d5\u0000\u0000\u1378\u137a\u0005\u0240\u0000\u0000"+
57521 		"\u1379\u1378\u0001\u0000\u0000\u0000\u1379\u137a\u0001\u0000\u0000\u0000"+
57522 		"\u137a\u137f\u0001\u0000\u0000\u0000\u137b\u137c\u0005\u007f\u0000\u0000"+
57523 		"\u137c\u137f\u0005\u023d\u0000\u0000\u137d\u137f\u0005\u023e\u0000\u0000"+
57524 		"\u137e\u1375\u0001\u0000\u0000\u0000\u137e\u137b\u0001\u0000\u0000\u0000"+
57525 		"\u137e\u137d\u0001\u0000\u0000\u0000\u137f\u02a7\u0001\u0000\u0000\u0000"+
57526 		"\u1380\u1381\u0005\u001f\u0000\u0000\u1381\u1386\u0003D\"\u0000\u1382"+
57527 		"\u1383\u0005%\u0000\u0000\u1383\u1385\u0003D\"\u0000\u1384\u1382\u0001"+
57528 		"\u0000\u0000\u0000\u1385\u1388\u0001\u0000\u0000\u0000\u1386\u1384\u0001"+
57529 		"\u0000\u0000\u0000\u1386\u1387\u0001\u0000\u0000\u0000\u1387\u1389\u0001"+
57530 		"\u0000\u0000\u0000\u1388\u1386\u0001\u0000\u0000\u0000\u1389\u138a\u0005"+
57531 		" \u0000\u0000\u138a\u02a9\u0001\u0000\u0000\u0000\u138b\u138c\u0005\u001f"+
57532 		"\u0000\u0000\u138c\u1391\u0003\u02ac\u0156\u0000\u138d\u138e\u0005%\u0000"+
57533 		"\u0000\u138e\u1390\u0003\u02ac\u0156\u0000\u138f\u138d\u0001\u0000\u0000"+
57534 		"\u0000\u1390\u1393\u0001\u0000\u0000\u0000\u1391\u138f\u0001\u0000\u0000"+
57535 		"\u0000\u1391\u1392\u0001\u0000\u0000\u0000\u1392\u1394\u0001\u0000\u0000"+
57536 		"\u0000\u1393\u1391\u0001\u0000\u0000\u0000\u1394\u1395\u0005 \u0000\u0000"+
57537 		"\u1395\u02ab\u0001\u0000\u0000\u0000\u1396\u1397\u00059\u0000\u0000\u1397"+
57538 		"\u1398\u0005\u0175\u0000\u0000\u1398\u139d\u0003D\"\u0000\u1399\u139a"+
57539 		"\u00054\u0000\u0000\u139a\u139b\u0005\u0175\u0000\u0000\u139b\u139d\u0003"+
57540 		"D\"\u0000\u139c\u1396\u0001\u0000\u0000\u0000\u139c\u1399\u0001\u0000"+
57541 		"\u0000\u0000\u139d\u02ad\u0001\u0000\u0000\u0000\u139e\u13a6\u00034\u001a"+
57542 		"\u0000\u139f\u13a0\u0005\u029b\u0000\u0000\u13a0\u13a6\u0003\u00e6s\u0000"+
57543 		"\u13a1\u13a2\u00034\u001a\u0000\u13a2\u13a3\u0005\u029b\u0000\u0000\u13a3"+
57544 		"\u13a4\u0003\u00e6s\u0000\u13a4\u13a6\u0001\u0000\u0000\u0000\u13a5\u139e"+
57545 		"\u0001\u0000\u0000\u0000\u13a5\u139f\u0001\u0000\u0000\u0000\u13a5\u13a1"+
57546 		"\u0001\u0000\u0000\u0000\u13a6\u02af\u0001\u0000\u0000\u0000\u13a7\u13ad"+
57547 		"\u0003\u0104\u0082\u0000\u13a8\u13ad\u0003\u0110\u0088\u0000\u13a9\u13ad"+
57548 		"\u0003\u0334\u019a\u0000\u13aa\u13ad\u0003\u0346\u01a3\u0000\u13ab\u13ad"+
57549 		"\u0003\u034c\u01a6\u0000\u13ac\u13a7\u0001\u0000\u0000\u0000\u13ac\u13a8"+
57550 		"\u0001\u0000\u0000\u0000\u13ac\u13a9\u0001\u0000\u0000\u0000\u13ac\u13aa"+
57551 		"\u0001\u0000\u0000\u0000\u13ac\u13ab\u0001\u0000\u0000\u0000\u13ad\u02b1"+
57552 		"\u0001\u0000\u0000\u0000\u13ae\u13b1\u0003\u02b4\u015a\u0000\u13af\u13b1"+
57553 		"\u0003\u02b6\u015b\u0000\u13b0\u13ae\u0001\u0000\u0000\u0000\u13b0\u13af"+
57554 		"\u0001\u0000\u0000\u0000\u13b1\u02b3\u0001\u0000\u0000\u0000\u13b2\u13b3"+
57555 		"\u00052\u0000\u0000\u13b3\u13b4\u0005;\u0000\u0000\u13b4\u13b6\u0003@"+
57556 		" \u0000\u13b5\u13b7\u0003P(\u0000\u13b6\u13b5\u0001\u0000\u0000\u0000"+
57557 		"\u13b6\u13b7\u0001\u0000\u0000\u0000\u13b7\u13b8\u0001\u0000\u0000\u0000"+
57558 		"\u13b8\u13b9\u0003\u02b8\u015c\u0000\u13b9\u13ba\u0005`\u0000\u0000\u13ba"+
57559 		"\u13bb\u0003\u02de\u016f\u0000\u13bb\u13bc\u0003\u02ba\u015d\u0000\u13bc"+
57560 		"\u02b5\u0001\u0000\u0000\u0000\u13bd\u13be\u00052\u0000\u0000\u13be\u13bf"+
57561 		"\u0005\u0181\u0000\u0000\u13bf\u13c0\u0005;\u0000\u0000\u13c0\u13c1\u0003"+
57562 		"@ \u0000\u13c1\u13c2\u0005\u00d4\u0000\u0000\u13c2\u13c3\u0005\u001f\u0000"+
57563 		"\u0000\u13c3\u13c4\u0003\u001c\u000e\u0000\u13c4\u13cb\u0005 \u0000\u0000"+
57564 		"\u13c5\u13c6\u0005M\u0000\u0000\u13c6\u13c7\u0005\u001f\u0000\u0000\u13c7"+
57565 		"\u13c8\u0005\u029f\u0000\u0000\u13c8\u13c9\u0005\u0018\u0000\u0000\u13c9"+
57566 		"\u13ca\u0005\u02d6\u0000\u0000\u13ca\u13cc\u0005 \u0000\u0000\u13cb\u13c5"+
57567 		"\u0001\u0000\u0000\u0000\u13cb\u13cc\u0001\u0000\u0000\u0000\u13cc\u13cd"+
57568 		"\u0001\u0000\u0000\u0000\u13cd\u13ce\u0005`\u0000\u0000\u13ce\u13cf\u0003"+
57569 		"\u02de\u016f\u0000\u13cf\u02b7\u0001\u0000\u0000\u0000\u13d0\u13d1\u0005"+
57570 		"M\u0000\u0000\u13d1\u13d2\u0005\u001f\u0000\u0000\u13d2\u13dc\u0003\u01b8"+
57571 		"\u00dc\u0000\u13d3\u13d4\u0005%\u0000\u0000\u13d4\u13d9\u0003\u01ac\u00d6"+
57572 		"\u0000\u13d5\u13d6\u0005%\u0000\u0000\u13d6\u13d8\u0003\u01ac\u00d6\u0000"+
57573 		"\u13d7\u13d5\u0001\u0000\u0000\u0000\u13d8\u13db\u0001\u0000\u0000\u0000"+
57574 		"\u13d9\u13d7\u0001\u0000\u0000\u0000\u13d9\u13da\u0001\u0000\u0000\u0000"+
57575 		"\u13da\u13dd\u0001\u0000\u0000\u0000\u13db\u13d9\u0001\u0000\u0000\u0000"+
57576 		"\u13dc\u13d3\u0001\u0000\u0000\u0000\u13dc\u13dd\u0001\u0000\u0000\u0000"+
57577 		"\u13dd\u13de\u0001\u0000\u0000\u0000\u13de\u13df\u0005 \u0000\u0000\u13df"+
57578 		"\u02b9\u0001\u0000\u0000\u0000\u13e0\u13e1\u0005\u0102\u0000\u0000\u13e1"+
57579 		"\u13e2\u0005\u001f\u0000\u0000\u13e2\u13e7\u0003\u031c\u018e\u0000\u13e3"+
57580 		"\u13e4\u0005%\u0000\u0000\u13e4\u13e6\u0003\u031c\u018e\u0000\u13e5\u13e3"+
57581 		"\u0001\u0000\u0000\u0000\u13e6\u13e9\u0001\u0000\u0000\u0000\u13e7\u13e5"+
57582 		"\u0001\u0000\u0000\u0000\u13e7\u13e8\u0001\u0000\u0000\u0000\u13e8\u13ea"+
57583 		"\u0001\u0000\u0000\u0000\u13e9\u13e7\u0001\u0000\u0000\u0000\u13ea\u13eb"+
57584 		"\u0005 \u0000\u0000\u13eb\u13ed\u0001\u0000\u0000\u0000\u13ec\u13e0\u0001"+
57585 		"\u0000\u0000\u0000\u13ec\u13ed\u0001\u0000\u0000\u0000\u13ed\u02bb\u0001"+
57586 		"\u0000\u0000\u0000\u13ee\u13f0\u0003\u030a\u0185\u0000\u13ef\u13ee\u0001"+
57587 		"\u0000\u0000\u0000\u13ef\u13f0\u0001\u0000\u0000\u0000\u13f0\u13f1\u0001"+
57588 		"\u0000\u0000\u0000\u13f1\u13f3\u0005/\u0000\u0000\u13f2\u13f4\u0003\u02ea"+
57589 		"\u0175\u0000\u13f3\u13f2\u0001\u0000\u0000\u0000\u13f3\u13f4\u0001\u0000"+
57590 		"\u0000\u0000\u13f4\u13f6\u0001\u0000\u0000\u0000\u13f5\u13f7\u0005K\u0000"+
57591 		"\u0000\u13f6\u13f5\u0001\u0000\u0000\u0000\u13f6\u13f7\u0001\u0000\u0000"+
57592 		"\u0000\u13f7\u13f8\u0001\u0000\u0000\u0000\u13f8\u13fd\u0003@ \u0000\u13f9"+
57593 		"\u13fb\u0005`\u0000\u0000\u13fa\u13f9\u0001\u0000\u0000\u0000\u13fa\u13fb"+
57594 		"\u0001\u0000\u0000\u0000\u13fb\u13fc\u0001\u0000\u0000\u0000\u13fc\u13fe"+
57595 		"\u0003\\.\u0000\u13fd\u13fa\u0001\u0000\u0000\u0000\u13fd\u13fe\u0001"+
57596 		"\u0000\u0000\u0000\u13fe\u1400\u0001\u0000\u0000\u0000\u13ff\u1401\u0003"+
57597 		"\u02c6\u0163\u0000\u1400\u13ff\u0001\u0000\u0000\u0000\u1400\u1401\u0001"+
57598 		"\u0000\u0000\u0000\u1401\u1406\u0001\u0000\u0000\u0000\u1402\u1407\u0003"+
57599 		"\u02be\u015f\u0000\u1403\u1407\u0003\u02c0\u0160\u0000\u1404\u1407\u0003"+
57600 		"\u02c2\u0161\u0000\u1405\u1407\u0003\u02c4\u0162\u0000\u1406\u1402\u0001"+
57601 		"\u0000\u0000\u0000\u1406\u1403\u0001\u0000\u0000\u0000\u1406\u1404\u0001"+
57602 		"\u0000\u0000\u0000\u1406\u1405\u0001\u0000\u0000\u0000\u1407\u02bd\u0001"+
57603 		"\u0000\u0000\u0000\u1408\u140a\u0003P(\u0000\u1409\u1408\u0001\u0000\u0000"+
57604 		"\u0000\u1409\u140a\u0001\u0000\u0000\u0000\u140a\u140c\u0001\u0000\u0000"+
57605 		"\u0000\u140b\u140d\u0003\u0310\u0188\u0000\u140c\u140b\u0001\u0000\u0000"+
57606 		"\u0000\u140c\u140d\u0001\u0000\u0000\u0000\u140d\u140e\u0001\u0000\u0000"+
57607 		"\u0000\u140e\u140f\u0005\u009a\u0000\u0000\u140f\u1410\u0005L\u0000\u0000"+
57608 		"\u1410\u02bf\u0001\u0000\u0000\u0000\u1411\u1413\u0003P(\u0000\u1412\u1411"+
57609 		"\u0001\u0000\u0000\u0000\u1412\u1413\u0001\u0000\u0000\u0000\u1413\u1415"+
57610 		"\u0001\u0000\u0000\u0000\u1414\u1416\u0003\u0310\u0188\u0000\u1415\u1414"+
57611 		"\u0001\u0000\u0000\u0000\u1415\u1416\u0001\u0000\u0000\u0000\u1416\u1417"+
57612 		"\u0001\u0000\u0000\u0000\u1417\u1418\u0005L\u0000\u0000\u1418\u141d\u0003"+
57613 		"\u02d0\u0168\u0000\u1419\u141a\u0005%\u0000\u0000\u141a\u141c\u0003\u02d0"+
57614 		"\u0168\u0000\u141b\u1419\u0001\u0000\u0000\u0000\u141c\u141f\u0001\u0000"+
57615 		"\u0000\u0000\u141d\u141b\u0001\u0000\u0000\u0000\u141d\u141e\u0001\u0000"+
57616 		"\u0000\u0000\u141e\u02c1\u0001\u0000\u0000\u0000\u141f\u141d\u0001\u0000"+
57617 		"\u0000\u0000\u1420\u1422\u0003P(\u0000\u1421\u1420\u0001\u0000\u0000\u0000"+
57618 		"\u1421\u1422\u0001\u0000\u0000\u0000\u1422\u1424\u0001\u0000\u0000\u0000"+
57619 		"\u1423\u1425\u0003\u0310\u0188\u0000\u1424\u1423\u0001\u0000\u0000\u0000"+
57620 		"\u1424\u1425\u0001\u0000\u0000\u0000\u1425\u1426\u0001\u0000\u0000\u0000"+
57621 		"\u1426\u1427\u0003\u02de\u016f\u0000\u1427\u02c3\u0001\u0000\u0000\u0000"+
57622 		"\u1428\u142a\u0003P(\u0000\u1429\u1428\u0001\u0000\u0000\u0000\u1429\u142a"+
57623 		"\u0001\u0000\u0000\u0000\u142a\u142b\u0001\u0000\u0000\u0000\u142b\u142c"+
57624 		"\u0003\u02c8\u0164\u0000\u142c\u02c5\u0001\u0000\u0000\u0000\u142d\u142f"+
57625 		"\u0005M\u0000\u0000\u142e\u142d\u0001\u0000\u0000\u0000\u142e\u142f\u0001"+
57626 		"\u0000\u0000\u0000\u142f\u1430\u0001\u0000\u0000\u0000\u1430\u1432\u0005"+
57627 		"\u001f\u0000\u0000\u1431\u1433\u0003\u00fc~\u0000\u1432\u1431\u0001\u0000"+
57628 		"\u0000\u0000\u1433\u1434\u0001\u0000\u0000\u0000\u1434\u1432\u0001\u0000"+
57629 		"\u0000\u0000\u1434\u1435\u0001\u0000\u0000\u0000\u1435\u1436\u0001\u0000"+
57630 		"\u0000\u0000\u1436\u1437\u0005 \u0000\u0000\u1437\u02c7\u0001\u0000\u0000"+
57631 		"\u0000\u1438\u1439\u0007 \u0000\u0000\u1439\u1442\u00038\u001c\u0000\u143a"+
57632 		"\u143f\u0003b1\u0000\u143b\u143c\u0005%\u0000\u0000\u143c\u143e\u0003"+
57633 		"b1\u0000\u143d\u143b\u0001\u0000\u0000\u0000\u143e\u1441\u0001\u0000\u0000"+
57634 		"\u0000\u143f\u143d\u0001\u0000\u0000\u0000\u143f\u1440\u0001\u0000\u0000"+
57635 		"\u0000\u1440\u1443\u0001\u0000\u0000\u0000\u1441\u143f\u0001\u0000\u0000"+
57636 		"\u0000\u1442\u143a\u0001\u0000\u0000\u0000\u1442\u1443\u0001\u0000\u0000"+
57637 		"\u0000\u1443\u02c9\u0001\u0000\u0000\u0000\u1444\u1446\u0003\u030a\u0185"+
57638 		"\u0000\u1445\u1444\u0001\u0000\u0000\u0000\u1445\u1446\u0001\u0000\u0000"+
57639 		"\u0000\u1446\u1447\u0001\u0000\u0000\u0000\u1447\u1449\u00050\u0000\u0000"+
57640 		"\u1448\u144a\u0003\u02ea\u0175\u0000\u1449\u1448\u0001\u0000\u0000\u0000"+
57641 		"\u1449\u144a\u0001\u0000\u0000\u0000\u144a\u144b\u0001\u0000\u0000\u0000"+
57642 		"\u144b\u144d\u0003\u02f6\u017b\u0000\u144c\u144e\u0003\u02c6\u0163\u0000"+
57643 		"\u144d\u144c\u0001\u0000\u0000\u0000\u144d\u144e\u0001\u0000\u0000\u0000"+
57644 		"\u144e\u144f\u0001\u0000\u0000\u0000\u144f\u1451\u0003\u02ce\u0167\u0000"+
57645 		"\u1450\u1452\u0003\u0310\u0188\u0000\u1451\u1450\u0001\u0000\u0000\u0000"+
57646 		"\u1451\u1452\u0001\u0000\u0000\u0000\u1452\u1454\u0001\u0000\u0000\u0000"+
57647 		"\u1453\u1455\u0003\u0300\u0180\u0000\u1454\u1453\u0001\u0000\u0000\u0000"+
57648 		"\u1454\u1455\u0001\u0000\u0000\u0000\u1455\u1457\u0001\u0000\u0000\u0000"+
57649 		"\u1456\u1458\u0003\u02d6\u016b\u0000\u1457\u1456\u0001\u0000\u0000\u0000"+
57650 		"\u1457\u1458\u0001\u0000\u0000\u0000\u1458\u02cb\u0001\u0000\u0000\u0000"+
57651 		"\u1459\u145f\u0003H$\u0000\u145a\u145c\u0007O\u0000\u0000\u145b\u145a"+
57652 		"\u0001\u0000\u0000\u0000\u145b\u145c\u0001\u0000\u0000\u0000\u145c\u145d"+
57653 		"\u0001\u0000\u0000\u0000\u145d\u1460\u0005\u0018\u0000\u0000\u145e\u1460"+
57654 		"\u0005\u0014\u0000\u0000\u145f\u145b\u0001\u0000\u0000\u0000\u145f\u145e"+
57655 		"\u0001\u0000\u0000\u0000\u1460\u1461\u0001\u0000\u0000\u0000\u1461\u1462"+
57656 		"\u0003\u02d2\u0169\u0000\u1462\u02cd\u0001\u0000\u0000\u0000\u1463\u1464"+
57657 		"\u0005:\u0000\u0000\u1464\u1469\u0003\u02cc\u0166\u0000\u1465\u1466\u0005"+
57658 		"%\u0000\u0000\u1466\u1468\u0003\u02cc\u0166\u0000\u1467\u1465\u0001\u0000"+
57659 		"\u0000\u0000\u1468\u146b\u0001\u0000\u0000\u0000\u1469\u1467\u0001\u0000"+
57660 		"\u0000\u0000\u1469\u146a\u0001\u0000\u0000\u0000\u146a\u146d\u0001\u0000"+
57661 		"\u0000\u0000\u146b\u1469\u0001\u0000\u0000\u0000\u146c\u146e\u0003\u02f4"+
57662 		"\u017a\u0000\u146d\u146c\u0001\u0000\u0000\u0000\u146d\u146e\u0001\u0000"+
57663 		"\u0000\u0000\u146e\u02cf\u0001\u0000\u0000\u0000\u146f\u1470\u0005\u001f"+
57664 		"\u0000\u0000\u1470\u1475\u0003\u02d2\u0169\u0000\u1471\u1472\u0005%\u0000"+
57665 		"\u0000\u1472\u1474\u0003\u02d2\u0169\u0000\u1473\u1471\u0001\u0000\u0000"+
57666 		"\u0000\u1474\u1477\u0001\u0000\u0000\u0000\u1475\u1473\u0001\u0000\u0000"+
57667 		"\u0000\u1475\u1476\u0001\u0000\u0000\u0000\u1476\u1478\u0001\u0000\u0000"+
57668 		"\u0000\u1477\u1475\u0001\u0000\u0000\u0000\u1478\u1479\u0005 \u0000\u0000"+
57669 		"\u1479\u147e\u0001\u0000\u0000\u0000\u147a\u147e\u0003\u02d2\u0169\u0000"+
57670 		"\u147b\u147c\u0005\u001f\u0000\u0000\u147c\u147e\u0005 \u0000\u0000\u147d"+
57671 		"\u146f\u0001\u0000\u0000\u0000\u147d\u147a\u0001\u0000\u0000\u0000\u147d"+
57672 		"\u147b\u0001\u0000\u0000\u0000\u147e\u02d1\u0001\u0000\u0000\u0000\u147f"+
57673 		"\u1482\u0003b1\u0000\u1480\u1482\u0005\u009a\u0000\u0000\u1481\u147f\u0001"+
57674 		"\u0000\u0000\u0000\u1481\u1480\u0001\u0000\u0000\u0000\u1482\u02d3\u0001"+
57675 		"\u0000\u0000\u0000\u1483\u1485\u0003\u030a\u0185\u0000\u1484\u1483\u0001"+
57676 		"\u0000\u0000\u0000\u1484\u1485\u0001\u0000\u0000\u0000\u1485\u1486\u0001"+
57677 		"\u0000\u0000\u0000\u1486\u1488\u00051\u0000\u0000\u1487\u1489\u0003\u02ea"+
57678 		"\u0175\u0000\u1488\u1487\u0001\u0000\u0000\u0000\u1488\u1489\u0001\u0000"+
57679 		"\u0000\u0000\u1489\u148c\u0001\u0000\u0000\u0000\u148a\u148d\u0003\u02d8"+
57680 		"\u016c\u0000\u148b\u148d\u0003\u02da\u016d\u0000\u148c\u148a\u0001\u0000"+
57681 		"\u0000\u0000\u148c\u148b\u0001\u0000\u0000\u0000\u148d\u148f\u0001\u0000"+
57682 		"\u0000\u0000\u148e\u1490\u0003\u0310\u0188\u0000\u148f\u148e\u0001\u0000"+
57683 		"\u0000\u0000\u148f\u1490\u0001\u0000\u0000\u0000\u1490\u1492\u0001\u0000"+
57684 		"\u0000\u0000\u1491\u1493\u0003\u0300\u0180\u0000\u1492\u1491\u0001\u0000"+
57685 		"\u0000\u0000\u1492\u1493\u0001\u0000\u0000\u0000\u1493\u1495\u0001\u0000"+
57686 		"\u0000\u0000\u1494\u1496\u0003\u02d6\u016b\u0000\u1495\u1494\u0001\u0000"+
57687 		"\u0000\u0000\u1495\u1496\u0001\u0000\u0000\u0000\u1496\u02d5\u0001\u0000"+
57688 		"\u0000\u0000\u1497\u1498\u0005\u0102\u0000\u0000\u1498\u1499\u0003\u031c"+
57689 		"\u018e\u0000\u1499\u02d7\u0001\u0000\u0000\u0000\u149a\u149c\u0005U\u0000"+
57690 		"\u0000\u149b\u149a\u0001\u0000\u0000\u0000\u149b\u149c\u0001\u0000\u0000"+
57691 		"\u0000\u149c\u149e\u0001\u0000\u0000\u0000\u149d\u149f\u0005\u001f\u0000"+
57692 		"\u0000\u149e\u149d\u0001\u0000\u0000\u0000\u149e\u149f\u0001\u0000\u0000"+
57693 		"\u0000\u149f\u14a0\u0001\u0000\u0000\u0000\u14a0\u14a2\u0003@ \u0000\u14a1"+
57694 		"\u14a3\u0005 \u0000\u0000\u14a2\u14a1\u0001\u0000\u0000\u0000\u14a2\u14a3"+
57695 		"\u0001\u0000\u0000\u0000\u14a3\u14a8\u0001\u0000\u0000\u0000\u14a4\u14a6"+
57696 		"\u0005`\u0000\u0000\u14a5\u14a4\u0001\u0000\u0000\u0000\u14a5\u14a6\u0001"+
57697 		"\u0000\u0000\u0000\u14a6\u14a7\u0001\u0000\u0000\u0000\u14a7\u14a9\u0003"+
57698 		"\\.\u0000\u14a8\u14a5\u0001\u0000\u0000\u0000\u14a8\u14a9\u0001\u0000"+
57699 		"\u0000\u0000\u14a9\u02d9\u0001\u0000\u0000\u0000\u14aa\u14ab\u0003\u02dc"+
57700 		"\u016e\u0000\u14ab\u14ac\u0005U\u0000\u0000\u14ac\u14ad\u0003\u02f6\u017b"+
57701 		"\u0000\u14ad\u14b4\u0001\u0000\u0000\u0000\u14ae\u14af\u0005U\u0000\u0000"+
57702 		"\u14af\u14b0\u0003\u02dc\u016e\u0000\u14b0\u14b1\u0005^\u0000\u0000\u14b1"+
57703 		"\u14b2\u0003\u02f6\u017b\u0000\u14b2\u14b4\u0001\u0000\u0000\u0000\u14b3"+
57704 		"\u14aa\u0001\u0000\u0000\u0000\u14b3\u14ae\u0001\u0000\u0000\u0000\u14b4"+
57705 		"\u02db\u0001\u0000\u0000\u0000\u14b5\u14b7\u0003@ \u0000\u14b6\u14b8\u0005"+
57706 		"\u0015\u0000\u0000\u14b7\u14b6\u0001\u0000\u0000\u0000\u14b7\u14b8\u0001"+
57707 		"\u0000\u0000\u0000\u14b8\u14c0\u0001\u0000\u0000\u0000\u14b9\u14ba\u0005"+
57708 		"%\u0000\u0000\u14ba\u14bc\u0003@ \u0000\u14bb\u14bd\u0005\u0015\u0000"+
57709 		"\u0000\u14bc\u14bb\u0001\u0000\u0000\u0000\u14bc\u14bd\u0001\u0000\u0000"+
57710 		"\u0000\u14bd\u14bf\u0001\u0000\u0000\u0000\u14be\u14b9\u0001\u0000\u0000"+
57711 		"\u0000\u14bf\u14c2\u0001\u0000\u0000\u0000\u14c0\u14be\u0001\u0000\u0000"+
57712 		"\u0000\u14c0\u14c1\u0001\u0000\u0000\u0000\u14c1\u02dd\u0001\u0000\u0000"+
57713 		"\u0000\u14c2\u14c0\u0001\u0000\u0000\u0000\u14c3\u14c4\u0003\u02e0\u0170"+
57714 		"\u0000\u14c4\u02df\u0001\u0000\u0000\u0000\u14c5\u14d1\u0003\u02e2\u0171"+
57715 		"\u0000\u14c6\u14c8\u0005N\u0000\u0000\u14c7\u14c9\u0005r\u0000\u0000\u14c8"+
57716 		"\u14c7\u0001\u0000\u0000\u0000\u14c8\u14c9\u0001\u0000\u0000\u0000\u14c9"+
57717 		"\u14cd\u0001\u0000\u0000\u0000\u14ca\u14cd\u0005\u00bc\u0000\u0000\u14cb"+
57718 		"\u14cd\u0005\u00bd\u0000\u0000\u14cc\u14c6\u0001\u0000\u0000\u0000\u14cc"+
57719 		"\u14ca\u0001\u0000\u0000\u0000\u14cc\u14cb\u0001\u0000\u0000\u0000\u14cd"+
57720 		"\u14ce\u0001\u0000\u0000\u0000\u14ce\u14d0\u0003\u02e2\u0171\u0000\u14cf"+
57721 		"\u14cc\u0001\u0000\u0000\u0000\u14d0\u14d3\u0001\u0000\u0000\u0000\u14d1"+
57722 		"\u14cf\u0001\u0000\u0000\u0000\u14d1\u14d2\u0001\u0000\u0000\u0000\u14d2"+
57723 		"\u02e1\u0001\u0000\u0000\u0000\u14d3\u14d1\u0001\u0000\u0000\u0000\u14d4"+
57724 		"\u14d6\u0003\u0328\u0194\u0000\u14d5\u14d4\u0001\u0000\u0000\u0000\u14d5"+
57725 		"\u14d6\u0001\u0000\u0000\u0000\u14d6\u14d7\u0001\u0000\u0000\u0000\u14d7"+
57726 		"\u14d9\u0005.\u0000\u0000\u14d8\u14da\u0003\u02e4\u0172\u0000\u14d9\u14d8"+
57727 		"\u0001\u0000\u0000\u0000\u14d9\u14da\u0001\u0000\u0000\u0000\u14da\u14db"+
57728 		"\u0001\u0000\u0000\u0000\u14db\u14dd\u0003\u02e6\u0173\u0000\u14dc\u14de"+
57729 		"\u0003\u02f2\u0179\u0000\u14dd\u14dc\u0001\u0000\u0000\u0000\u14dd\u14de"+
57730 		"\u0001\u0000\u0000\u0000\u14de\u14e6\u0001\u0000\u0000\u0000\u14df\u14e1"+
57731 		"\u0003\u02f4\u017a\u0000\u14e0\u14e2\u0003\u0308\u0184\u0000\u14e1\u14e0"+
57732 		"\u0001\u0000\u0000\u0000\u14e1\u14e2\u0001\u0000\u0000\u0000\u14e2\u14e4"+
57733 		"\u0001\u0000\u0000\u0000\u14e3\u14e5\u0003\u02c6\u0163\u0000\u14e4\u14e3"+
57734 		"\u0001\u0000\u0000\u0000\u14e4\u14e5\u0001\u0000\u0000\u0000\u14e5\u14e7"+
57735 		"\u0001\u0000\u0000\u0000\u14e6\u14df\u0001\u0000\u0000\u0000\u14e6\u14e7"+
57736 		"\u0001\u0000\u0000\u0000\u14e7\u14e9\u0001\u0000\u0000\u0000\u14e8\u14ea"+
57737 		"\u0003\u0300\u0180\u0000\u14e9\u14e8\u0001\u0000\u0000\u0000\u14e9\u14ea"+
57738 		"\u0001\u0000\u0000\u0000\u14ea\u14ec\u0001\u0000\u0000\u0000\u14eb\u14ed"+
57739 		"\u0003\u0302\u0181\u0000\u14ec\u14eb\u0001\u0000\u0000\u0000\u14ec\u14ed"+
57740 		"\u0001\u0000\u0000\u0000\u14ed\u14ef\u0001\u0000\u0000\u0000\u14ee\u14f0"+
57741 		"\u0003\u0304\u0182\u0000\u14ef\u14ee\u0001\u0000\u0000\u0000\u14ef\u14f0"+
57742 		"\u0001\u0000\u0000\u0000\u14f0\u14f2\u0001\u0000\u0000\u0000\u14f1\u14f3"+
57743 		"\u0003\u00aaU\u0000\u14f2\u14f1\u0001\u0000\u0000\u0000\u14f2\u14f3\u0001"+
57744 		"\u0000\u0000\u0000\u14f3\u14f5\u0001\u0000\u0000\u0000\u14f4\u14f6\u0003"+
57745 		"\u0320\u0190\u0000\u14f5\u14f4\u0001\u0000\u0000\u0000\u14f5\u14f6\u0001"+
57746 		"\u0000\u0000\u0000\u14f6\u02e3\u0001\u0000\u0000\u0000\u14f7\u14f8\u0007"+
57747 		"P\u0000\u0000\u14f8\u02e5\u0001\u0000\u0000\u0000\u14f9\u14ff\u0003\u02e8"+
57748 		"\u0174\u0000\u14fa\u14fc\u0003\u02ea\u0175\u0000\u14fb\u14fd\u0003\u02e8"+
57749 		"\u0174\u0000\u14fc\u14fb\u0001\u0000\u0000\u0000\u14fc\u14fd\u0001\u0000"+
57750 		"\u0000\u0000\u14fd\u14ff\u0001\u0000\u0000\u0000\u14fe\u14f9\u0001\u0000"+
57751 		"\u0000\u0000\u14fe\u14fa\u0001\u0000\u0000\u0000\u14ff\u1504\u0001\u0000"+
57752 		"\u0000\u0000\u1500\u1501\u0005%\u0000\u0000\u1501\u1503\u0003\u02e8\u0174"+
57753 		"\u0000\u1502\u1500\u0001\u0000\u0000\u0000\u1503\u1506\u0001\u0000\u0000"+
57754 		"\u0000\u1504\u1502\u0001\u0000\u0000\u0000\u1504\u1505\u0001\u0000\u0000"+
57755 		"\u0000\u1505\u02e7\u0001\u0000\u0000\u0000\u1506\u1504\u0001\u0000\u0000"+
57756 		"\u0000\u1507\u151d\u0003\u02f0\u0178\u0000\u1508\u151d\u0003\u02ee\u0177"+
57757 		"\u0000\u1509\u150a\u0003\\.\u0000\u150a\u150b\u0005\u0018\u0000\u0000"+
57758 		"\u150b\u150d\u0001\u0000\u0000\u0000\u150c\u1509\u0001\u0000\u0000\u0000"+
57759 		"\u150c\u150d\u0001\u0000\u0000\u0000\u150d\u1510\u0001\u0000\u0000\u0000"+
57760 		"\u150e\u1511\u0003H$\u0000\u150f\u1511\u0003b1\u0000\u1510\u150e\u0001"+
57761 		"\u0000\u0000\u0000\u1510\u150f\u0001\u0000\u0000\u0000\u1511\u151d\u0001"+
57762 		"\u0000\u0000\u0000\u1512\u1515\u0003H$\u0000\u1513\u1515\u0003b1\u0000"+
57763 		"\u1514\u1512\u0001\u0000\u0000\u0000\u1514\u1513\u0001\u0000\u0000\u0000"+
57764 		"\u1515\u151a\u0001\u0000\u0000\u0000\u1516\u1518\u0005`\u0000\u0000\u1517"+
57765 		"\u1516\u0001\u0000\u0000\u0000\u1517\u1518\u0001\u0000\u0000\u0000\u1518"+
57766 		"\u1519\u0001\u0000\u0000\u0000\u1519\u151b\u0003\\.\u0000\u151a\u1517"+
57767 		"\u0001\u0000\u0000\u0000\u151a\u151b\u0001\u0000\u0000\u0000\u151b\u151d"+
57768 		"\u0001\u0000\u0000\u0000\u151c\u1507\u0001\u0000\u0000\u0000\u151c\u1508"+
57769 		"\u0001\u0000\u0000\u0000\u151c\u150c\u0001\u0000\u0000\u0000\u151c\u1514"+
57770 		"\u0001\u0000\u0000\u0000\u151d\u02e9\u0001\u0000\u0000\u0000\u151e\u1520"+
57771 		"\u0005\u00f8\u0000\u0000\u151f\u1521\u0005\u001f\u0000\u0000\u1520\u151f"+
57772 		"\u0001\u0000\u0000\u0000\u1520\u1521\u0001\u0000\u0000\u0000\u1521\u1522"+
57773 		"\u0001\u0000\u0000\u0000\u1522\u1524\u0003\u02ec\u0176\u0000\u1523\u1525"+
57774 		"\u0005 \u0000\u0000\u1524\u1523\u0001\u0000\u0000\u0000\u1524\u1525\u0001"+
57775 		"\u0000\u0000\u0000\u1525\u1527\u0001\u0000\u0000\u0000\u1526\u1528\u0005"+
57776 		"\u00ba\u0000\u0000\u1527\u1526\u0001\u0000\u0000\u0000\u1527\u1528\u0001"+
57777 		"\u0000\u0000\u0000\u1528\u152b\u0001\u0000\u0000\u0000\u1529\u152a\u0005"+
57778 		"M\u0000\u0000\u152a\u152c\u0005\u00bb\u0000\u0000\u152b\u1529\u0001\u0000"+
57779 		"\u0000\u0000\u152b\u152c\u0001\u0000\u0000\u0000\u152c\u153a\u0001\u0000"+
57780 		"\u0000\u0000\u152d\u152e\u0005\u01be\u0000\u0000\u152e\u152f\u0005\u001f"+
57781 		"\u0000\u0000\u152f\u1530\u0005 \u0000\u0000\u1530\u1531\u0005\u0132\u0000"+
57782 		"\u0000\u1531\u1532\u0005\u001f\u0000\u0000\u1532\u1533\u0003\u00aaU\u0000"+
57783 		"\u1533\u1538\u0005 \u0000\u0000\u1534\u1536\u0005`\u0000\u0000\u1535\u1534"+
57784 		"\u0001\u0000\u0000\u0000\u1535\u1536\u0001\u0000\u0000\u0000\u1536\u1537"+
57785 		"\u0001\u0000\u0000\u0000\u1537\u1539\u0003\\.\u0000\u1538\u1535\u0001"+
57786 		"\u0000\u0000\u0000\u1538\u1539\u0001\u0000\u0000\u0000\u1539\u153b\u0001"+
57787 		"\u0000\u0000\u0000\u153a\u152d\u0001\u0000\u0000\u0000\u153a\u153b\u0001"+
57788 		"\u0000\u0000\u0000\u153b\u02eb\u0001\u0000\u0000\u0000\u153c\u153f\u0003"+
57789 		"\u001e\u000f\u0000\u153d\u153f\u0003\u0018\f\u0000\u153e\u153c\u0001\u0000"+
57790 		"\u0000\u0000\u153e\u153d\u0001\u0000\u0000\u0000\u153f\u02ed\u0001\u0000"+
57791 		"\u0000\u0000\u1540\u1541\u0005\u0011\u0000\u0000\u1541\u02ef\u0001\u0000"+
57792 		"\u0000\u0000\u1542\u1543\u0003*\u0015\u0000\u1543\u1544\u0005\u0015\u0000"+
57793 		"\u0000\u1544\u02f1\u0001\u0000\u0000\u0000\u1545\u1546\u0005K\u0000\u0000"+
57794 		"\u1546\u1547\u0003@ \u0000\u1547\u02f3\u0001\u0000\u0000\u0000\u1548\u1549"+
57795 		"\u0005U\u0000\u0000\u1549\u154a\u0003\u02f6\u017b\u0000\u154a\u02f5\u0001"+
57796 		"\u0000\u0000\u0000\u154b\u1550\u0003\u02f8\u017c\u0000\u154c\u154d\u0005"+
57797 		"%\u0000\u0000\u154d\u154f\u0003\u02f8\u017c\u0000\u154e\u154c\u0001\u0000"+
57798 		"\u0000\u0000\u154f\u1552\u0001\u0000\u0000\u0000\u1550\u154e\u0001\u0000"+
57799 		"\u0000\u0000\u1550\u1551\u0001\u0000\u0000\u0000\u1551\u02f7\u0001\u0000"+
57800 		"\u0000\u0000\u1552\u1550\u0001\u0000\u0000\u0000\u1553\u1557\u0003\u02fa"+
57801 		"\u017d\u0000\u1554\u1556\u0003\u02fc\u017e\u0000\u1555\u1554\u0001\u0000"+
57802 		"\u0000\u0000\u1556\u1559\u0001\u0000\u0000\u0000\u1557\u1555\u0001\u0000"+
57803 		"\u0000\u0000\u1557\u1558\u0001\u0000\u0000\u0000\u1558\u02f9\u0001\u0000"+
57804 		"\u0000\u0000\u1559\u1557\u0001\u0000\u0000\u0000\u155a\u155f\u0003@ \u0000"+
57805 		"\u155b\u155d\u0005`\u0000\u0000\u155c\u155b\u0001\u0000\u0000\u0000\u155c"+
57806 		"\u155d\u0001\u0000\u0000\u0000\u155d\u155e\u0001\u0000\u0000\u0000\u155e"+
57807 		"\u1560\u0003\\.\u0000\u155f\u155c\u0001\u0000\u0000\u0000\u155f\u1560"+
57808 		"\u0001\u0000\u0000\u0000\u1560\u1575\u0001\u0000\u0000\u0000\u1561\u1563"+
57809 		"\u0003\u0306\u0183\u0000\u1562\u1564\u0005`\u0000\u0000\u1563\u1562\u0001"+
57810 		"\u0000\u0000\u0000\u1563\u1564\u0001\u0000\u0000\u0000\u1564\u1565\u0001"+
57811 		"\u0000\u0000\u0000\u1565\u1567\u0003\\.\u0000\u1566\u1568\u0003P(\u0000"+
57812 		"\u1567\u1566\u0001\u0000\u0000\u0000\u1567\u1568\u0001\u0000\u0000\u0000"+
57813 		"\u1568\u1575\u0001\u0000\u0000\u0000\u1569\u156e\u0003b1\u0000\u156a\u156c"+
57814 		"\u0005`\u0000\u0000\u156b\u156a\u0001\u0000\u0000\u0000\u156b\u156c\u0001"+
57815 		"\u0000\u0000\u0000\u156c\u156d\u0001\u0000\u0000\u0000\u156d\u156f\u0003"+
57816 		"\\.\u0000\u156e\u156b\u0001\u0000\u0000\u0000\u156e\u156f\u0001\u0000"+
57817 		"\u0000\u0000\u156f\u1575\u0001\u0000\u0000\u0000\u1570\u1571\u0005\u001f"+
57818 		"\u0000\u0000\u1571\u1572\u0003\u02f6\u017b\u0000\u1572\u1573\u0005 \u0000"+
57819 		"\u0000\u1573\u1575\u0001\u0000\u0000\u0000\u1574\u155a\u0001\u0000\u0000"+
57820 		"\u0000\u1574\u1561\u0001\u0000\u0000\u0000\u1574\u1569\u0001\u0000\u0000"+
57821 		"\u0000\u1574\u1570\u0001\u0000\u0000\u0000\u1575\u02fb\u0001\u0000\u0000"+
57822 		"\u0000\u1576\u1578\u0005V\u0000\u0000\u1577\u1576\u0001\u0000\u0000\u0000"+
57823 		"\u1577\u1578\u0001\u0000\u0000\u0000\u1578\u157a\u0001\u0000\u0000\u0000"+
57824 		"\u1579\u157b\u0007Q\u0000\u0000\u157a\u1579\u0001\u0000\u0000\u0000\u157a"+
57825 		"\u157b\u0001\u0000\u0000\u0000\u157b\u157c\u0001\u0000\u0000\u0000\u157c"+
57826 		"\u157d\u0005W\u0000\u0000\u157d\u157e\u0001\u0000\u0000\u0000\u157e\u1580"+
57827 		"\u0003\u02fa\u017d\u0000\u157f\u1581\u0003\u02fe\u017f\u0000\u1580\u157f"+
57828 		"\u0001\u0000\u0000\u0000\u1580\u1581\u0001\u0000\u0000\u0000\u1581\u1595"+
57829 		"\u0001\u0000\u0000\u0000\u1582\u1584\u0005V\u0000\u0000\u1583\u1582\u0001"+
57830 		"\u0000\u0000\u0000\u1583\u1584\u0001\u0000\u0000\u0000\u1584\u1585\u0001"+
57831 		"\u0000\u0000\u0000\u1585\u1587\u0007R\u0000\u0000\u1586\u1588\u0005Z\u0000"+
57832 		"\u0000\u1587\u1586\u0001\u0000\u0000\u0000\u1587\u1588\u0001\u0000\u0000"+
57833 		"\u0000\u1588\u1589\u0001\u0000\u0000\u0000\u1589\u158a\u0005W\u0000\u0000"+
57834 		"\u158a\u158c\u0003\u02fa\u017d\u0000\u158b\u158d\u0003\u02fe\u017f\u0000"+
57835 		"\u158c\u158b\u0001\u0000\u0000\u0000\u158c\u158d\u0001\u0000\u0000\u0000"+
57836 		"\u158d\u1595\u0001\u0000\u0000\u0000\u158e\u158f\u0007S\u0000\u0000\u158f"+
57837 		"\u1590\u0005\u00d7\u0000\u0000\u1590\u1592\u0003\u02fa\u017d\u0000\u1591"+
57838 		"\u1593\u0003\u02fe\u017f\u0000\u1592\u1591\u0001\u0000\u0000\u0000\u1592"+
57839 		"\u1593\u0001\u0000\u0000\u0000\u1593\u1595\u0001\u0000\u0000\u0000\u1594"+
57840 		"\u1577\u0001\u0000\u0000\u0000\u1594\u1583\u0001\u0000\u0000\u0000\u1594"+
57841 		"\u158e\u0001\u0000\u0000\u0000\u1595\u02fd\u0001\u0000\u0000\u0000\u1596"+
57842 		"\u1597\u0005a\u0000\u0000\u1597\u159b\u0003b1\u0000\u1598\u1599\u0005"+
57843 		"^\u0000\u0000\u1599\u159b\u0003P(\u0000\u159a\u1596\u0001\u0000\u0000"+
57844 		"\u0000\u159a\u1598\u0001\u0000\u0000\u0000\u159b\u02ff\u0001\u0000\u0000"+
57845 		"\u0000\u159c\u159d\u0005_\u0000\u0000\u159d\u159e\u0003b1\u0000\u159e"+
57846 		"\u0301\u0001\u0000\u0000\u0000\u159f\u15a0\u0005v\u0000\u0000\u15a0\u15a1"+
57847 		"\u0005w\u0000\u0000\u15a1\u15a6\u0003\u00acV\u0000\u15a2\u15a3\u0005%"+
57848 		"\u0000\u0000\u15a3\u15a5\u0003\u00acV\u0000\u15a4\u15a2\u0001\u0000\u0000"+
57849 		"\u0000\u15a5\u15a8\u0001\u0000\u0000\u0000\u15a6\u15a4\u0001\u0000\u0000"+
57850 		"\u0000\u15a6\u15a7\u0001\u0000\u0000\u0000\u15a7\u0303\u0001\u0000\u0000"+
57851 		"\u0000\u15a8\u15a6\u0001\u0000\u0000\u0000\u15a9\u15aa\u0005z\u0000\u0000"+
57852 		"\u15aa\u15ab\u0003b1\u0000\u15ab\u0305\u0001\u0000\u0000\u0000\u15ac\u15ad"+
57853 		"\u0005\u001f\u0000\u0000\u15ad\u15ae\u0003\u02e0\u0170\u0000\u15ae\u15af"+
57854 		"\u0005 \u0000\u0000\u15af\u0307\u0001\u0000\u0000\u0000\u15b0\u15b1\u0005"+
57855 		"M\u0000\u0000\u15b1\u15b2\u0005\u001f\u0000\u0000\u15b2\u15b3\u0003H$"+
57856 		"\u0000\u15b3\u15b4\u0003\u00aeW\u0000\u15b4\u15bb\u0001\u0000\u0000\u0000"+
57857 		"\u15b5\u15b6\u0005%\u0000\u0000\u15b6\u15b7\u0003H$\u0000\u15b7\u15b8"+
57858 		"\u0003\u00aeW\u0000\u15b8\u15ba\u0001\u0000\u0000\u0000\u15b9\u15b5\u0001"+
57859 		"\u0000\u0000\u0000\u15ba\u15bd\u0001\u0000\u0000\u0000\u15bb\u15b9\u0001"+
57860 		"\u0000\u0000\u0000\u15bb\u15bc\u0001\u0000\u0000\u0000\u15bc\u15be\u0001"+
57861 		"\u0000\u0000\u0000\u15bd\u15bb\u0001\u0000\u0000\u0000\u15be\u15bf\u0005"+
57862 		" \u0000\u0000\u15bf\u0309\u0001\u0000\u0000\u0000\u15c0\u15c1\u0005M\u0000"+
57863 		"\u0000\u15c1\u15c2\u0003\u030c\u0186\u0000\u15c2\u030b\u0001\u0000\u0000"+
57864 		"\u0000\u15c3\u15c8\u0003\u030e\u0187\u0000\u15c4\u15c5\u0005%\u0000\u0000"+
57865 		"\u15c5\u15c7\u0003\u030e\u0187\u0000\u15c6\u15c4\u0001\u0000\u0000\u0000"+
57866 		"\u15c7\u15ca\u0001\u0000\u0000\u0000\u15c8\u15c6\u0001\u0000\u0000\u0000"+
57867 		"\u15c8\u15c9\u0001\u0000\u0000\u0000\u15c9\u030d\u0001\u0000\u0000\u0000"+
57868 		"\u15ca\u15c8\u0001\u0000\u0000\u0000\u15cb\u15cd\u0003*\u0015\u0000\u15cc"+
57869 		"\u15ce\u0003P(\u0000\u15cd\u15cc\u0001\u0000\u0000\u0000\u15cd\u15ce\u0001"+
57870 		"\u0000\u0000\u0000\u15ce\u15cf\u0001\u0000\u0000\u0000\u15cf\u15d0\u0005"+
57871 		"`\u0000\u0000\u15d0\u15d1\u0003\u0306\u0183\u0000\u15d1\u030f\u0001\u0000"+
57872 		"\u0000\u0000\u15d2\u15d5\u0005\u01d2\u0000\u0000\u15d3\u15d6\u0003\u0312"+
57873 		"\u0189\u0000\u15d4\u15d6\u0003\u0318\u018c\u0000\u15d5\u15d3\u0001\u0000"+
57874 		"\u0000\u0000\u15d5\u15d4\u0001\u0000\u0000\u0000\u15d6\u15dc\u0001\u0000"+
57875 		"\u0000\u0000\u15d7\u15d8\u0005K\u0000\u0000\u15d8\u15da\u0003\u031a\u018d"+
57876 		"\u0000\u15d9\u15db\u0003P(\u0000\u15da\u15d9\u0001\u0000\u0000\u0000\u15da"+
57877 		"\u15db\u0001\u0000\u0000\u0000\u15db\u15dd\u0001\u0000\u0000\u0000\u15dc"+
57878 		"\u15d7\u0001\u0000\u0000\u0000\u15dc\u15dd\u0001\u0000\u0000\u0000\u15dd"+
57879 		"\u0311\u0001\u0000\u0000\u0000\u15de\u15e1\u0003\u0316\u018b\u0000\u15df"+
57880 		"\u15e1\u0003\u0314\u018a\u0000\u15e0\u15de\u0001\u0000\u0000\u0000\u15e0"+
57881 		"\u15df\u0001\u0000\u0000\u0000\u15e1\u15e9\u0001\u0000\u0000\u0000\u15e2"+
57882 		"\u15e5\u0005%\u0000\u0000\u15e3\u15e6\u0003\u0316\u018b\u0000\u15e4\u15e6"+
57883 		"\u0003\u0314\u018a\u0000\u15e5\u15e3\u0001\u0000\u0000\u0000\u15e5\u15e4"+
57884 		"\u0001\u0000\u0000\u0000\u15e6\u15e8\u0001\u0000\u0000\u0000\u15e7\u15e2"+
57885 		"\u0001\u0000\u0000\u0000\u15e8\u15eb\u0001\u0000\u0000\u0000\u15e9\u15e7"+
57886 		"\u0001\u0000\u0000\u0000\u15e9\u15ea\u0001\u0000\u0000\u0000\u15ea\u0313"+
57887 		"\u0001\u0000\u0000\u0000\u15eb\u15e9\u0001\u0000\u0000\u0000\u15ec\u15f1"+
57888 		"\u0003b1\u0000\u15ed\u15ef\u0005`\u0000\u0000\u15ee\u15ed\u0001\u0000"+
57889 		"\u0000\u0000\u15ee\u15ef\u0001\u0000\u0000\u0000\u15ef\u15f0\u0001\u0000"+
57890 		"\u0000\u0000\u15f0\u15f2\u0003\\.\u0000\u15f1\u15ee\u0001\u0000\u0000"+
57891 		"\u0000\u15f1\u15f2\u0001\u0000\u0000\u0000\u15f2\u0315\u0001\u0000\u0000"+
57892 		"\u0000\u15f3\u15f4\u0007T\u0000\u0000\u15f4\u15f5\u0005\u0014\u0000\u0000"+
57893 		"\u15f5\u15fa\u0003N\'\u0000\u15f6\u15f8\u0005`\u0000\u0000\u15f7\u15f6"+
57894 		"\u0001\u0000\u0000\u0000\u15f7\u15f8\u0001\u0000\u0000\u0000\u15f8\u15f9"+
57895 		"\u0001\u0000\u0000\u0000\u15f9\u15fb\u0003\\.\u0000\u15fa\u15f7\u0001"+
57896 		"\u0000\u0000\u0000\u15fa\u15fb\u0001\u0000\u0000\u0000\u15fb\u0317\u0001"+
57897 		"\u0000\u0000\u0000\u15fc\u15fd\u0007T\u0000\u0000\u15fd\u15fe\u0005\u0015"+
57898 		"\u0000\u0000\u15fe\u0319\u0001\u0000\u0000\u0000\u15ff\u1600\u0003@ \u0000"+
57899 		"\u1600\u031b\u0001\u0000\u0000\u0000\u1601\u1602\u0007U\u0000\u0000\u1602"+
57900 		"\u1649\u0005v\u0000\u0000\u1603\u1604\u0007V\u0000\u0000\u1604\u1649\u0005"+
57901 		"N\u0000\u0000\u1605\u1606\u0007W\u0000\u0000\u1606\u1649\u0005W\u0000"+
57902 		"\u0000\u1607\u1608\u0005\u00c1\u0000\u0000\u1608\u1649\u0005\u00c2\u0000"+
57903 		"\u0000\u1609\u160a\u0005\u00c3\u0000\u0000\u160a\u1649\u0005\u02d6\u0000"+
57904 		"\u0000\u160b\u160c\u0005\u00c4\u0000\u0000\u160c\u1649\u0005u\u0000\u0000"+
57905 		"\u160d\u160e\u0007X\u0000\u0000\u160e\u1649\u0005\u01e7\u0000\u0000\u160f"+
57906 		"\u1610\u0007X\u0000\u0000\u1610\u1649\u0005\u01e8\u0000\u0000\u1611\u1649"+
57907 		"\u0005\u01e9\u0000\u0000\u1612\u1613\u0005\u00c5\u0000\u0000\u1613\u1649"+
57908 		"\u0005\u00c6\u0000\u0000\u1614\u1615\u0005\u01ea\u0000\u0000\u1615\u1649"+
57909 		"\u0005\u00c6\u0000\u0000\u1616\u1617\u0005\u01eb\u0000\u0000\u1617\u1618"+
57910 		"\u0005\u0018\u0000\u0000\u1618\u1649\u0005\u02d8\u0000\u0000\u1619\u161a"+
57911 		"\u0005\u01ec\u0000\u0000\u161a\u161b\u0005\u0018\u0000\u0000\u161b\u1649"+
57912 		"\u0005\u02d8\u0000\u0000\u161c\u161d\u0005\u012c\u0000\u0000\u161d\u1649"+
57913 		"\u0005\u02d6\u0000\u0000\u161e\u161f\u0005\u01ed\u0000\u0000\u161f\u1649"+
57914 		"\u0005\u02d6\u0000\u0000\u1620\u1649\u0005\u01ee\u0000\u0000\u1621\u1622"+
57915 		"\u0005\u001f\u0000\u0000\u1622\u1623\u0005\u00c7\u0000\u0000\u1623\u1624"+
57916 		"\u0005f\u0000\u0000\u1624\u1625\u0005\u001f\u0000\u0000\u1625\u162b\u0003"+
57917 		"\u00ecv\u0000\u1626\u162a\u0005\u00fb\u0000\u0000\u1627\u1628\u0005\u0018"+
57918 		"\u0000\u0000\u1628\u162a\u0003\u001a\r\u0000\u1629\u1626\u0001\u0000\u0000"+
57919 		"\u0000\u1629\u1627\u0001\u0000\u0000\u0000\u162a\u162d\u0001\u0000\u0000"+
57920 		"\u0000\u162b\u1629\u0001\u0000\u0000\u0000\u162b\u162c\u0001\u0000\u0000"+
57921 		"\u0000\u162c\u162e\u0001\u0000\u0000\u0000\u162d\u162b\u0001\u0000\u0000"+
57922 		"\u0000\u162e\u162f\u0005 \u0000\u0000\u162f\u1630\u0005 \u0000\u0000\u1630"+
57923 		"\u1649\u0001\u0000\u0000\u0000\u1631\u1632\u0005\u00c7\u0000\u0000\u1632"+
57924 		"\u1633\u0005f\u0000\u0000\u1633\u1649\u0005\u00fb\u0000\u0000\u1634\u1635"+
57925 		"\u0005\u01ef\u0000\u0000\u1635\u1649\u0007D\u0000\u0000\u1636\u1637\u0005"+
57926 		"\u01f0\u0000\u0000\u1637\u1649\u0005\u02d6\u0000\u0000\u1638\u1649\u0005"+
57927 		"\u01f1\u0000\u0000\u1639\u163a\u0005\u01f2\u0000\u0000\u163a\u1649\u0005"+
57928 		"\u00c6\u0000\u0000\u163b\u163c\u0005\u00be\u0000\u0000\u163c\u163d\u0005"+
57929 		"\u00ca\u0000\u0000\u163d\u1641\u0005\u001f\u0000\u0000\u163e\u1640\u0003"+
57930 		"\u031e\u018f\u0000\u163f\u163e\u0001\u0000\u0000\u0000\u1640\u1643\u0001"+
57931 		"\u0000\u0000\u0000\u1641\u163f\u0001\u0000\u0000\u0000\u1641\u1642\u0001"+
57932 		"\u0000\u0000\u0000\u1642\u1644\u0001\u0000\u0000\u0000\u1643\u1641\u0001"+
57933 		"\u0000\u0000\u0000\u1644\u1649\u0005 \u0000\u0000\u1645\u1646\u0005\u00be"+
57934 		"\u0000\u0000\u1646\u1647\u0005\u00c6\u0000\u0000\u1647\u1649\u0005\u02db"+
57935 		"\u0000\u0000\u1648\u1601\u0001\u0000\u0000\u0000\u1648\u1603\u0001\u0000"+
57936 		"\u0000\u0000\u1648\u1605\u0001\u0000\u0000\u0000\u1648\u1607\u0001\u0000"+
57937 		"\u0000\u0000\u1648\u1609\u0001\u0000\u0000\u0000\u1648\u160b\u0001\u0000"+
57938 		"\u0000\u0000\u1648\u160d\u0001\u0000\u0000\u0000\u1648\u160f\u0001\u0000"+
57939 		"\u0000\u0000\u1648\u1611\u0001\u0000\u0000\u0000\u1648\u1612\u0001\u0000"+
57940 		"\u0000\u0000\u1648\u1614\u0001\u0000\u0000\u0000\u1648\u1616\u0001\u0000"+
57941 		"\u0000\u0000\u1648\u1619\u0001\u0000\u0000\u0000\u1648\u161c\u0001\u0000"+
57942 		"\u0000\u0000\u1648\u161e\u0001\u0000\u0000\u0000\u1648\u1620\u0001\u0000"+
57943 		"\u0000\u0000\u1648\u1621\u0001\u0000\u0000\u0000\u1648\u1631\u0001\u0000"+
57944 		"\u0000\u0000\u1648\u1634\u0001\u0000\u0000\u0000\u1648\u1636\u0001\u0000"+
57945 		"\u0000\u0000\u1648\u1638\u0001\u0000\u0000\u0000\u1648\u1639\u0001\u0000"+
57946 		"\u0000\u0000\u1648\u163b\u0001\u0000\u0000\u0000\u1648\u1645\u0001\u0000"+
57947 		"\u0000\u0000\u1649\u031d\u0001\u0000\u0000\u0000\u164a\u164b\u0005\'\u0000"+
57948 		"\u0000\u164b\u164c\u0005\u01d5\u0000\u0000\u164c\u1681\u0005\'\u0000\u0000"+
57949 		"\u164d\u164e\u0005\'\u0000\u0000\u164e\u164f\u0005\u01d6\u0000\u0000\u164f"+
57950 		"\u1681\u0005\'\u0000\u0000\u1650\u1651\u0005\'\u0000\u0000\u1651\u1652"+
57951 		"\u0005\u01d7\u0000\u0000\u1652\u1681\u0005\'\u0000\u0000\u1653\u1654\u0005"+
57952 		"\'\u0000\u0000\u1654\u1655\u0005\u01d8\u0000\u0000\u1655\u1681\u0005\'"+
57953 		"\u0000\u0000\u1656\u1657\u0005\'\u0000\u0000\u1657\u1658\u0005\u01d9\u0000"+
57954 		"\u0000\u1658\u1681\u0005\'\u0000\u0000\u1659\u165a\u0005\'\u0000\u0000"+
57955 		"\u165a\u165b\u0005\u01da\u0000\u0000\u165b\u1681\u0005\'\u0000\u0000\u165c"+
57956 		"\u165d\u0005\'\u0000\u0000\u165d\u165e\u0005\u01db\u0000\u0000\u165e\u1681"+
57957 		"\u0005\'\u0000\u0000\u165f\u1660\u0005\'\u0000\u0000\u1660\u1661\u0005"+
57958 		"\u01dc\u0000\u0000\u1661\u1681\u0005\'\u0000\u0000\u1662\u1663\u0005\'"+
57959 		"\u0000\u0000\u1663\u1664\u0005\u01dd\u0000\u0000\u1664\u1681\u0005\'\u0000"+
57960 		"\u0000\u1665\u1666\u0005\'\u0000\u0000\u1666\u1667\u0005\u01de\u0000\u0000"+
57961 		"\u1667\u1681\u0005\'\u0000\u0000\u1668\u1669\u0005\'\u0000\u0000\u1669"+
57962 		"\u166a\u0005\u01df\u0000\u0000\u166a\u1681\u0005\'\u0000\u0000\u166b\u166c"+
57963 		"\u0005\'\u0000\u0000\u166c\u166d\u0005\u01e0\u0000\u0000\u166d\u1681\u0005"+
57964 		"\'\u0000\u0000\u166e\u166f\u0005\'\u0000\u0000\u166f\u1670\u0005\u01e1"+
57965 		"\u0000\u0000\u1670\u1681\u0005\'\u0000\u0000\u1671\u1672\u0005\'\u0000"+
57966 		"\u0000\u1672\u1673\u0005\u01e2\u0000\u0000\u1673\u1681\u0005\'\u0000\u0000"+
57967 		"\u1674\u1675\u0005\'\u0000\u0000\u1675\u1676\u0005\u01e3\u0000\u0000\u1676"+
57968 		"\u1681\u0005\'\u0000\u0000\u1677\u1678\u0005\'\u0000\u0000\u1678\u1679"+
57969 		"\u0005\u01e4\u0000\u0000\u1679\u1681\u0005\'\u0000\u0000\u167a\u167b\u0005"+
57970 		"\'\u0000\u0000\u167b\u167c\u0005\u01e5\u0000\u0000\u167c\u1681\u0005\'"+
57971 		"\u0000\u0000\u167d\u167e\u0005\'\u0000\u0000\u167e\u167f\u0005\u01e6\u0000"+
57972 		"\u0000\u167f\u1681\u0005\'\u0000\u0000\u1680\u164a\u0001\u0000\u0000\u0000"+
57973 		"\u1680\u164d\u0001\u0000\u0000\u0000\u1680\u1650\u0001\u0000\u0000\u0000"+
57974 		"\u1680\u1653\u0001\u0000\u0000\u0000\u1680\u1656\u0001\u0000\u0000\u0000"+
57975 		"\u1680\u1659\u0001\u0000\u0000\u0000\u1680\u165c\u0001\u0000\u0000\u0000"+
57976 		"\u1680\u165f\u0001\u0000\u0000\u0000\u1680\u1662\u0001\u0000\u0000\u0000"+
57977 		"\u1680\u1665\u0001\u0000\u0000\u0000\u1680\u1668\u0001\u0000\u0000\u0000"+
57978 		"\u1680\u166b\u0001\u0000\u0000\u0000\u1680\u166e\u0001\u0000\u0000\u0000"+
57979 		"\u1680\u1671\u0001\u0000\u0000\u0000\u1680\u1674\u0001\u0000\u0000\u0000"+
57980 		"\u1680\u1677\u0001\u0000\u0000\u0000\u1680\u167a\u0001\u0000\u0000\u0000"+
57981 		"\u1680\u167d\u0001\u0000\u0000\u0000\u1681\u031f\u0001\u0000\u0000\u0000"+
57982 		"\u1682\u1686\u0005f\u0000\u0000\u1683\u1687\u0005\u02b8\u0000\u0000\u1684"+
57983 		"\u1687\u0003\u0322\u0191\u0000\u1685\u1687\u0003\u0326\u0193\u0000\u1686"+
57984 		"\u1683\u0001\u0000\u0000\u0000\u1686\u1684\u0001\u0000\u0000\u0000\u1686"+
57985 		"\u1685\u0001\u0000\u0000\u0000\u1687\u0321\u0001\u0000\u0000\u0000\u1688"+
57986 		"\u16c3\u0005\u0165\u0000\u0000\u1689\u168e\u0005\u02b9\u0000\u0000\u168a"+
57987 		"\u168b\u0005\u001f\u0000\u0000\u168b\u168c\u0003\u001c\u000e\u0000\u168c"+
57988 		"\u168d\u0005 \u0000\u0000\u168d\u168f\u0001\u0000\u0000\u0000\u168e\u168a"+
57989 		"\u0001\u0000\u0000\u0000\u168e\u168f\u0001\u0000\u0000\u0000\u168f\u1692"+
57990 		"\u0001\u0000\u0000\u0000\u1690\u1692\u0005\u010b\u0000\u0000\u1691\u1689"+
57991 		"\u0001\u0000\u0000\u0000\u1691\u1690\u0001\u0000\u0000\u0000\u1692\u16a8"+
57992 		"\u0001\u0000\u0000\u0000\u1693\u169f\u0003\u0324\u0192\u0000\u1694\u169d"+
57993 		"\u0005%\u0000\u0000\u1695\u169e\u0005\u02ba\u0000\u0000\u1696\u169b\u0005"+
57994 		"\u02bb\u0000\u0000\u1697\u1698\u0005\u001f\u0000\u0000\u1698\u1699\u0003"+
57995 		"\u001c\u000e\u0000\u1699\u169a\u0005 \u0000\u0000\u169a\u169c\u0001\u0000"+
57996 		"\u0000\u0000\u169b\u1697\u0001\u0000\u0000\u0000\u169b\u169c\u0001\u0000"+
57997 		"\u0000\u0000\u169c\u169e\u0001\u0000\u0000\u0000\u169d\u1695\u0001\u0000"+
57998 		"\u0000\u0000\u169d\u1696\u0001\u0000\u0000\u0000\u169e\u16a0\u0001\u0000"+
57999 		"\u0000\u0000\u169f\u1694\u0001\u0000\u0000\u0000\u169f\u16a0\u0001\u0000"+
58000 		"\u0000\u0000\u16a0\u16a6\u0001\u0000\u0000\u0000\u16a1\u16a2\u0005%\u0000"+
58001 		"\u0000\u16a2\u16a4\u0005\u02bc\u0000\u0000\u16a3\u16a5\u0007Y\u0000\u0000"+
58002 		"\u16a4\u16a3\u0001\u0000\u0000\u0000\u16a4\u16a5\u0001\u0000\u0000\u0000"+
58003 		"\u16a5\u16a7\u0001\u0000\u0000\u0000\u16a6\u16a1\u0001\u0000\u0000\u0000"+
58004 		"\u16a6\u16a7\u0001\u0000\u0000\u0000\u16a7\u16a9\u0001\u0000\u0000\u0000"+
58005 		"\u16a8\u1693\u0001\u0000\u0000\u0000\u16a8\u16a9\u0001\u0000\u0000\u0000"+
58006 		"\u16a9\u16c4\u0001\u0000\u0000\u0000\u16aa\u16b0\u0005\u02bf\u0000\u0000"+
58007 		"\u16ab\u16ae\u0003\u0324\u0192\u0000\u16ac\u16ad\u0005%\u0000\u0000\u16ad"+
58008 		"\u16af\u0005\u02ba\u0000\u0000\u16ae\u16ac\u0001\u0000\u0000\u0000\u16ae"+
58009 		"\u16af\u0001\u0000\u0000\u0000\u16af\u16b1\u0001\u0000\u0000\u0000\u16b0"+
58010 		"\u16ab\u0001\u0000\u0000\u0000\u16b0\u16b1\u0001\u0000\u0000\u0000\u16b1"+
58011 		"\u16c4\u0001\u0000\u0000\u0000\u16b2\u16b7\u0005\u02c0\u0000\u0000\u16b3"+
58012 		"\u16b4\u0005\u001f\u0000\u0000\u16b4\u16b5\u0003\u001c\u000e\u0000\u16b5"+
58013 		"\u16b6\u0005 \u0000\u0000\u16b6\u16b8\u0001\u0000\u0000\u0000\u16b7\u16b3"+
58014 		"\u0001\u0000\u0000\u0000\u16b7\u16b8\u0001\u0000\u0000\u0000\u16b8\u16c1"+
58015 		"\u0001\u0000\u0000\u0000\u16b9\u16bf\u0003\u0324\u0192\u0000\u16ba\u16bb"+
58016 		"\u0005%\u0000\u0000\u16bb\u16bd\u0005\u02bc\u0000\u0000\u16bc\u16be\u0007"+
58017 		"Y\u0000\u0000\u16bd\u16bc\u0001\u0000\u0000\u0000\u16bd\u16be\u0001\u0000"+
58018 		"\u0000\u0000\u16be\u16c0\u0001\u0000\u0000\u0000\u16bf\u16ba\u0001\u0000"+
58019 		"\u0000\u0000\u16bf\u16c0\u0001\u0000\u0000\u0000\u16c0\u16c2\u0001\u0000"+
58020 		"\u0000\u0000\u16c1\u16b9\u0001\u0000\u0000\u0000\u16c1\u16c2\u0001\u0000"+
58021 		"\u0000\u0000\u16c2\u16c4\u0001\u0000\u0000\u0000\u16c3\u1691\u0001\u0000"+
58022 		"\u0000\u0000\u16c3\u16aa\u0001\u0000\u0000\u0000\u16c3\u16b2\u0001\u0000"+
58023 		"\u0000\u0000\u16c4\u0323\u0001\u0000\u0000\u0000\u16c5\u16c6\u0005%\u0000"+
58024 		"\u0000\u16c6\u16c7\u0005\u00f2\u0000\u0000\u16c7\u16c9\u0005\u02c1\u0000"+
58025 		"\u0000\u16c8\u16c5\u0001\u0000\u0000\u0000\u16c8\u16c9\u0001\u0000\u0000"+
58026 		"\u0000\u16c9\u16cc\u0001\u0000\u0000\u0000\u16ca\u16cb\u0005%\u0000\u0000"+
58027 		"\u16cb\u16cd\u0005\u00b0\u0000\u0000\u16cc\u16ca\u0001\u0000\u0000\u0000"+
58028 		"\u16cc\u16cd\u0001\u0000\u0000\u0000\u16cd\u16d6\u0001\u0000\u0000\u0000"+
58029 		"\u16ce\u16cf\u0005%\u0000\u0000\u16cf\u16d4\u0005\u02c2\u0000\u0000\u16d0"+
58030 		"\u16d1\u0005\u001f\u0000\u0000\u16d1\u16d2\u0003\u001c\u000e\u0000\u16d2"+
58031 		"\u16d3\u0005 \u0000\u0000\u16d3\u16d5\u0001\u0000\u0000\u0000\u16d4\u16d0"+
58032 		"\u0001\u0000\u0000\u0000\u16d4\u16d5\u0001\u0000\u0000\u0000\u16d5\u16d7"+
58033 		"\u0001\u0000\u0000\u0000\u16d6\u16ce\u0001\u0000\u0000\u0000\u16d6\u16d7"+
58034 		"\u0001\u0000\u0000\u0000\u16d7\u0325\u0001\u0000\u0000\u0000\u16d8\u16d9"+
58035 		"\u0005\u02c3\u0000\u0000\u16d9\u16ec\u0007Z\u0000\u0000\u16da\u16db\u0005"+
58036 		"%\u0000\u0000\u16db\u16e0\u0005\u02c2\u0000\u0000\u16dc\u16dd\u0005\u001f"+
58037 		"\u0000\u0000\u16dd\u16de\u0003\u001c\u000e\u0000\u16de\u16df\u0005 \u0000"+
58038 		"\u0000\u16df\u16e1\u0001\u0000\u0000\u0000\u16e0\u16dc\u0001\u0000\u0000"+
58039 		"\u0000\u16e0\u16e1\u0001\u0000\u0000\u0000\u16e1\u16e3\u0001\u0000\u0000"+
58040 		"\u0000\u16e2\u16da\u0001\u0000\u0000\u0000\u16e2\u16e3\u0001\u0000\u0000"+
58041 		"\u0000\u16e3\u16e6\u0001\u0000\u0000\u0000\u16e4\u16e5\u0005%\u0000\u0000"+
58042 		"\u16e5\u16e7\u0005\u02c4\u0000\u0000\u16e6\u16e4\u0001\u0000\u0000\u0000"+
58043 		"\u16e6\u16e7\u0001\u0000\u0000\u0000\u16e7\u16ea\u0001\u0000\u0000\u0000"+
58044 		"\u16e8\u16e9\u0005%\u0000\u0000\u16e9\u16eb\u0005\u02c5\u0000\u0000\u16ea"+
58045 		"\u16e8\u0001\u0000\u0000\u0000\u16ea\u16eb\u0001\u0000\u0000\u0000\u16eb"+
58046 		"\u16ed\u0001\u0000\u0000\u0000\u16ec\u16e2\u0001\u0000\u0000\u0000\u16ec"+
58047 		"\u16ed\u0001\u0000\u0000\u0000\u16ed\u0327\u0001\u0000\u0000\u0000\u16ee"+
58048 		"\u16f3\u0005M\u0000\u0000\u16ef\u16f1\u0003\u032a\u0195\u0000\u16f0\u16f2"+
58049 		"\u0005%\u0000\u0000\u16f1\u16f0\u0001\u0000\u0000\u0000\u16f1\u16f2\u0001"+
58050 		"\u0000\u0000\u0000\u16f2\u16f4\u0001\u0000\u0000\u0000\u16f3\u16ef\u0001"+
58051 		"\u0000\u0000\u0000\u16f3\u16f4\u0001\u0000\u0000\u0000\u16f4\u16f6\u0001"+
58052 		"\u0000\u0000\u0000\u16f5\u16f7\u0003\u030c\u0186\u0000\u16f6\u16f5\u0001"+
58053 		"\u0000\u0000\u0000\u16f6\u16f7\u0001\u0000\u0000\u0000\u16f7\u0329\u0001"+
58054 		"\u0000\u0000\u0000\u16f8\u16f9\u0005\u02c6\u0000\u0000\u16f9\u16fa\u0005"+
58055 		"\u001f\u0000\u0000\u16fa\u16ff\u0003\u032c\u0196\u0000\u16fb\u16fc\u0005"+
58056 		"%\u0000\u0000\u16fc\u16fe\u0003\u032c\u0196\u0000\u16fd\u16fb\u0001\u0000"+
58057 		"\u0000\u0000\u16fe\u1701\u0001\u0000\u0000\u0000\u16ff\u16fd\u0001\u0000"+
58058 		"\u0000\u0000\u16ff\u1700\u0001\u0000\u0000\u0000\u1700\u1702\u0001\u0000"+
58059 		"\u0000\u0000\u1701\u16ff\u0001\u0000\u0000\u0000\u1702\u1703\u0005 \u0000"+
58060 		"\u0000\u1703\u032b\u0001\u0000\u0000\u0000\u1704\u1705\u0003\u032e\u0197"+
58061 		"\u0000\u1705\u1706\u0005`\u0000\u0000\u1706\u1707\u0003\u0330\u0198\u0000"+
58062 		"\u1707\u170a\u0001\u0000\u0000\u0000\u1708\u170a\u0003\u0332\u0199\u0000"+
58063 		"\u1709\u1704\u0001\u0000\u0000\u0000\u1709\u1708\u0001\u0000\u0000\u0000"+
58064 		"\u170a\u032d\u0001\u0000\u0000\u0000\u170b\u170c\u0003\u001c\u000e\u0000"+
58065 		"\u170c\u032f\u0001\u0000\u0000\u0000\u170d\u170e\u0003*\u0015\u0000\u170e"+
58066 		"\u0331\u0001\u0000\u0000\u0000\u170f\u1710\u0005\u009a\u0000\u0000\u1710"+
58067 		"\u1711\u0003\u032e\u0197\u0000\u1711\u0333\u0001\u0000\u0000\u0000\u1712"+
58068 		"\u1715\u00057\u0000\u0000\u1713\u1716\u0003\u0336\u019b\u0000\u1714\u1716"+
58069 		"\u0003\u0338\u019c\u0000\u1715\u1713\u0001\u0000\u0000\u0000\u1715\u1714"+
58070 		"\u0001\u0000\u0000\u0000\u1716\u0335\u0001\u0000\u0000\u0000\u1717\u171a"+
58071 		"\u0003\u033a\u019d\u0000\u1718\u1719\u0005a\u0000\u0000\u1719\u171b\u0003"+
58072 		"\u033c\u019e\u0000\u171a\u1718\u0001\u0000\u0000\u0000\u171a\u171b\u0001"+
58073 		"\u0000\u0000\u0000\u171b\u171c\u0001\u0000\u0000\u0000\u171c\u171d\u0005"+
58074 		"g\u0000\u0000\u171d\u1722\u0003\u0344\u01a2\u0000\u171e\u171f\u0005%\u0000"+
58075 		"\u0000\u171f\u1721\u0003\u0344\u01a2\u0000\u1720\u171e\u0001\u0000\u0000"+
58076 		"\u0000\u1721\u1724\u0001\u0000\u0000\u0000\u1722\u1720\u0001\u0000\u0000"+
58077 		"\u0000\u1722\u1723\u0001\u0000\u0000\u0000\u1723\u1728\u0001\u0000\u0000"+
58078 		"\u0000\u1724\u1722\u0001\u0000\u0000\u0000\u1725\u1726\u0005M\u0000\u0000"+
58079 		"\u1726\u1727\u00057\u0000\u0000\u1727\u1729\u0005\u0102\u0000\u0000\u1728"+
58080 		"\u1725\u0001\u0000\u0000\u0000\u1728\u1729\u0001\u0000\u0000\u0000\u1729"+
58081 		"\u172c\u0001\u0000\u0000\u0000\u172a\u172b\u0005`\u0000\u0000\u172b\u172d"+
58082 		"\u0003\u0344\u01a2\u0000\u172c\u172a\u0001\u0000\u0000\u0000\u172c\u172d"+
58083 		"\u0001\u0000\u0000\u0000\u172d\u0337\u0001\u0000\u0000\u0000\u172e\u1731"+
58084 		"\u0003\u033e\u019f\u0000\u172f\u1730\u0005a\u0000\u0000\u1730\u1732\u0003"+
58085 		"\u0340\u01a0\u0000\u1731\u172f\u0001\u0000\u0000\u0000\u1731\u1732\u0001"+
58086 		"\u0000\u0000\u0000\u1732\u1733\u0001\u0000\u0000\u0000\u1733\u1734\u0005"+
58087 		"g\u0000\u0000\u1734\u1739\u0003\u0344\u01a2\u0000\u1735\u1736\u0005%\u0000"+
58088 		"\u0000\u1736\u1738\u0003\u0344\u01a2\u0000\u1737\u1735\u0001\u0000\u0000"+
58089 		"\u0000\u1738\u173b\u0001\u0000\u0000\u0000\u1739\u1737\u0001\u0000\u0000"+
58090 		"\u0000\u1739\u173a\u0001\u0000\u0000\u0000\u173a\u173f\u0001\u0000\u0000"+
58091 		"\u0000\u173b\u1739\u0001\u0000\u0000\u0000\u173c\u173d\u0005M\u0000\u0000"+
58092 		"\u173d\u173e\u00057\u0000\u0000\u173e\u1740\u0005\u0102\u0000\u0000\u173f"+
58093 		"\u173c\u0001\u0000\u0000\u0000\u173f\u1740\u0001\u0000\u0000\u0000\u1740"+
58094 		"\u0339\u0001\u0000\u0000\u0000\u1741\u1743\u0003\u0354\u01aa\u0000\u1742"+
58095 		"\u1744\u0003P(\u0000\u1743\u1742\u0001\u0000\u0000\u0000\u1743\u1744\u0001"+
58096 		"\u0000\u0000\u0000\u1744\u174c\u0001\u0000\u0000\u0000\u1745\u1746\u0005"+
58097 		"%\u0000\u0000\u1746\u1748\u0003\u0354\u01aa\u0000\u1747\u1749\u0003P("+
58098 		"\u0000\u1748\u1747\u0001\u0000\u0000\u0000\u1748\u1749\u0001\u0000\u0000"+
58099 		"\u0000\u1749\u174b\u0001\u0000\u0000\u0000\u174a\u1745\u0001\u0000\u0000"+
58100 		"\u0000\u174b\u174e\u0001\u0000\u0000\u0000\u174c\u174a\u0001\u0000\u0000"+
58101 		"\u0000\u174c\u174d\u0001\u0000\u0000\u0000\u174d\u033b\u0001\u0000\u0000"+
58102 		"\u0000\u174e\u174c\u0001\u0000\u0000\u0000\u174f\u1750\u0003\u0392\u01c9"+
58103 		"\u0000\u1750\u1751\u0005\u000e\u0000\u0000\u1751\u1752\u0005\u000e\u0000"+
58104 		"\u0000\u1752\u1754\u0001\u0000\u0000\u0000\u1753\u174f\u0001\u0000\u0000"+
58105 		"\u0000\u1753\u1754\u0001\u0000\u0000\u0000\u1754\u1755\u0001\u0000\u0000"+
58106 		"\u0000\u1755\u1756\u0003\u0342\u01a1\u0000\u1756\u033d\u0001\u0000\u0000"+
58107 		"\u0000\u1757\u175c\u0003\u0354\u01aa\u0000\u1758\u1759\u0005%\u0000\u0000"+
58108 		"\u1759\u175b\u0003\u0354\u01aa\u0000\u175a\u1758\u0001\u0000\u0000\u0000"+
58109 		"\u175b\u175e\u0001\u0000\u0000\u0000\u175c\u175a\u0001\u0000\u0000\u0000"+
58110 		"\u175c\u175d\u0001\u0000\u0000\u0000\u175d\u033f\u0001\u0000\u0000\u0000"+
58111 		"\u175e\u175c\u0001\u0000\u0000\u0000\u175f\u1760\u0003\u0394\u01ca\u0000"+
58112 		"\u1760\u1761\u0005\u000e\u0000\u0000\u1761\u1762\u0005\u000e\u0000\u0000"+
58113 		"\u1762\u1764\u0001\u0000\u0000\u0000\u1763\u175f\u0001\u0000\u0000\u0000"+
58114 		"\u1763\u1764\u0001\u0000\u0000\u0000\u1764\u1765\u0001\u0000\u0000\u0000"+
58115 		"\u1765\u1766\u0003\u0342\u01a1\u0000\u1766\u0341\u0001\u0000\u0000\u0000"+
58116 		"\u1767\u1768\u0003L&\u0000\u1768\u1769\u0005\u0014\u0000\u0000\u1769\u176b"+
58117 		"\u0001\u0000\u0000\u0000\u176a\u1767\u0001\u0000\u0000\u0000\u176a\u176b"+
58118 		"\u0001\u0000\u0000\u0000\u176b\u176c\u0001\u0000\u0000\u0000\u176c\u176d"+
58119 		"\u0003N\'\u0000\u176d\u0343\u0001\u0000\u0000\u0000\u176e\u176f\u0003"+
58120 		"\u03b2\u01d9\u0000\u176f\u0345\u0001\u0000\u0000\u0000\u1770\u1776\u0005"+
58121 		"8\u0000\u0000\u1771\u1773\u0003\u0352\u01a9\u0000\u1772\u1771\u0001\u0000"+
58122 		"\u0000\u0000\u1772\u1773\u0001\u0000\u0000\u0000\u1773\u1774\u0001\u0000"+
58123 		"\u0000\u0000\u1774\u1777\u0003\u0348\u01a4\u0000\u1775\u1777\u0003\u034a"+
58124 		"\u01a5\u0000\u1776\u1772\u0001\u0000\u0000\u0000\u1776\u1775\u0001\u0000"+
58125 		"\u0000\u0000\u1777\u0347\u0001\u0000\u0000\u0000\u1778\u177b\u0003\u033a"+
58126 		"\u019d\u0000\u1779\u177a\u0005a\u0000\u0000\u177a\u177c\u0003\u033c\u019e"+
58127 		"\u0000\u177b\u1779\u0001\u0000\u0000\u0000\u177b\u177c\u0001\u0000\u0000"+
58128 		"\u0000\u177c\u177d\u0001\u0000\u0000\u0000\u177d\u177e\u0007[\u0000\u0000"+
58129 		"\u177e\u1783\u0003\u0344\u01a2\u0000\u177f\u1780\u0005%\u0000\u0000\u1780"+
58130 		"\u1782\u0003\u0344\u01a2\u0000\u1781\u177f\u0001\u0000\u0000\u0000\u1782"+
58131 		"\u1785\u0001\u0000\u0000\u0000\u1783\u1781\u0001\u0000\u0000\u0000\u1783"+
58132 		"\u1784\u0001\u0000\u0000\u0000\u1784\u1787\u0001\u0000\u0000\u0000\u1785"+
58133 		"\u1783\u0001\u0000\u0000\u0000\u1786\u1788\u0005\u00fe\u0000\u0000\u1787"+
58134 		"\u1786\u0001\u0000\u0000\u0000\u1787\u1788\u0001\u0000\u0000\u0000\u1788"+
58135 		"\u178b\u0001\u0000\u0000\u0000\u1789\u178a\u0005`\u0000\u0000\u178a\u178c"+
58136 		"\u0003\u0344\u01a2\u0000\u178b\u1789\u0001\u0000\u0000\u0000\u178b\u178c"+
58137 		"\u0001\u0000\u0000\u0000\u178c\u0349\u0001\u0000\u0000\u0000\u178d\u1790"+
58138 		"\u0003\u033e\u019f\u0000\u178e\u178f\u0005a\u0000\u0000\u178f\u1791\u0003"+
58139 		"\u0340\u01a0\u0000\u1790\u178e\u0001\u0000\u0000\u0000\u1790\u1791\u0001"+
58140 		"\u0000\u0000\u0000\u1791\u1792\u0001\u0000\u0000\u0000\u1792\u1793\u0007"+
58141 		"[\u0000\u0000\u1793\u1798\u0003\u0344\u01a2\u0000\u1794\u1795\u0005%\u0000"+
58142 		"\u0000\u1795\u1797\u0003\u0344\u01a2\u0000\u1796\u1794\u0001\u0000\u0000"+
58143 		"\u0000\u1797\u179a\u0001\u0000\u0000\u0000\u1798\u1796\u0001\u0000\u0000"+
58144 		"\u0000\u1798\u1799\u0001\u0000\u0000\u0000\u1799\u179c\u0001\u0000\u0000"+
58145 		"\u0000\u179a\u1798\u0001\u0000\u0000\u0000\u179b\u179d\u0005\u00fe\u0000"+
58146 		"\u0000\u179c\u179b\u0001\u0000\u0000\u0000\u179c\u179d\u0001\u0000\u0000"+
58147 		"\u0000\u179d\u034b\u0001\u0000\u0000\u0000\u179e\u17a1\u0005\u0118\u0000"+
58148 		"\u0000\u179f\u17a2\u0003\u034e\u01a7\u0000\u17a0\u17a2\u0003\u0350\u01a8"+
58149 		"\u0000\u17a1\u179f\u0001\u0000\u0000\u0000\u17a1\u17a0\u0001\u0000\u0000"+
58150 		"\u0000\u17a2\u034d\u0001\u0000\u0000\u0000\u17a3\u17a6\u0003\u033a\u019d"+
58151 		"\u0000\u17a4\u17a5\u0005a\u0000\u0000\u17a5\u17a7\u0003\u033c\u019e\u0000"+
58152 		"\u17a6\u17a4\u0001\u0000\u0000\u0000\u17a6\u17a7\u0001\u0000\u0000\u0000"+
58153 		"\u17a7\u17a8\u0001\u0000\u0000\u0000\u17a8\u17a9\u0005g\u0000\u0000\u17a9"+
58154 		"\u17ae\u0003\u0344\u01a2\u0000\u17aa\u17ab\u0005%\u0000\u0000\u17ab\u17ad"+
58155 		"\u0003\u0344\u01a2\u0000\u17ac\u17aa\u0001\u0000\u0000\u0000\u17ad\u17b0"+
58156 		"\u0001\u0000\u0000\u0000\u17ae\u17ac\u0001\u0000\u0000\u0000\u17ae\u17af"+
58157 		"\u0001\u0000\u0000\u0000\u17af\u17b2\u0001\u0000\u0000\u0000\u17b0\u17ae"+
58158 		"\u0001\u0000\u0000\u0000\u17b1\u17b3\u0005\u00fe\u0000\u0000\u17b2\u17b1"+
58159 		"\u0001\u0000\u0000\u0000\u17b2\u17b3\u0001\u0000\u0000\u0000\u17b3\u17b6"+
58160 		"\u0001\u0000\u0000\u0000\u17b4\u17b5\u0005`\u0000\u0000\u17b5\u17b7\u0003"+
58161 		"\u0344\u01a2\u0000\u17b6\u17b4\u0001\u0000\u0000\u0000\u17b6\u17b7\u0001"+
58162 		"\u0000\u0000\u0000\u17b7\u034f\u0001\u0000\u0000\u0000\u17b8\u17bb\u0003"+
58163 		"\u033e\u019f\u0000\u17b9\u17ba\u0005a\u0000\u0000\u17ba\u17bc\u0003\u0340"+
58164 		"\u01a0\u0000\u17bb\u17b9\u0001\u0000\u0000\u0000\u17bb\u17bc\u0001\u0000"+
58165 		"\u0000\u0000\u17bc\u17bd\u0001\u0000\u0000\u0000\u17bd\u17be\u0005g\u0000"+
58166 		"\u0000\u17be\u17c3\u0003\u0344\u01a2\u0000\u17bf\u17c0\u0005%\u0000\u0000"+
58167 		"\u17c0\u17c2\u0003\u0344\u01a2\u0000\u17c1\u17bf\u0001\u0000\u0000\u0000"+
58168 		"\u17c2\u17c5\u0001\u0000\u0000\u0000\u17c3\u17c1\u0001\u0000\u0000\u0000"+
58169 		"\u17c3\u17c4\u0001\u0000\u0000\u0000\u17c4\u17c7\u0001\u0000\u0000\u0000"+
58170 		"\u17c5\u17c3\u0001\u0000\u0000\u0000\u17c6\u17c8\u0005\u00fe\u0000\u0000"+
58171 		"\u17c7\u17c6\u0001\u0000\u0000\u0000\u17c7\u17c8\u0001\u0000\u0000\u0000"+
58172 		"\u17c8\u0351\u0001\u0000\u0000\u0000\u17c9\u17ca\u00057\u0000\u0000\u17ca"+
58173 		"\u17cb\u0005\u0102\u0000\u0000\u17cb\u17cc\u0005f\u0000\u0000\u17cc\u0353"+
58174 		"\u0001\u0000\u0000\u0000\u17cd\u17cf\u0005r\u0000\u0000\u17ce\u17d0\u0005"+
58175 		"\u0103\u0000\u0000\u17cf\u17ce\u0001\u0000\u0000\u0000\u17cf\u17d0\u0001"+
58176 		"\u0000\u0000\u0000\u17d0\u17e5\u0001\u0000\u0000\u0000\u17d1\u17e5\u0003"+
58177 		"\u0380\u01c0\u0000\u17d2\u17e5\u0003\u037e\u01bf\u0000\u17d3\u17e5\u0003"+
58178 		"\u0382\u01c1\u0000\u17d4\u17e5\u0003\u037a\u01bd\u0000\u17d5\u17e5\u0003"+
58179 		"\u0356\u01ab\u0000\u17d6\u17e5\u0003\u038e\u01c7\u0000\u17d7\u17e5\u0003"+
58180 		"\u035c\u01ae\u0000\u17d8\u17e5\u0003\u035e\u01af\u0000\u17d9\u17e5\u0003"+
58181 		"\u0366\u01b3\u0000\u17da\u17e5\u0003\u0378\u01bc\u0000\u17db\u17e5\u0003"+
58182 		"\u0384\u01c2\u0000\u17dc\u17e5\u0003\u0368\u01b4\u0000\u17dd\u17e5\u0003"+
58183 		"\u036a\u01b5\u0000\u17de\u17e5\u0003\u0358\u01ac\u0000\u17df\u17e5\u0003"+
58184 		"\u035a\u01ad\u0000\u17e0\u17e5\u0003\u036c\u01b6\u0000\u17e1\u17e5\u0003"+
58185 		"\u037c\u01be\u0000\u17e2\u17e5\u0003\u038a\u01c5\u0000\u17e3\u17e5\u0003"+
58186 		"\u038c\u01c6\u0000\u17e4\u17cd\u0001\u0000\u0000\u0000\u17e4\u17d1\u0001"+
58187 		"\u0000\u0000\u0000\u17e4\u17d2\u0001\u0000\u0000\u0000\u17e4\u17d3\u0001"+
58188 		"\u0000\u0000\u0000\u17e4\u17d4\u0001\u0000\u0000\u0000\u17e4\u17d5\u0001"+
58189 		"\u0000\u0000\u0000\u17e4\u17d6\u0001\u0000\u0000\u0000\u17e4\u17d7\u0001"+
58190 		"\u0000\u0000\u0000\u17e4\u17d8\u0001\u0000\u0000\u0000\u17e4\u17d9\u0001"+
58191 		"\u0000\u0000\u0000\u17e4\u17da\u0001\u0000\u0000\u0000\u17e4\u17db\u0001"+
58192 		"\u0000\u0000\u0000\u17e4\u17dc\u0001\u0000\u0000\u0000\u17e4\u17dd\u0001"+
58193 		"\u0000\u0000\u0000\u17e4\u17de\u0001\u0000\u0000\u0000\u17e4\u17df\u0001"+
58194 		"\u0000\u0000\u0000\u17e4\u17e0\u0001\u0000\u0000\u0000\u17e4\u17e1\u0001"+
58195 		"\u0000\u0000\u0000\u17e4\u17e2\u0001\u0000\u0000\u0000\u17e4\u17e3\u0001"+
58196 		"\u0000\u0000\u0000\u17e5\u0355\u0001\u0000\u0000\u0000\u17e6\u17f7\u0005"+
58197 		"3\u0000\u0000\u17e7\u17f7\u0005\u014c\u0000\u0000\u17e8\u17f7\u00051\u0000"+
58198 		"\u0000\u17e9\u17f7\u0005\u0146\u0000\u0000\u17ea\u17f7\u0005/\u0000\u0000"+
58199 		"\u17eb\u17f7\u0005\u0156\u0000\u0000\u17ec\u17f7\u0005\u0104\u0000\u0000"+
58200 		"\u17ed\u17f7\u0005.\u0000\u0000\u17ee\u17ef\u0005\u014e\u0000\u0000\u17ef"+
58201 		"\u17f7\u0005\u014f\u0000\u0000\u17f0\u17f7\u00050\u0000\u0000\u17f1\u17f2"+
58202 		"\u0005J\u0000\u0000\u17f2\u17f3\u0005\u0157\u0000\u0000\u17f3\u17f7\u0005"+
58203 		"\u0159\u0000\u0000\u17f4\u17f5\u0005J\u0000\u0000\u17f5\u17f7\u0005\u0150"+
58204 		"\u0000\u0000\u17f6\u17e6\u0001\u0000\u0000\u0000\u17f6\u17e7\u0001\u0000"+
58205 		"\u0000\u0000\u17f6\u17e8\u0001\u0000\u0000\u0000\u17f6\u17e9\u0001\u0000"+
58206 		"\u0000\u0000\u17f6\u17ea\u0001\u0000\u0000\u0000\u17f6\u17eb\u0001\u0000"+
58207 		"\u0000\u0000\u17f6\u17ec\u0001\u0000\u0000\u0000\u17f6\u17ed\u0001\u0000"+
58208 		"\u0000\u0000\u17f6\u17ee\u0001\u0000\u0000\u0000\u17f6\u17f0\u0001\u0000"+
58209 		"\u0000\u0000\u17f6\u17f1\u0001\u0000\u0000\u0000\u17f6\u17f4\u0001\u0000"+
58210 		"\u0000\u0000\u17f7\u0357\u0001\u0000\u0000\u0000\u17f8\u17f9\u0005\u016b"+
58211 		"\u0000\u0000\u17f9\u17fa\u0005\u016c\u0000\u0000\u17fa\u1846\u0005\u016d"+
58212 		"\u0000\u0000\u17fb\u1801\u00053\u0000\u0000\u17fc\u1802\u0005\u015a\u0000"+
58213 		"\u0000\u17fd\u1802\u0005\u015b\u0000\u0000\u17fe\u1802\u0005\u0158\u0000"+
58214 		"\u0000\u17ff\u1800\u0005\u0155\u0000\u0000\u1800\u1802\u0005\u015c\u0000"+
58215 		"\u0000\u1801\u17fc\u0001\u0000\u0000\u0000\u1801\u17fd\u0001\u0000\u0000"+
58216 		"\u0000\u1801\u17fe\u0001\u0000\u0000\u0000\u1801\u17ff\u0001\u0000\u0000"+
58217 		"\u0000\u1802\u1846\u0001\u0000\u0000\u0000\u1803\u1804\u00053\u0000\u0000"+
58218 		"\u1804\u1816\u0005s\u0000\u0000\u1805\u1806\u0005\u015d\u0000\u0000\u1806"+
58219 		"\u1817\u0005v\u0000\u0000\u1807\u1817\u0005\u014a\u0000\u0000\u1808\u1817"+
58220 		"\u0005\u015e\u0000\u0000\u1809\u1817\u0005\u00cc\u0000\u0000\u180a\u1817"+
58221 		"\u0005\u015f\u0000\u0000\u180b\u180c\u0005\u0160\u0000\u0000\u180c\u1817"+
58222 		"\u0005\u0161\u0000\u0000\u180d\u180e\u0005\u0160\u0000\u0000\u180e\u1817"+
58223 		"\u0005\u0148\u0000\u0000\u180f\u1810\u0005\u0162\u0000\u0000\u1810\u1817"+
58224 		"\u0005\u0155\u0000\u0000\u1811\u1817\u0005\u012a\u0000\u0000\u1812\u1813"+
58225 		"\u0005\u0155\u0000\u0000\u1813\u1817\u0005\u0163\u0000\u0000\u1814\u1815"+
58226 		"\u0005\u0155\u0000\u0000\u1815\u1817\u0005\u0106\u0000\u0000\u1816\u1805"+
58227 		"\u0001\u0000\u0000\u0000\u1816\u1807\u0001\u0000\u0000\u0000\u1816\u1808"+
58228 		"\u0001\u0000\u0000\u0000\u1816\u1809\u0001\u0000\u0000\u0000\u1816\u180a"+
58229 		"\u0001\u0000\u0000\u0000\u1816\u180b\u0001\u0000\u0000\u0000\u1816\u180d"+
58230 		"\u0001\u0000\u0000\u0000\u1816\u180f\u0001\u0000\u0000\u0000\u1816\u1811"+
58231 		"\u0001\u0000\u0000\u0000\u1816\u1812\u0001\u0000\u0000\u0000\u1816\u1814"+
58232 		"\u0001\u0000\u0000\u0000\u1817\u1846\u0001\u0000\u0000\u0000\u1818\u1819"+
58233 		"\u0005\u0168\u0000\u0000\u1819\u1846\u0005\u0155\u0000\u0000\u181a\u181b"+
58234 		"\u0005\u0149\u0000\u0000\u181b\u181c\u0005s\u0000\u0000\u181c\u1846\u0005"+
58235 		"\u00cc\u0000\u0000\u181d\u181e\u0005\u0149\u0000\u0000\u181e\u1846\u0005"+
58236 		"\u00a4\u0000\u0000\u181f\u1820\u0005\u014c\u0000\u0000\u1820\u1846\u0005"+
58237 		"\u0155\u0000\u0000\u1821\u1822\u00052\u0000\u0000\u1822\u1823\u0005s\u0000"+
58238 		"\u0000\u1823\u1846\u0005\u00cc\u0000\u0000\u1824\u1830\u00052\u0000\u0000"+
58239 		"\u1825\u1826\u0005\u015d\u0000\u0000\u1826\u1831\u0005v\u0000\u0000\u1827"+
58240 		"\u1828\u0005\u0164\u0000\u0000\u1828\u1829\u0005\u0160\u0000\u0000\u1829"+
58241 		"\u1831\u0005\u0161\u0000\u0000\u182a\u1831\u0005\u015f\u0000\u0000\u182b"+
58242 		"\u182c\u0005\u0155\u0000\u0000\u182c\u1831\u0005\u0106\u0000\u0000\u182d"+
58243 		"\u182e\u0005\u0158\u0000\u0000\u182e\u182f\u0005\u0160\u0000\u0000\u182f"+
58244 		"\u1831\u0005\u0161\u0000\u0000\u1830\u1825\u0001\u0000\u0000\u0000\u1830"+
58245 		"\u1827\u0001\u0000\u0000\u0000\u1830\u182a\u0001\u0000\u0000\u0000\u1830"+
58246 		"\u182b\u0001\u0000\u0000\u0000\u1830\u182d\u0001\u0000\u0000\u0000\u1831"+
58247 		"\u1846\u0001\u0000\u0000\u0000\u1832\u1833\u0005\u0169\u0000\u0000\u1833"+
58248 		"\u1834\u0005\u016a\u0000\u0000\u1834\u1846\u0005\u0152\u0000\u0000\u1835"+
58249 		"\u1836\u0005\u0166\u0000\u0000\u1836\u1837\u0005s\u0000\u0000\u1837\u1846"+
58250 		"\u0005\u012a\u0000\u0000\u1838\u1839\u0005.\u0000\u0000\u1839\u183a\u0005"+
58251 		"r\u0000\u0000\u183a\u183b\u0005\u0105\u0000\u0000\u183b\u1846\u0005\u0167"+
58252 		"\u0000\u0000\u183c\u1846\u0005\u016f\u0000\u0000\u183d\u183e\u0005\u016e"+
58253 		"\u0000\u0000\u183e\u1846\u0005\u0152\u0000\u0000\u183f\u1840\u0005J\u0000"+
58254 		"\u0000\u1840\u1841\u0005s\u0000\u0000\u1841\u1846\u0007\\\u0000\u0000"+
58255 		"\u1842\u1843\u0005J\u0000\u0000\u1843\u1844\u0005\u0155\u0000\u0000\u1844"+
58256 		"\u1846\u0005\u015c\u0000\u0000\u1845\u17f8\u0001\u0000\u0000\u0000\u1845"+
58257 		"\u17fb\u0001\u0000\u0000\u0000\u1845\u1803\u0001\u0000\u0000\u0000\u1845"+
58258 		"\u1818\u0001\u0000\u0000\u0000\u1845\u181a\u0001\u0000\u0000\u0000\u1845"+
58259 		"\u181d\u0001\u0000\u0000\u0000\u1845\u181f\u0001\u0000\u0000\u0000\u1845"+
58260 		"\u1821\u0001\u0000\u0000\u0000\u1845\u1824\u0001\u0000\u0000\u0000\u1845"+
58261 		"\u1832\u0001\u0000\u0000\u0000\u1845\u1835\u0001\u0000\u0000\u0000\u1845"+
58262 		"\u1838\u0001\u0000\u0000\u0000\u1845\u183c\u0001\u0000\u0000\u0000\u1845"+
58263 		"\u183d\u0001\u0000\u0000\u0000\u1845\u183f\u0001\u0000\u0000\u0000\u1845"+
58264 		"\u1842\u0001\u0000\u0000\u0000\u1846\u0359\u0001\u0000\u0000\u0000\u1847"+
58265 		"\u1849\u0005\u014c\u0000\u0000\u1848\u184a\u0005\u0155\u0000\u0000\u1849"+
58266 		"\u1848\u0001\u0000\u0000\u0000\u1849\u184a\u0001\u0000\u0000\u0000\u184a"+
58267 		"\u185a\u0001\u0000\u0000\u0000\u184b\u185a\u0005\u0166\u0000\u0000\u184c"+
58268 		"\u184e\u0005J\u0000\u0000\u184d\u184f\u0005s\u0000\u0000\u184e\u184d\u0001"+
58269 		"\u0000\u0000\u0000\u184e\u184f\u0001\u0000\u0000\u0000\u184f\u1850\u0001"+
58270 		"\u0000\u0000\u0000\u1850\u185a\u0005\u0150\u0000\u0000\u1851\u185a\u0005"+
58271 		"3\u0000\u0000\u1852\u1853\u00053\u0000\u0000\u1853\u1857\u0005s\u0000"+
58272 		"\u0000\u1854\u1858\u0005\u012a\u0000\u0000\u1855\u1856\u0005\u0155\u0000"+
58273 		"\u0000\u1856\u1858\u0005\u0106\u0000\u0000\u1857\u1854\u0001\u0000\u0000"+
58274 		"\u0000\u1857\u1855\u0001\u0000\u0000\u0000\u1858\u185a\u0001\u0000\u0000"+
58275 		"\u0000\u1859\u1847\u0001\u0000\u0000\u0000\u1859\u184b\u0001\u0000\u0000"+
58276 		"\u0000\u1859\u184c\u0001\u0000\u0000\u0000\u1859\u1851\u0001\u0000\u0000"+
58277 		"\u0000\u1859\u1852\u0001\u0000\u0000\u0000\u185a\u035b\u0001\u0000\u0000"+
58278 		"\u0000\u185b\u185c\u0005\u016b\u0000\u0000\u185c\u185d\u0005\u00cc\u0000"+
58279 		"\u0000\u185d\u185e\u0005\u016c\u0000\u0000\u185e\u1903\u0005\u016d\u0000"+
58280 		"\u0000\u185f\u1903\u00053\u0000\u0000\u1860\u1861\u00053\u0000\u0000\u1861"+
58281 		"\u1903\u0005\u0158\u0000\u0000\u1862\u1863\u00053\u0000\u0000\u1863\u189d"+
58282 		"\u0005s\u0000\u0000\u1864\u1865\u0005\u0151\u0000\u0000\u1865\u189e\u0005"+
58283 		"\u0106\u0000\u0000\u1866\u189e\u0005\u0152\u0000\u0000\u1867\u186c\u0005"+
58284 		"\u0153\u0000\u0000\u1868\u186c\u0005\u0154\u0000\u0000\u1869\u186a\u0005"+
58285 		"<\u0000\u0000\u186a\u186c\u0005\u0176\u0000\u0000\u186b\u1867\u0001\u0000"+
58286 		"\u0000\u0000\u186b\u1868\u0001\u0000\u0000\u0000\u186b\u1869\u0001\u0000"+
58287 		"\u0000\u0000\u186c\u186d\u0001\u0000\u0000\u0000\u186d\u189e\u0005C\u0000"+
58288 		"\u0000\u186e\u189e\u0005\u0174\u0000\u0000\u186f\u189e\u0005\u014a\u0000"+
58289 		"\u0000\u1870\u1871\u0005<\u0000\u0000\u1871\u1872\u0005\u0177\u0000\u0000"+
58290 		"\u1872\u1873\u0005C\u0000\u0000\u1873\u189e\u0005\u0150\u0000\u0000\u1874"+
58291 		"\u189e\u0005\u0175\u0000\u0000\u1875\u187f\u0005\u00cc\u0000\u0000\u1876"+
58292 		"\u1880\u0005\u0163\u0000\u0000\u1877\u1878\u0005\u0164\u0000\u0000\u1878"+
58293 		"\u1880\u0005G\u0000\u0000\u1879\u187a\u0005\u0160\u0000\u0000\u187a\u1880"+
58294 		"\u0005\u0161\u0000\u0000\u187b\u187c\u0005\u0160\u0000\u0000\u187c\u1880"+
58295 		"\u0005\u0148\u0000\u0000\u187d\u187e\u0005\u0170\u0000\u0000\u187e\u1880"+
58296 		"\u0005\u0171\u0000\u0000\u187f\u1876\u0001\u0000\u0000\u0000\u187f\u1877"+
58297 		"\u0001\u0000\u0000\u0000\u187f\u1879\u0001\u0000\u0000\u0000\u187f\u187b"+
58298 		"\u0001\u0000\u0000\u0000\u187f\u187d\u0001\u0000\u0000\u0000\u187f\u1880"+
58299 		"\u0001\u0000\u0000\u0000\u1880\u189e\u0001\u0000\u0000\u0000\u1881\u189e"+
58300 		"\u0005\u0172\u0000\u0000\u1882\u1883\u0005\u0160\u0000\u0000\u1883\u189e"+
58301 		"\u0007]\u0000\u0000\u1884\u188a\u0005\u0169\u0000\u0000\u1885\u1886\u0005"+
58302 		"\u0178\u0000\u0000\u1886\u188b\u0005\u0179\u0000\u0000\u1887\u1888\u0005"+
58303 		"\u017a\u0000\u0000\u1888\u188b\u0005\u017b\u0000\u0000\u1889\u188b\u0005"+
58304 		"\u017c\u0000\u0000\u188a\u1885\u0001\u0000\u0000\u0000\u188a\u1887\u0001"+
58305 		"\u0000\u0000\u0000\u188a\u1889\u0001\u0000\u0000\u0000\u188b\u189e\u0001"+
58306 		"\u0000\u0000\u0000\u188c\u188d\u0005\u017d\u0000\u0000\u188d\u189e\u0005"+
58307 		"\u014b\u0000\u0000\u188e\u189e\u0005\u017e\u0000\u0000\u188f\u1890\u0005"+
58308 		"\u0180\u0000\u0000\u1890\u189e\u0005\u00b0\u0000\u0000\u1891\u1892\u0005"+
58309 		"\u0181\u0000\u0000\u1892\u1893\u0005\u0173\u0000\u0000\u1893\u189e\u0005"+
58310 		"\u0182\u0000\u0000\u1894\u189e\u0005\u0106\u0000\u0000\u1895\u189e\u0005"+
58311 		"\u0183\u0000\u0000\u1896\u1897\u0005\u0155\u0000\u0000\u1897\u189e\u0005"+
58312 		"\u0163\u0000\u0000\u1898\u189e\u00056\u0000\u0000\u1899\u189a\u0005\u0184"+
58313 		"\u0000\u0000\u189a\u189e\u0005\u0185\u0000\u0000\u189b\u189e\u0005\u0173"+
58314 		"\u0000\u0000\u189c\u189e\u0005\u0105\u0000\u0000\u189d\u1864\u0001\u0000"+
58315 		"\u0000\u0000\u189d\u1866\u0001\u0000\u0000\u0000\u189d\u186b\u0001\u0000"+
58316 		"\u0000\u0000\u189d\u186e\u0001\u0000\u0000\u0000\u189d\u186f\u0001\u0000"+
58317 		"\u0000\u0000\u189d\u1870\u0001\u0000\u0000\u0000\u189d\u1874\u0001\u0000"+
58318 		"\u0000\u0000\u189d\u1875\u0001\u0000\u0000\u0000\u189d\u1881\u0001\u0000"+
58319 		"\u0000\u0000\u189d\u1882\u0001\u0000\u0000\u0000\u189d\u1884\u0001\u0000"+
58320 		"\u0000\u0000\u189d\u188c\u0001\u0000\u0000\u0000\u189d\u188e\u0001\u0000"+
58321 		"\u0000\u0000\u189d\u188f\u0001\u0000\u0000\u0000\u189d\u1891\u0001\u0000"+
58322 		"\u0000\u0000\u189d\u1894\u0001\u0000\u0000\u0000\u189d\u1895\u0001\u0000"+
58323 		"\u0000\u0000\u189d\u1896\u0001\u0000\u0000\u0000\u189d\u1898\u0001\u0000"+
58324 		"\u0000\u0000\u189d\u1899\u0001\u0000\u0000\u0000\u189d\u189b\u0001\u0000"+
58325 		"\u0000\u0000\u189d\u189c\u0001\u0000\u0000\u0000\u189e\u1903\u0001\u0000"+
58326 		"\u0000\u0000\u189f\u18a1\u0005\u0168\u0000\u0000\u18a0\u18a2\u0005\u0155"+
58327 		"\u0000\u0000\u18a1\u18a0\u0001\u0000\u0000\u0000\u18a1\u18a2\u0001\u0000"+
58328 		"\u0000\u0000\u18a2\u1903\u0001\u0000\u0000\u0000\u18a3\u18a4\u0005\u018d"+
58329 		"\u0000\u0000\u18a4\u1903\u0007^\u0000\u0000\u18a5\u1903\u0005\u0193\u0000"+
58330 		"\u0000\u18a6\u1903\u0005\u0149\u0000\u0000\u18a7\u18a9\u0005\u0149\u0000"+
58331 		"\u0000\u18a8\u18aa\u0005\u013c\u0000\u0000\u18a9\u18a8\u0001\u0000\u0000"+
58332 		"\u0000\u18a9\u18aa\u0001\u0000\u0000\u0000\u18aa\u1903\u0001\u0000\u0000"+
58333 		"\u0000\u18ab\u18ad\u0005\u014c\u0000\u0000\u18ac\u18ae\u0005\u0155\u0000"+
58334 		"\u0000\u18ad\u18ac\u0001\u0000\u0000\u0000\u18ad\u18ae\u0001\u0000\u0000"+
58335 		"\u0000\u18ae\u1903\u0001\u0000\u0000\u0000\u18af\u18d4\u00052\u0000\u0000"+
58336 		"\u18b0\u18d5\u0005\u0186\u0000\u0000\u18b1\u18d5\u0005\u0152\u0000\u0000"+
58337 		"\u18b2\u18b3\u0007_\u0000\u0000\u18b3\u18d5\u0005C\u0000\u0000\u18b4\u18d5"+
58338 		"\u0005\u0174\u0000\u0000\u18b5\u18d5\u0005\u0175\u0000\u0000\u18b6\u18d5"+
58339 		"\u0005\u00cc\u0000\u0000\u18b7\u18b9\u0005\u00cc\u0000\u0000\u18b8\u18b7"+
58340 		"\u0001\u0000\u0000\u0000\u18b8\u18b9\u0001\u0000\u0000\u0000\u18b9\u18ba"+
58341 		"\u0001\u0000\u0000\u0000\u18ba\u18bb\u0005\u0164\u0000\u0000\u18bb\u18bc"+
58342 		"\u0005\u0160\u0000\u0000\u18bc\u18d5\u0005\u0161\u0000\u0000\u18bd\u18d5"+
58343 		"\u0005\u009a\u0000\u0000\u18be\u18bf\u0005\u017d\u0000\u0000\u18bf\u18d5"+
58344 		"\u0005\u014b\u0000\u0000\u18c0\u18d5\u0005F\u0000\u0000\u18c1\u18c2\u0005"+
58345 		"\u0180\u0000\u0000\u18c2\u18d5\u0005\u00b0\u0000\u0000\u18c3\u18d5\u0005"+
58346 		"H\u0000\u0000\u18c4\u18d5\u0005\u0187\u0000\u0000\u18c5\u18c6\u0005\u0181"+
58347 		"\u0000\u0000\u18c6\u18c7\u0005\u0173\u0000\u0000\u18c7\u18d5\u0005\u0182"+
58348 		"\u0000\u0000\u18c8\u18d5\u0005\u0106\u0000\u0000\u18c9\u18d5\u0005\u0183"+
58349 		"\u0000\u0000\u18ca\u18d5\u0005\u0188\u0000\u0000\u18cb\u18d5\u00056\u0000"+
58350 		"\u0000\u18cc\u18d5\u0005\u0173\u0000\u0000\u18cd\u18d5\u0005\u0189\u0000"+
58351 		"\u0000\u18ce\u18d5\u0005;\u0000\u0000\u18cf\u18d5\u0005\u00b0\u0000\u0000"+
58352 		"\u18d0\u18d5\u0005J\u0000\u0000\u18d1\u18d2\u0005\u0165\u0000\u0000\u18d2"+
58353 		"\u18d3\u00056\u0000\u0000\u18d3\u18d5\u0005\u018a\u0000\u0000\u18d4\u18b0"+
58354 		"\u0001\u0000\u0000\u0000\u18d4\u18b1\u0001\u0000\u0000\u0000\u18d4\u18b2"+
58355 		"\u0001\u0000\u0000\u0000\u18d4\u18b4\u0001\u0000\u0000\u0000\u18d4\u18b5"+
58356 		"\u0001\u0000\u0000\u0000\u18d4\u18b6\u0001\u0000\u0000\u0000\u18d4\u18b8"+
58357 		"\u0001\u0000\u0000\u0000\u18d4\u18bd\u0001\u0000\u0000\u0000\u18d4\u18be"+
58358 		"\u0001\u0000\u0000\u0000\u18d4\u18c0\u0001\u0000\u0000\u0000\u18d4\u18c1"+
58359 		"\u0001\u0000\u0000\u0000\u18d4\u18c3\u0001\u0000\u0000\u0000\u18d4\u18c4"+
58360 		"\u0001\u0000\u0000\u0000\u18d4\u18c5\u0001\u0000\u0000\u0000\u18d4\u18c8"+
58361 		"\u0001\u0000\u0000\u0000\u18d4\u18c9\u0001\u0000\u0000\u0000\u18d4\u18ca"+
58362 		"\u0001\u0000\u0000\u0000\u18d4\u18cb\u0001\u0000\u0000\u0000\u18d4\u18cc"+
58363 		"\u0001\u0000\u0000\u0000\u18d4\u18cd\u0001\u0000\u0000\u0000\u18d4\u18ce"+
58364 		"\u0001\u0000\u0000\u0000\u18d4\u18cf\u0001\u0000\u0000\u0000\u18d4\u18d0"+
58365 		"\u0001\u0000\u0000\u0000\u18d4\u18d1\u0001\u0000\u0000\u0000\u18d5\u1903"+
58366 		"\u0001\u0000\u0000\u0000\u18d6\u1903\u00051\u0000\u0000\u18d7\u1903\u0005"+
58367 		"\u0146\u0000\u0000\u18d8\u18da\u0005\u0146\u0000\u0000\u18d9\u18db\u0005"+
58368 		"s\u0000\u0000\u18da\u18d9\u0001\u0000\u0000\u0000\u18da\u18db\u0001\u0000"+
58369 		"\u0000\u0000\u18db\u18dc\u0001\u0000\u0000\u0000\u18dc\u18dd\u0005\u0169"+
58370 		"\u0000\u0000\u18dd\u1903\u0005\u018b\u0000\u0000\u18de\u1903\u0005/\u0000"+
58371 		"\u0000\u18df\u18e0\u0005\u018c\u0000\u0000\u18e0\u18e1\u0005\u00cc\u0000"+
58372 		"\u0000\u18e1\u1903\u0005\u014a\u0000\u0000\u18e2\u1903\u0005\u0104\u0000"+
58373 		"\u0000\u18e3\u1903\u0005.\u0000\u0000\u18e4\u1903\u0005\u018f\u0000\u0000"+
58374 		"\u18e5\u18e6\u0005\u0190\u0000\u0000\u18e6\u18e7\u0005\u0191\u0000\u0000"+
58375 		"\u18e7\u1903\u0005\u0192\u0000\u0000\u18e8\u18e9\u0005\u014e\u0000\u0000"+
58376 		"\u18e9\u1903\u0005\u014f\u0000\u0000\u18ea\u1903\u0005\u017f\u0000\u0000"+
58377 		"\u18eb\u1903\u00050\u0000\u0000\u18ec\u18ed\u0005J\u0000\u0000\u18ed\u18ee"+
58378 		"\u0005s\u0000\u0000\u18ee\u18ef\u0005<\u0000\u0000\u18ef\u18f0\u0007`"+
58379 		"\u0000\u0000\u18f0\u18f1\u0005C\u0000\u0000\u18f1\u1903\u0005\u0150\u0000"+
58380 		"\u0000\u18f2\u18f3\u00052\u0000\u0000\u18f3\u18f7\u0005s\u0000\u0000\u18f4"+
58381 		"\u18f8\u0005\u00cc\u0000\u0000\u18f5\u18f6\u0005\u0169\u0000\u0000\u18f6"+
58382 		"\u18f8\u0005\u017c\u0000\u0000\u18f7\u18f4\u0001\u0000\u0000\u0000\u18f7"+
58383 		"\u18f5\u0001\u0000\u0000\u0000\u18f8\u1903\u0001\u0000\u0000\u0000\u18f9"+
58384 		"\u18fa\u0005J\u0000\u0000\u18fa\u18fb\u0007a\u0000\u0000\u18fb\u1903\u0005"+
58385 		"\u015c\u0000\u0000\u18fc\u18fe\u0005J\u0000\u0000\u18fd\u18ff\u0005s\u0000"+
58386 		"\u0000\u18fe\u18fd\u0001\u0000\u0000\u0000\u18fe\u18ff\u0001\u0000\u0000"+
58387 		"\u0000\u18ff\u1900\u0001\u0000\u0000\u0000\u1900\u1903\u0005\u0150\u0000"+
58388 		"\u0000\u1901\u1903\u0001\u0000\u0000\u0000\u1902\u185b\u0001\u0000\u0000"+
58389 		"\u0000\u1902\u185f\u0001\u0000\u0000\u0000\u1902\u1860\u0001\u0000\u0000"+
58390 		"\u0000\u1902\u1862\u0001\u0000\u0000\u0000\u1902\u189f\u0001\u0000\u0000"+
58391 		"\u0000\u1902\u18a3\u0001\u0000\u0000\u0000\u1902\u18a5\u0001\u0000\u0000"+
58392 		"\u0000\u1902\u18a6\u0001\u0000\u0000\u0000\u1902\u18a7\u0001\u0000\u0000"+
58393 		"\u0000\u1902\u18ab\u0001\u0000\u0000\u0000\u1902\u18af\u0001\u0000\u0000"+
58394 		"\u0000\u1902\u18d6\u0001\u0000\u0000\u0000\u1902\u18d7\u0001\u0000\u0000"+
58395 		"\u0000\u1902\u18d8\u0001\u0000\u0000\u0000\u1902\u18de\u0001\u0000\u0000"+
58396 		"\u0000\u1902\u18df\u0001\u0000\u0000\u0000\u1902\u18e2\u0001\u0000\u0000"+
58397 		"\u0000\u1902\u18e3\u0001\u0000\u0000\u0000\u1902\u18e4\u0001\u0000\u0000"+
58398 		"\u0000\u1902\u18e5\u0001\u0000\u0000\u0000\u1902\u18e8\u0001\u0000\u0000"+
58399 		"\u0000\u1902\u18ea\u0001\u0000\u0000\u0000\u1902\u18eb\u0001\u0000\u0000"+
58400 		"\u0000\u1902\u18ec\u0001\u0000\u0000\u0000\u1902\u18f2\u0001\u0000\u0000"+
58401 		"\u0000\u1902\u18f9\u0001\u0000\u0000\u0000\u1902\u18fc\u0001\u0000\u0000"+
58402 		"\u0000\u1902\u1901\u0001\u0000\u0000\u0000\u1903\u035d\u0001\u0000\u0000"+
58403 		"\u0000\u1904\u1908\u0003\u0360\u01b0\u0000\u1905\u1908\u0003\u0362\u01b1"+
58404 		"\u0000\u1906\u1908\u0003\u0364\u01b2\u0000\u1907\u1904\u0001\u0000\u0000"+
58405 		"\u0000\u1907\u1905\u0001\u0000\u0000\u0000\u1907\u1906\u0001\u0000\u0000"+
58406 		"\u0000\u1908\u035f\u0001\u0000\u0000\u0000\u1909\u1912\u0005\u014c\u0000"+
58407 		"\u0000\u190a\u1912\u0005\u0166\u0000\u0000\u190b\u1912\u00053\u0000\u0000"+
58408 		"\u190c\u190d\u0005J\u0000\u0000\u190d\u1912\u0005\u0150\u0000\u0000\u190e"+
58409 		"\u190f\u00053\u0000\u0000\u190f\u1910\u0005s\u0000\u0000\u1910\u1912\u0005"+
58410 		"\u0105\u0000\u0000\u1911\u1909\u0001\u0000\u0000\u0000\u1911\u190a\u0001"+
58411 		"\u0000\u0000\u0000\u1911\u190b\u0001\u0000\u0000\u0000\u1911\u190c\u0001"+
58412 		"\u0000\u0000\u0000\u1911\u190e\u0001\u0000\u0000\u0000\u1912\u0361\u0001"+
58413 		"\u0000\u0000\u0000\u1913\u191d\u0005\u014c\u0000\u0000\u1914\u1915\u0005"+
58414 		"\u014e\u0000\u0000\u1915\u191d\u0005\u014f\u0000\u0000\u1916\u191d\u0005"+
58415 		"3\u0000\u0000\u1917\u1918\u0005J\u0000\u0000\u1918\u191d\u0005\u0150\u0000"+
58416 		"\u0000\u1919\u191a\u00053\u0000\u0000\u191a\u191b\u0005s\u0000\u0000\u191b"+
58417 		"\u191d\u0005\u0106\u0000\u0000\u191c\u1913\u0001\u0000\u0000\u0000\u191c"+
58418 		"\u1914\u0001\u0000\u0000\u0000\u191c\u1916\u0001\u0000\u0000\u0000\u191c"+
58419 		"\u1917\u0001\u0000\u0000\u0000\u191c\u1919\u0001\u0000\u0000\u0000\u191d"+
58420 		"\u0363\u0001\u0000\u0000\u0000\u191e\u1927\u0005\u014c\u0000\u0000\u191f"+
58421 		"\u1927\u00053\u0000\u0000\u1920\u1921\u0005J\u0000\u0000\u1921\u1927\u0005"+
58422 		"\u0150\u0000\u0000\u1922\u1923\u00053\u0000\u0000\u1923\u1924\u0005s\u0000"+
58423 		"\u0000\u1924\u1925\u0005\u0151\u0000\u0000\u1925\u1927\u0005\u0106\u0000"+
58424 		"\u0000\u1926\u191e\u0001\u0000\u0000\u0000\u1926\u191f\u0001\u0000\u0000"+
58425 		"\u0000\u1926\u1920\u0001\u0000\u0000\u0000\u1926\u1922\u0001\u0000\u0000"+
58426 		"\u0000\u1927\u0365\u0001\u0000\u0000\u0000\u1928\u1930\u0005\u014c\u0000"+
58427 		"\u0000\u1929\u192a\u0005\u014e\u0000\u0000\u192a\u1930\u0005\u014f\u0000"+
58428 		"\u0000\u192b\u1930\u00053\u0000\u0000\u192c\u1930\u0005\u0104\u0000\u0000"+
58429 		"\u192d\u192e\u0005J\u0000\u0000\u192e\u1930\u0005\u0150\u0000\u0000\u192f"+
58430 		"\u1928\u0001\u0000\u0000\u0000\u192f\u1929\u0001\u0000\u0000\u0000\u192f"+
58431 		"\u192b\u0001\u0000\u0000\u0000\u192f\u192c\u0001\u0000\u0000\u0000\u192f"+
58432 		"\u192d\u0001\u0000\u0000\u0000\u1930\u0367\u0001\u0000\u0000\u0000\u1931"+
58433 		"\u1946\u00053\u0000\u0000\u1932\u1946\u0005\u014c\u0000\u0000\u1933\u1934"+
58434 		"\u00052\u0000\u0000\u1934\u1946\u0005\u0194\u0000\u0000\u1935\u1946\u0005"+
58435 		"1\u0000\u0000\u1936\u1946\u0005\u0146\u0000\u0000\u1937\u1946\u0005/\u0000"+
58436 		"\u0000\u1938\u1946\u0005\u0104\u0000\u0000\u1939\u1946\u0005.\u0000\u0000"+
58437 		"\u193a\u193b\u0005\u014e\u0000\u0000\u193b\u1946\u0005\u014f\u0000\u0000"+
58438 		"\u193c\u1946\u00050\u0000\u0000\u193d\u193e\u0005J\u0000\u0000\u193e\u193f"+
58439 		"\u0005\u0157\u0000\u0000\u193f\u1946\u0005\u0159\u0000\u0000\u1940\u1941"+
58440 		"\u0005J\u0000\u0000\u1941\u1946\u0005\u0150\u0000\u0000\u1942\u1943\u0005"+
58441 		"3\u0000\u0000\u1943\u1944\u0005s\u0000\u0000\u1944\u1946\u00056\u0000"+
58442 		"\u0000\u1945\u1931\u0001\u0000\u0000\u0000\u1945\u1932\u0001\u0000\u0000"+
58443 		"\u0000\u1945\u1933\u0001\u0000\u0000\u0000\u1945\u1935\u0001\u0000\u0000"+
58444 		"\u0000\u1945\u1936\u0001\u0000\u0000\u0000\u1945\u1937\u0001\u0000\u0000"+
58445 		"\u0000\u1945\u1938\u0001\u0000\u0000\u0000\u1945\u1939\u0001\u0000\u0000"+
58446 		"\u0000\u1945\u193a\u0001\u0000\u0000\u0000\u1945\u193c\u0001\u0000\u0000"+
58447 		"\u0000\u1945\u193d\u0001\u0000\u0000\u0000\u1945\u1940\u0001\u0000\u0000"+
58448 		"\u0000\u1945\u1942\u0001\u0000\u0000\u0000\u1946\u0369\u0001\u0000\u0000"+
58449 		"\u0000\u1947\u1953\u00053\u0000\u0000\u1948\u1953\u0005\u014c\u0000\u0000"+
58450 		"\u1949\u1953\u0005\u0104\u0000\u0000\u194a\u194b\u0005\u014e\u0000\u0000"+
58451 		"\u194b\u1953\u0005\u014f\u0000\u0000\u194c\u194d\u0005J\u0000\u0000\u194d"+
58452 		"\u1953\u0005\u0150\u0000\u0000\u194e\u194f\u00053\u0000\u0000\u194f\u1950"+
58453 		"\u0005s\u0000\u0000\u1950\u1951\u0005\u017d\u0000\u0000\u1951\u1953\u0005"+
58454 		"\u014b\u0000\u0000\u1952\u1947\u0001\u0000\u0000\u0000\u1952\u1948\u0001"+
58455 		"\u0000\u0000\u0000\u1952\u1949\u0001\u0000\u0000\u0000\u1952\u194a\u0001"+
58456 		"\u0000\u0000\u0000\u1952\u194c\u0001\u0000\u0000\u0000\u1952\u194e\u0001"+
58457 		"\u0000\u0000\u0000\u1953\u036b\u0001\u0000\u0000\u0000\u1954\u195a\u0003"+
58458 		"\u036e\u01b7\u0000\u1955\u195a\u0003\u0370\u01b8\u0000\u1956\u195a\u0003"+
58459 		"\u0372\u01b9\u0000\u1957\u195a\u0003\u0374\u01ba\u0000\u1958\u195a\u0003"+
58460 		"\u0376\u01bb\u0000\u1959\u1954\u0001\u0000\u0000\u0000\u1959\u1955\u0001"+
58461 		"\u0000\u0000\u0000\u1959\u1956\u0001\u0000\u0000\u0000\u1959\u1957\u0001"+
58462 		"\u0000\u0000\u0000\u1959\u1958\u0001\u0000\u0000\u0000\u195a\u036d\u0001"+
58463 		"\u0000\u0000\u0000\u195b\u1966\u0005\u014c\u0000\u0000\u195c\u195d\u0005"+
58464 		"\u014e\u0000\u0000\u195d\u1966\u0005\u014f\u0000\u0000\u195e\u1966\u0005"+
58465 		"3\u0000\u0000\u195f\u1966\u0005\u0104\u0000\u0000\u1960\u1961\u0005J\u0000"+
58466 		"\u0000\u1961\u1966\u0005\u0150\u0000\u0000\u1962\u1963\u00053\u0000\u0000"+
58467 		"\u1963\u1964\u0005s\u0000\u0000\u1964\u1966\u0005\u0175\u0000\u0000\u1965"+
58468 		"\u195b\u0001\u0000\u0000\u0000\u1965\u195c\u0001\u0000\u0000\u0000\u1965"+
58469 		"\u195e\u0001\u0000\u0000\u0000\u1965\u195f\u0001\u0000\u0000\u0000\u1965"+
58470 		"\u1960\u0001\u0000\u0000\u0000\u1965\u1962\u0001\u0000\u0000\u0000\u1966"+
58471 		"\u036f\u0001\u0000\u0000\u0000\u1967\u1973\u0005\u014c\u0000\u0000\u1968"+
58472 		"\u1969\u0005\u014e\u0000\u0000\u1969\u1973\u0005\u014f\u0000\u0000\u196a"+
58473 		"\u1973\u00053\u0000\u0000\u196b\u1973\u0005\u0104\u0000\u0000\u196c\u196d"+
58474 		"\u0005J\u0000\u0000\u196d\u1973\u0005\u0150\u0000\u0000\u196e\u196f\u0005"+
58475 		"3\u0000\u0000\u196f\u1970\u0005s\u0000\u0000\u1970\u1971\u0005\u0180\u0000"+
58476 		"\u0000\u1971\u1973\u0005\u00b0\u0000\u0000\u1972\u1967\u0001\u0000\u0000"+
58477 		"\u0000\u1972\u1968\u0001\u0000\u0000\u0000\u1972\u196a\u0001\u0000\u0000"+
58478 		"\u0000\u1972\u196b\u0001\u0000\u0000\u0000\u1972\u196c\u0001\u0000\u0000"+
58479 		"\u0000\u1972\u196e\u0001\u0000\u0000\u0000\u1973\u0371\u0001\u0000\u0000"+
58480 		"\u0000\u1974\u1980\u0005\u014c\u0000\u0000\u1975\u1976\u0005\u014e\u0000"+
58481 		"\u0000\u1976\u1980\u0005\u014f\u0000\u0000\u1977\u1980\u00053\u0000\u0000"+
58482 		"\u1978\u1979\u0005J\u0000\u0000\u1979\u1980\u0005\u0150\u0000\u0000\u197a"+
58483 		"\u197b\u00053\u0000\u0000\u197b\u197c\u0005s\u0000\u0000\u197c\u197d\u0005"+
58484 		"\u0181\u0000\u0000\u197d\u197e\u0005\u0173\u0000\u0000\u197e\u1980\u0005"+
58485 		"\u0182\u0000\u0000\u197f\u1974\u0001\u0000\u0000\u0000\u197f\u1975\u0001"+
58486 		"\u0000\u0000\u0000\u197f\u1977\u0001\u0000\u0000\u0000\u197f\u1978\u0001"+
58487 		"\u0000\u0000\u0000\u197f\u197a\u0001\u0000\u0000\u0000\u1980\u0373\u0001"+
58488 		"\u0000\u0000\u0000\u1981\u198b\u0005\u014c\u0000\u0000\u1982\u1983\u0005"+
58489 		"\u014e\u0000\u0000\u1983\u198b\u0005\u014f\u0000\u0000\u1984\u198b\u0005"+
58490 		"3\u0000\u0000\u1985\u1986\u0005J\u0000\u0000\u1986\u198b\u0005\u0150\u0000"+
58491 		"\u0000\u1987\u1988\u00053\u0000\u0000\u1988\u1989\u0005s\u0000\u0000\u1989"+
58492 		"\u198b\u0005\u0183\u0000\u0000\u198a\u1981\u0001\u0000\u0000\u0000\u198a"+
58493 		"\u1982\u0001\u0000\u0000\u0000\u198a\u1984\u0001\u0000\u0000\u0000\u198a"+
58494 		"\u1985\u0001\u0000\u0000\u0000\u198a\u1987\u0001\u0000\u0000\u0000\u198b"+
58495 		"\u0375\u0001\u0000\u0000\u0000\u198c\u1997\u0005\u014c\u0000\u0000\u198d"+
58496 		"\u198e\u0005\u014e\u0000\u0000\u198e\u1997\u0005\u014f\u0000\u0000\u198f"+
58497 		"\u1997\u0005\u02ad\u0000\u0000\u1990\u1997\u00053\u0000\u0000\u1991\u1992"+
58498 		"\u0005J\u0000\u0000\u1992\u1997\u0005\u0150\u0000\u0000\u1993\u1994\u0005"+
58499 		"3\u0000\u0000\u1994\u1995\u0005s\u0000\u0000\u1995\u1997\u0005\u0173\u0000"+
58500 		"\u0000\u1996\u198c\u0001\u0000\u0000\u0000\u1996\u198d\u0001\u0000\u0000"+
58501 		"\u0000\u1996\u198f\u0001\u0000\u0000\u0000\u1996\u1990\u0001\u0000\u0000"+
58502 		"\u0000\u1996\u1991\u0001\u0000\u0000\u0000\u1996\u1993\u0001\u0000\u0000"+
58503 		"\u0000\u1997\u0377\u0001\u0000\u0000\u0000\u1998\u19a9\u00053\u0000\u0000"+
58504 		"\u1999\u19a9\u0005\u0149\u0000\u0000\u199a\u199c\u0005\u014c\u0000\u0000"+
58505 		"\u199b\u199d\u0005\u0155\u0000\u0000\u199c\u199b\u0001\u0000\u0000\u0000"+
58506 		"\u199c\u199d\u0001\u0000\u0000\u0000\u199d\u19a9\u0001\u0000\u0000\u0000"+
58507 		"\u199e\u199f\u0005\u014e\u0000\u0000\u199f\u19a9\u0005\u014f\u0000\u0000"+
58508 		"\u19a0\u19a2\u0005J\u0000\u0000\u19a1\u19a3\u0005s\u0000\u0000\u19a2\u19a1"+
58509 		"\u0001\u0000\u0000\u0000\u19a2\u19a3\u0001\u0000\u0000\u0000\u19a3\u19a4"+
58510 		"\u0001\u0000\u0000\u0000\u19a4\u19a9\u0005\u0150\u0000\u0000\u19a5\u19a6"+
58511 		"\u00053\u0000\u0000\u19a6\u19a7\u0005s\u0000\u0000\u19a7\u19a9\u0005\u015f"+
58512 		"\u0000\u0000\u19a8\u1998\u0001\u0000\u0000\u0000\u19a8\u1999\u0001\u0000"+
58513 		"\u0000\u0000\u19a8\u199a\u0001\u0000\u0000\u0000\u19a8\u199e\u0001\u0000"+
58514 		"\u0000\u0000\u19a8\u19a0\u0001\u0000\u0000\u0000\u19a8\u19a5\u0001\u0000"+
58515 		"\u0000\u0000\u19a9\u0379\u0001\u0000\u0000\u0000\u19aa\u19b5\u0005\u014c"+
58516 		"\u0000\u0000\u19ab\u19ac\u0005\u014e\u0000\u0000\u19ac\u19b5\u0005\u014f"+
58517 		"\u0000\u0000\u19ad\u19b5\u00053\u0000\u0000\u19ae\u19b5\u0005\u0104\u0000"+
58518 		"\u0000\u19af\u19b0\u0005J\u0000\u0000\u19b0\u19b5\u0005\u0150\u0000\u0000"+
58519 		"\u19b1\u19b2\u00053\u0000\u0000\u19b2\u19b3\u0005s\u0000\u0000\u19b3\u19b5"+
58520 		"\u0005\u0174\u0000\u0000\u19b4\u19aa\u0001\u0000\u0000\u0000\u19b4\u19ab"+
58521 		"\u0001\u0000\u0000\u0000\u19b4\u19ad\u0001\u0000\u0000\u0000\u19b4\u19ae"+
58522 		"\u0001\u0000\u0000\u0000\u19b4\u19af\u0001\u0000\u0000\u0000\u19b4\u19b1"+
58523 		"\u0001\u0000\u0000\u0000\u19b5\u037b\u0001\u0000\u0000\u0000\u19b6\u19c2"+
58524 		"\u00053\u0000\u0000\u19b7\u19c2\u0005\u014c\u0000\u0000\u19b8\u19c2\u0005"+
58525 		"\u0104\u0000\u0000\u19b9\u19ba\u0005\u014e\u0000\u0000\u19ba\u19c2\u0005"+
58526 		"\u014f\u0000\u0000\u19bb\u19bc\u0005J\u0000\u0000\u19bc\u19c2\u0005\u0150"+
58527 		"\u0000\u0000\u19bd\u19be\u00053\u0000\u0000\u19be\u19bf\u0005s\u0000\u0000"+
58528 		"\u19bf\u19c0\u0005\u0153\u0000\u0000\u19c0\u19c2\u0005C\u0000\u0000\u19c1"+
58529 		"\u19b6\u0001\u0000\u0000\u0000\u19c1\u19b7\u0001\u0000\u0000\u0000\u19c1"+
58530 		"\u19b8\u0001\u0000\u0000\u0000\u19c1\u19b9\u0001\u0000\u0000\u0000\u19c1"+
58531 		"\u19bb\u0001\u0000\u0000\u0000\u19c1\u19bd\u0001\u0000\u0000\u0000\u19c2"+
58532 		"\u037d\u0001\u0000\u0000\u0000\u19c3\u19cf\u0005\u014c\u0000\u0000\u19c4"+
58533 		"\u19c5\u0005\u014e\u0000\u0000\u19c5\u19cf\u0005\u014f\u0000\u0000\u19c6"+
58534 		"\u19cf\u00053\u0000\u0000\u19c7\u19cf\u0005\u0104\u0000\u0000\u19c8\u19c9"+
58535 		"\u0005J\u0000\u0000\u19c9\u19cf\u0005\u0150\u0000\u0000\u19ca\u19cb\u0005"+
58536 		"3\u0000\u0000\u19cb\u19cc\u0005s\u0000\u0000\u19cc\u19cd\u0005\u0154\u0000"+
58537 		"\u0000\u19cd\u19cf\u0005C\u0000\u0000\u19ce\u19c3\u0001\u0000\u0000\u0000"+
58538 		"\u19ce\u19c4\u0001\u0000\u0000\u0000\u19ce\u19c6\u0001\u0000\u0000\u0000"+
58539 		"\u19ce\u19c7\u0001\u0000\u0000\u0000\u19ce\u19c8\u0001\u0000\u0000\u0000"+
58540 		"\u19ce\u19ca\u0001\u0000\u0000\u0000\u19cf\u037f\u0001\u0000\u0000\u0000"+
58541 		"\u19d0\u19db\u0005\u014c\u0000\u0000\u19d1\u19d2\u0005\u014e\u0000\u0000"+
58542 		"\u19d2\u19db\u0005\u014f\u0000\u0000\u19d3\u19db\u00053\u0000\u0000\u19d4"+
58543 		"\u19db\u0005\u0104\u0000\u0000\u19d5\u19d6\u0005J\u0000\u0000\u19d6\u19db"+
58544 		"\u0005\u0150\u0000\u0000\u19d7\u19d8\u00053\u0000\u0000\u19d8\u19d9\u0005"+
58545 		"s\u0000\u0000\u19d9\u19db\u0005\u0152\u0000\u0000\u19da\u19d0\u0001\u0000"+
58546 		"\u0000\u0000\u19da\u19d1\u0001\u0000\u0000\u0000\u19da\u19d3\u0001\u0000"+
58547 		"\u0000\u0000\u19da\u19d4\u0001\u0000\u0000\u0000\u19da\u19d5\u0001\u0000"+
58548 		"\u0000\u0000\u19da\u19d7\u0001\u0000\u0000\u0000\u19db\u0381\u0001\u0000"+
58549 		"\u0000\u0000\u19dc\u19ee\u00053\u0000\u0000\u19dd\u19ee\u0005\u0149\u0000"+
58550 		"\u0000\u19de\u19e0\u0005\u014c\u0000\u0000\u19df\u19e1\u0005\u0155\u0000"+
58551 		"\u0000\u19e0\u19df\u0001\u0000\u0000\u0000\u19e0\u19e1\u0001\u0000\u0000"+
58552 		"\u0000\u19e1\u19ee\u0001\u0000\u0000\u0000\u19e2\u19e3\u0005\u014e\u0000"+
58553 		"\u0000\u19e3\u19ee\u0005\u014f\u0000\u0000\u19e4\u19e6\u0005J\u0000\u0000"+
58554 		"\u19e5\u19e7\u0005s\u0000\u0000\u19e6\u19e5\u0001\u0000\u0000\u0000\u19e6"+
58555 		"\u19e7\u0001\u0000\u0000\u0000\u19e7\u19e8\u0001\u0000\u0000\u0000\u19e8"+
58556 		"\u19ee\u0005\u0150\u0000\u0000\u19e9\u19ea\u00053\u0000\u0000\u19ea\u19eb"+
58557 		"\u0005s\u0000\u0000\u19eb\u19ec\u0005\u015d\u0000\u0000\u19ec\u19ee\u0005"+
58558 		"v\u0000\u0000\u19ed\u19dc\u0001\u0000\u0000\u0000\u19ed\u19dd\u0001\u0000"+
58559 		"\u0000\u0000\u19ed\u19de\u0001\u0000\u0000\u0000\u19ed\u19e2\u0001\u0000"+
58560 		"\u0000\u0000\u19ed\u19e4\u0001\u0000\u0000\u0000\u19ed\u19e9\u0001\u0000"+
58561 		"\u0000\u0000\u19ee\u0383\u0001\u0000\u0000\u0000\u19ef\u19f2\u0003\u0386"+
58562 		"\u01c3\u0000\u19f0\u19f2\u0003\u0388\u01c4\u0000\u19f1\u19ef\u0001\u0000"+
58563 		"\u0000\u0000\u19f1\u19f0\u0001\u0000\u0000\u0000\u19f2\u0385\u0001\u0000"+
58564 		"\u0000\u0000\u19f3\u19ff\u0005\u014c\u0000\u0000\u19f4\u19f5\u0005\u014e"+
58565 		"\u0000\u0000\u19f5\u19ff\u0005\u014f\u0000\u0000\u19f6\u19ff\u00053\u0000"+
58566 		"\u0000\u19f7\u19ff\u0005\u0104\u0000\u0000\u19f8\u19f9\u0005J\u0000\u0000"+
58567 		"\u19f9\u19ff\u0005\u0150\u0000\u0000\u19fa\u19fb\u00053\u0000\u0000\u19fb"+
58568 		"\u19fc\u0005s\u0000\u0000\u19fc\u19fd\u0005\u017d\u0000\u0000\u19fd\u19ff"+
58569 		"\u0005\u014b\u0000\u0000\u19fe\u19f3\u0001\u0000\u0000\u0000\u19fe\u19f4"+
58570 		"\u0001\u0000\u0000\u0000\u19fe\u19f6\u0001\u0000\u0000\u0000\u19fe\u19f7"+
58571 		"\u0001\u0000\u0000\u0000\u19fe\u19f8\u0001\u0000\u0000\u0000\u19fe\u19fa"+
58572 		"\u0001\u0000\u0000\u0000\u19ff\u0387\u0001\u0000\u0000\u0000\u1a00\u1a0c"+
58573 		"\u00053\u0000\u0000\u1a01\u1a0c\u0005\u014c\u0000\u0000\u1a02\u1a0c\u0005"+
58574 		"\u0104\u0000\u0000\u1a03\u1a04\u0005\u014e\u0000\u0000\u1a04\u1a0c\u0005"+
58575 		"\u014f\u0000\u0000\u1a05\u1a06\u0005J\u0000\u0000\u1a06\u1a0c\u0005\u0150"+
58576 		"\u0000\u0000\u1a07\u1a08\u00053\u0000\u0000\u1a08\u1a09\u0005s\u0000\u0000"+
58577 		"\u1a09\u1a0a\u0005\u017d\u0000\u0000\u1a0a\u1a0c\u0005\u014b\u0000\u0000"+
58578 		"\u1a0b\u1a00\u0001\u0000\u0000\u0000\u1a0b\u1a01\u0001\u0000\u0000\u0000"+
58579 		"\u1a0b\u1a02\u0001\u0000\u0000\u0000\u1a0b\u1a03\u0001\u0000\u0000\u0000"+
58580 		"\u1a0b\u1a05\u0001\u0000\u0000\u0000\u1a0b\u1a07\u0001\u0000\u0000\u0000"+
58581 		"\u1a0c\u0389\u0001\u0000\u0000\u0000\u1a0d\u1a15\u0005\u014c\u0000\u0000"+
58582 		"\u1a0e\u1a15\u0005\u0146\u0000\u0000\u1a0f\u1a15\u0005\u0104\u0000\u0000"+
58583 		"\u1a10\u1a11\u0005\u014e\u0000\u0000\u1a11\u1a15\u0005\u014f\u0000\u0000"+
58584 		"\u1a12\u1a13\u0005J\u0000\u0000\u1a13\u1a15\u0005\u0150\u0000\u0000\u1a14"+
58585 		"\u1a0d\u0001\u0000\u0000\u0000\u1a14\u1a0e\u0001\u0000\u0000\u0000\u1a14"+
58586 		"\u1a0f\u0001\u0000\u0000\u0000\u1a14\u1a10\u0001\u0000\u0000\u0000\u1a14"+
58587 		"\u1a12\u0001\u0000\u0000\u0000\u1a15\u038b\u0001\u0000\u0000\u0000\u1a16"+
58588 		"\u1a1f\u00053\u0000\u0000\u1a17\u1a1f\u0005\u014c\u0000\u0000\u1a18\u1a1f"+
58589 		"\u0005\u0146\u0000\u0000\u1a19\u1a1f\u0005\u0104\u0000\u0000\u1a1a\u1a1b"+
58590 		"\u0005\u014e\u0000\u0000\u1a1b\u1a1f\u0005\u014f\u0000\u0000\u1a1c\u1a1d"+
58591 		"\u0005J\u0000\u0000\u1a1d\u1a1f\u0005\u0150\u0000\u0000\u1a1e\u1a16\u0001"+
58592 		"\u0000\u0000\u0000\u1a1e\u1a17\u0001\u0000\u0000\u0000\u1a1e\u1a18\u0001"+
58593 		"\u0000\u0000\u0000\u1a1e\u1a19\u0001\u0000\u0000\u0000\u1a1e\u1a1a\u0001"+
58594 		"\u0000\u0000\u0000\u1a1e\u1a1c\u0001\u0000\u0000\u0000\u1a1f\u038d\u0001"+
58595 		"\u0000\u0000\u0000\u1a20\u1a21\u0007b\u0000\u0000\u1a21\u038f\u0001\u0000"+
58596 		"\u0000\u0000\u1a22\u1a23\u0005\u02d2\u0000\u0000\u1a23\u1a24\u0005\u000e"+
58597 		"\u0000\u0000\u1a24\u1a25\u0005\u000e\u0000\u0000\u1a25\u0391\u0001\u0000"+
58598 		"\u0000\u0000\u1a26\u1a4f\u0005\u0152\u0000\u0000\u1a27\u1a28\u0005\u0154"+
58599 		"\u0000\u0000\u1a28\u1a4f\u0005C\u0000\u0000\u1a29\u1a2a\u0005\u015d\u0000"+
58600 		"\u0000\u1a2a\u1a4f\u0005v\u0000\u0000\u1a2b\u1a4f\u0005\u0174\u0000\u0000"+
58601 		"\u1a2c\u1a4f\u0005\u0105\u0000\u0000\u1a2d\u1a4f\u0005\u0106\u0000\u0000"+
58602 		"\u1a2e\u1a2f\u0005\u0151\u0000\u0000\u1a2f\u1a4f\u0005\u0106\u0000\u0000"+
58603 		"\u1a30\u1a31\u0005\u00cc\u0000\u0000\u1a31\u1a32\u0005\u0170\u0000\u0000"+
58604 		"\u1a32\u1a4f\u0005\u015e\u0000\u0000\u1a33\u1a4f\u0005\u015f\u0000\u0000"+
58605 		"\u1a34\u1a35\u0005\u017d\u0000\u0000\u1a35\u1a4f\u0007c\u0000\u0000\u1a36"+
58606 		"\u1a4f\u0005\u0130\u0000\u0000\u1a37\u1a4f\u00056\u0000\u0000\u1a38\u1a39"+
58607 		"\u0005\u02aa\u0000\u0000\u1a39\u1a3a\u0005\u02ab\u0000\u0000\u1a3a\u1a4f"+
58608 		"\u0005\u02ac\u0000\u0000\u1a3b\u1a4f\u0005\u012a\u0000\u0000\u1a3c\u1a3d"+
58609 		"\u0005\u0155\u0000\u0000\u1a3d\u1a4f\u0005\u0106\u0000\u0000\u1a3e\u1a4f"+
58610 		"\u0005\u0175\u0000\u0000\u1a3f\u1a40\u0005\u0180\u0000\u0000\u1a40\u1a4f"+
58611 		"\u0005\u00b0\u0000\u0000\u1a41\u1a42\u0005\u0181\u0000\u0000\u1a42\u1a43"+
58612 		"\u0005\u0173\u0000\u0000\u1a43\u1a4f\u0005\u0182\u0000\u0000\u1a44\u1a4f"+
58613 		"\u0005\u0183\u0000\u0000\u1a45\u1a4f\u0005\u0173\u0000\u0000\u1a46\u1a47"+
58614 		"\u0005\u0153\u0000\u0000\u1a47\u1a4f\u0005C\u0000\u0000\u1a48\u1a4f\u0005"+
58615 		".\u0000\u0000\u1a49\u1a4f\u0005\u0146\u0000\u0000\u1a4a\u1a4f\u0005\u00b0"+
58616 		"\u0000\u0000\u1a4b\u1a4c\u0005\u0165\u0000\u0000\u1a4c\u1a4d\u00056\u0000"+
58617 		"\u0000\u1a4d\u1a4f\u0005\u018a\u0000\u0000\u1a4e\u1a26\u0001\u0000\u0000"+
58618 		"\u0000\u1a4e\u1a27\u0001\u0000\u0000\u0000\u1a4e\u1a29\u0001\u0000\u0000"+
58619 		"\u0000\u1a4e\u1a2b\u0001\u0000\u0000\u0000\u1a4e\u1a2c\u0001\u0000\u0000"+
58620 		"\u0000\u1a4e\u1a2d\u0001\u0000\u0000\u0000\u1a4e\u1a2e\u0001\u0000\u0000"+
58621 		"\u0000\u1a4e\u1a30\u0001\u0000\u0000\u0000\u1a4e\u1a33\u0001\u0000\u0000"+
58622 		"\u0000\u1a4e\u1a34\u0001\u0000\u0000\u0000\u1a4e\u1a36\u0001\u0000\u0000"+
58623 		"\u0000\u1a4e\u1a37\u0001\u0000\u0000\u0000\u1a4e\u1a38\u0001\u0000\u0000"+
58624 		"\u0000\u1a4e\u1a3b\u0001\u0000\u0000\u0000\u1a4e\u1a3c\u0001\u0000\u0000"+
58625 		"\u0000\u1a4e\u1a3e\u0001\u0000\u0000\u0000\u1a4e\u1a3f\u0001\u0000\u0000"+
58626 		"\u0000\u1a4e\u1a41\u0001\u0000\u0000\u0000\u1a4e\u1a44\u0001\u0000\u0000"+
58627 		"\u0000\u1a4e\u1a45\u0001\u0000\u0000\u0000\u1a4e\u1a46\u0001\u0000\u0000"+
58628 		"\u0000\u1a4e\u1a48\u0001\u0000\u0000\u0000\u1a4e\u1a49\u0001\u0000\u0000"+
58629 		"\u0000\u1a4e\u1a4a\u0001\u0000\u0000\u0000\u1a4e\u1a4b\u0001\u0000\u0000"+
58630 		"\u0000\u1a4f\u0393\u0001\u0000\u0000\u0000\u1a50\u1a51\u0007d\u0000\u0000"+
58631 		"\u1a51\u0395\u0001\u0000\u0000\u0000\u1a52\u1a53\u0003\u00e8t\u0000\u1a53"+
58632 		"\u0397\u0001\u0000\u0000\u0000\u1a54\u1a5a\u0005\u02a0\u0000\u0000\u1a55"+
58633 		"\u1a58\u0003\u001c\u000e\u0000\u1a56\u1a57\u0005M\u0000\u0000\u1a57\u1a59"+
58634 		"\u0005\u02a1\u0000\u0000\u1a58\u1a56\u0001\u0000\u0000\u0000\u1a58\u1a59"+
58635 		"\u0001\u0000\u0000\u0000\u1a59\u1a5b\u0001\u0000\u0000\u0000\u1a5a\u1a55"+
58636 		"\u0001\u0000\u0000\u0000\u1a5a\u1a5b\u0001\u0000\u0000\u0000\u1a5b\u0399"+
58637 		"\u0001\u0000\u0000\u0000\u1a5c\u1a5d\u00052\u0000\u0000\u1a5d\u1a66\u0005"+
58638 		"\u0105\u0000\u0000\u1a5e\u1a67\u0003\u039c\u01ce\u0000\u1a5f\u1a67\u0003"+
58639 		"\u039e\u01cf\u0000\u1a60\u1a67\u0003\u03a0\u01d0\u0000\u1a61\u1a67\u0003"+
58640 		"\u03a2\u01d1\u0000\u1a62\u1a67\u0003\u03a8\u01d4\u0000\u1a63\u1a67\u0003"+
58641 		"\u03aa\u01d5\u0000\u1a64\u1a67\u0003\u03ac\u01d6\u0000\u1a65\u1a67\u0003"+
58642 		"\u03b2\u01d9\u0000\u1a66\u1a5e\u0001\u0000\u0000\u0000\u1a66\u1a5f\u0001"+
58643 		"\u0000\u0000\u0000\u1a66\u1a60\u0001\u0000\u0000\u0000\u1a66\u1a61\u0001"+
58644 		"\u0000\u0000\u0000\u1a66\u1a62\u0001\u0000\u0000\u0000\u1a66\u1a63\u0001"+
58645 		"\u0000\u0000\u0000\u1a66\u1a64\u0001\u0000\u0000\u0000\u1a66\u1a65\u0001"+
58646 		"\u0000\u0000\u0000\u1a66\u1a67\u0001\u0000\u0000\u0000\u1a67\u039b\u0001"+
58647 		"\u0000\u0000\u0000\u1a68\u1a6c\u0003\u03b2\u01d9\u0000\u1a69\u1a6a\u0007"+
58648 		"e\u0000\u0000\u1a6a\u1a6b\u0005\u012a\u0000\u0000\u1a6b\u1a6d\u0003*\u0015"+
58649 		"\u0000\u1a6c\u1a69\u0001\u0000\u0000\u0000\u1a6c\u1a6d\u0001\u0000\u0000"+
58650 		"\u0000\u1a6d\u1a77\u0001\u0000\u0000\u0000\u1a6e\u1a6f\u0005M\u0000\u0000"+
58651 		"\u1a6f\u1a74\u0003\u03a6\u01d3\u0000\u1a70\u1a71\u0005%\u0000\u0000\u1a71"+
58652 		"\u1a73\u0003\u03a6\u01d3\u0000\u1a72\u1a70\u0001\u0000\u0000\u0000\u1a73"+
58653 		"\u1a76\u0001\u0000\u0000\u0000\u1a74\u1a72\u0001\u0000\u0000\u0000\u1a74"+
58654 		"\u1a75\u0001\u0000\u0000\u0000\u1a75\u1a78\u0001\u0000\u0000\u0000\u1a76"+
58655 		"\u1a74\u0001\u0000\u0000\u0000\u1a77\u1a6e\u0001\u0000\u0000\u0000\u1a77"+
58656 		"\u1a78\u0001\u0000\u0000\u0000\u1a78\u039d\u0001\u0000\u0000\u0000\u1a79"+
58657 		"\u1a83\u0003\u03ae\u01d7\u0000\u1a7a\u1a7b\u0005M\u0000\u0000\u1a7b\u1a80"+
58658 		"\u0003\u03a4\u01d2\u0000\u1a7c\u1a7d\u0005%\u0000\u0000\u1a7d\u1a7f\u0003"+
58659 		"\u03a4\u01d2\u0000\u1a7e\u1a7c\u0001\u0000\u0000\u0000\u1a7f\u1a82\u0001"+
58660 		"\u0000\u0000\u0000\u1a80\u1a7e\u0001\u0000\u0000\u0000\u1a80\u1a81\u0001"+
58661 		"\u0000\u0000\u0000\u1a81\u1a84\u0001\u0000\u0000\u0000\u1a82\u1a80\u0001"+
58662 		"\u0000\u0000\u0000\u1a83\u1a7a\u0001\u0000\u0000\u0000\u1a83\u1a84\u0001"+
58663 		"\u0000\u0000\u0000\u1a84\u1a9b\u0001\u0000\u0000\u0000\u1a85\u1a86\u0003"+
58664 		"\u03b2\u01d9\u0000\u1a86\u1a87\u0005M\u0000\u0000\u1a87\u1a88\u0005\u00d5"+
58665 		"\u0000\u0000\u1a88\u1a89\u0005\u0018\u0000\u0000\u1a89\u1a93\u0003\u001c"+
58666 		"\u000e\u0000\u1a8a\u1a8b\u0005%\u0000\u0000\u1a8b\u1a90\u0003\u03a4\u01d2"+
58667 		"\u0000\u1a8c\u1a8d\u0005%\u0000\u0000\u1a8d\u1a8f\u0003\u03a4\u01d2\u0000"+
58668 		"\u1a8e\u1a8c\u0001\u0000\u0000\u0000\u1a8f\u1a92\u0001\u0000\u0000\u0000"+
58669 		"\u1a90\u1a8e\u0001\u0000\u0000\u0000\u1a90\u1a91\u0001\u0000\u0000\u0000"+
58670 		"\u1a91\u1a94\u0001\u0000\u0000\u0000\u1a92\u1a90\u0001\u0000\u0000\u0000"+
58671 		"\u1a93\u1a8a\u0001\u0000\u0000\u0000\u1a93\u1a94\u0001\u0000\u0000\u0000"+
58672 		"\u1a94\u1a9b\u0001\u0000\u0000\u0000\u1a95\u1a96\u0003\u03b0\u01d8\u0000"+
58673 		"\u1a96\u1a97\u0005U\u0000\u0000\u1a97\u1a98\u0005\u0169\u0000\u0000\u1a98"+
58674 		"\u1a99\u0005\u02a5\u0000\u0000\u1a99\u1a9b\u0001\u0000\u0000\u0000\u1a9a"+
58675 		"\u1a79\u0001\u0000\u0000\u0000\u1a9a\u1a85\u0001\u0000\u0000\u0000\u1a9a"+
58676 		"\u1a95\u0001\u0000\u0000\u0000\u1a9b\u039f\u0001\u0000\u0000\u0000\u1a9c"+
58677 		"\u1aa0\u0003\u03ae\u01d7\u0000\u1a9d\u1a9e\u0007e\u0000\u0000\u1a9e\u1a9f"+
58678 		"\u0005\u012a\u0000\u0000\u1a9f\u1aa1\u0003\u03ae\u01d7\u0000\u1aa0\u1a9d"+
58679 		"\u0001\u0000\u0000\u0000\u1aa0\u1aa1\u0001\u0000\u0000\u0000\u1aa1\u1aa8"+
58680 		"\u0001\u0000\u0000\u0000\u1aa2\u1aa3\u0003\u03b2\u01d9\u0000\u1aa3\u1aa4"+
58681 		"\u0007e\u0000\u0000\u1aa4\u1aa5\u0005\u012a\u0000\u0000\u1aa5\u1aa6\u0003"+
58682 		"\u03ae\u01d7\u0000\u1aa6\u1aa8\u0001\u0000\u0000\u0000\u1aa7\u1a9c\u0001"+
58683 		"\u0000\u0000\u0000\u1aa7\u1aa2\u0001\u0000\u0000\u0000\u1aa8\u1ab2\u0001"+
58684 		"\u0000\u0000\u0000\u1aa9\u1aaa\u0005M\u0000\u0000\u1aaa\u1aaf\u0003\u03a6"+
58685 		"\u01d3\u0000\u1aab\u1aac\u0005%\u0000\u0000\u1aac\u1aae\u0003\u03a6\u01d3"+
58686 		"\u0000\u1aad\u1aab\u0001\u0000\u0000\u0000\u1aae\u1ab1\u0001\u0000\u0000"+
58687 		"\u0000\u1aaf\u1aad\u0001\u0000\u0000\u0000\u1aaf\u1ab0\u0001\u0000\u0000"+
58688 		"\u0000\u1ab0\u1ab3\u0001\u0000\u0000\u0000\u1ab1\u1aaf\u0001\u0000\u0000"+
58689 		"\u0000\u1ab2\u1aa9\u0001\u0000\u0000\u0000\u1ab2\u1ab3\u0001\u0000\u0000"+
58690 		"\u0000\u1ab3\u03a1\u0001\u0000\u0000\u0000\u1ab4\u1ac9\u0003\u03b2\u01d9"+
58691 		"\u0000\u1ab5\u1ab6\u0005\u00d6\u0000\u0000\u1ab6\u1ac0\u0005\u012a\u0000"+
58692 		"\u0000\u1ab7\u1ab8\u0005M\u0000\u0000\u1ab8\u1abd\u0003\u03a6\u01d3\u0000"+
58693 		"\u1ab9\u1aba\u0005%\u0000\u0000\u1aba\u1abc\u0003\u03a6\u01d3\u0000\u1abb"+
58694 		"\u1ab9\u0001\u0000\u0000\u0000\u1abc\u1abf\u0001\u0000\u0000\u0000\u1abd"+
58695 		"\u1abb\u0001\u0000\u0000\u0000\u1abd\u1abe\u0001\u0000\u0000\u0000\u1abe"+
58696 		"\u1ac1\u0001\u0000\u0000\u0000\u1abf\u1abd\u0001\u0000\u0000\u0000\u1ac0"+
58697 		"\u1ab7\u0001\u0000\u0000\u0000\u1ac0\u1ac1\u0001\u0000\u0000\u0000\u1ac1"+
58698 		"\u1aca\u0001\u0000\u0000\u0000\u1ac2\u1ac3\u0007e\u0000\u0000\u1ac3\u1ac4"+
58699 		"\u0005\u0174\u0000\u0000\u1ac4\u1aca\u0003*\u0015\u0000\u1ac5\u1ac6\u0007"+
58700 		"e\u0000\u0000\u1ac6\u1ac7\u0005\u0154\u0000\u0000\u1ac7\u1ac8\u0005C\u0000"+
58701 		"\u0000\u1ac8\u1aca\u0003*\u0015\u0000\u1ac9\u1ab5\u0001\u0000\u0000\u0000"+
58702 		"\u1ac9\u1ac2\u0001\u0000\u0000\u0000\u1ac9\u1ac5\u0001\u0000\u0000\u0000"+
58703 		"\u1aca\u03a3\u0001\u0000\u0000\u0000\u1acb\u1acc\u0005\u02a2\u0000\u0000"+
58704 		"\u1acc\u1acd\u0005\u0018\u0000\u0000\u1acd\u1add\u00034\u001a\u0000\u1ace"+
58705 		"\u1acf\u0005\u0292\u0000\u0000\u1acf\u1ad2\u0005\u0018\u0000\u0000\u1ad0"+
58706 		"\u1ad3\u0005\u012f\u0000\u0000\u1ad1\u1ad3\u0003*\u0015\u0000\u1ad2\u1ad0"+
58707 		"\u0001\u0000\u0000\u0000\u1ad2\u1ad1\u0001\u0000\u0000\u0000\u1ad3\u1add"+
58708 		"\u0001\u0000\u0000\u0000\u1ad4\u1ad5\u0005\u02a6\u0000\u0000\u1ad5\u1ad6"+
58709 		"\u0005\u0018\u0000\u0000\u1ad6\u1add\u0003\u03cc\u01e6\u0000\u1ad7\u1ad8"+
58710 		"\u0005\u02a3\u0000\u0000\u1ad8\u1ada\u0005\u0018\u0000\u0000\u1ad9\u1adb"+
58711 		"\u0007\u0000\u0000\u0000\u1ada\u1ad9\u0001\u0000\u0000\u0000\u1ada\u1adb"+
58712 		"\u0001\u0000\u0000\u0000\u1adb\u1add\u0001\u0000\u0000\u0000\u1adc\u1acb"+
58713 		"\u0001\u0000\u0000\u0000\u1adc\u1ace\u0001\u0000\u0000\u0000\u1adc\u1ad4"+
58714 		"\u0001\u0000\u0000\u0000\u1adc\u1ad7\u0001\u0000\u0000\u0000\u1add\u03a5"+
58715 		"\u0001\u0000\u0000\u0000\u1ade\u1adf\u0005\u02a2\u0000\u0000\u1adf\u1ae0"+
58716 		"\u0005\u0018\u0000\u0000\u1ae0\u1aed\u00034\u001a\u0000\u1ae1\u1ae2\u0005"+
58717 		"\u0292\u0000\u0000\u1ae2\u1ae5\u0005\u0018\u0000\u0000\u1ae3\u1ae6\u0005"+
58718 		"\u012f\u0000\u0000\u1ae4\u1ae6\u0003*\u0015\u0000\u1ae5\u1ae3\u0001\u0000"+
58719 		"\u0000\u0000\u1ae5\u1ae4\u0001\u0000\u0000\u0000\u1ae6\u1aed\u0001\u0000"+
58720 		"\u0000\u0000\u1ae7\u1ae8\u0005\u02a3\u0000\u0000\u1ae8\u1aea\u0005\u0018"+
58721 		"\u0000\u0000\u1ae9\u1aeb\u0007\u0000\u0000\u0000\u1aea\u1ae9\u0001\u0000"+
58722 		"\u0000\u0000\u1aea\u1aeb\u0001\u0000\u0000\u0000\u1aeb\u1aed\u0001\u0000"+
58723 		"\u0000\u0000\u1aec\u1ade\u0001\u0000\u0000\u0000\u1aec\u1ae1\u0001\u0000"+
58724 		"\u0000\u0000\u1aec\u1ae7\u0001\u0000\u0000\u0000\u1aed\u03a7\u0001\u0000"+
58725 		"\u0000\u0000\u1aee\u1af2\u0003\u03b2\u01d9\u0000\u1aef\u1af0\u0007e\u0000"+
58726 		"\u0000\u1af0\u1af1\u0005\u012a\u0000\u0000\u1af1\u1af3\u0003*\u0015\u0000"+
58727 		"\u1af2\u1aef\u0001\u0000\u0000\u0000\u1af2\u1af3\u0001\u0000\u0000\u0000"+
58728 		"\u1af3\u1b03\u0001\u0000\u0000\u0000\u1af4\u1af5\u0005U\u0000\u0000\u1af5"+
58729 		"\u1af6\u0005\u0169\u0000\u0000\u1af6\u1b00\u0005\u02a5\u0000\u0000\u1af7"+
58730 		"\u1af8\u0005M\u0000\u0000\u1af8\u1afd\u0003\u03a6\u01d3\u0000\u1af9\u1afa"+
58731 		"\u0005%\u0000\u0000\u1afa\u1afc\u0003\u03a6\u01d3\u0000\u1afb\u1af9\u0001"+
58732 		"\u0000\u0000\u0000\u1afc\u1aff\u0001\u0000\u0000\u0000\u1afd\u1afb\u0001"+
58733 		"\u0000\u0000\u0000\u1afd\u1afe\u0001\u0000\u0000\u0000\u1afe\u1b01\u0001"+
58734 		"\u0000\u0000\u0000\u1aff\u1afd\u0001\u0000\u0000\u0000\u1b00\u1af7\u0001"+
58735 		"\u0000\u0000\u0000\u1b00\u1b01\u0001\u0000\u0000\u0000\u1b01\u1b03\u0001"+
58736 		"\u0000\u0000\u0000\u1b02\u1aee\u0001\u0000\u0000\u0000\u1b02\u1af4\u0001"+
58737 		"\u0000\u0000\u0000\u1b03\u03a9\u0001\u0000\u0000\u0000\u1b04\u1b0a\u0003"+
58738 		"\u03b2\u01d9\u0000\u1b05\u1b06\u0007e\u0000\u0000\u1b06\u1b07\u0005\u012a"+
58739 		"\u0000\u0000\u1b07\u1b0b\u0003*\u0015\u0000\u1b08\u1b09\u0005\u00d6\u0000"+
58740 		"\u0000\u1b09\u1b0b\u0005\u012a\u0000\u0000\u1b0a\u1b05\u0001\u0000\u0000"+
58741 		"\u0000\u1b0a\u1b08\u0001\u0000\u0000\u0000\u1b0a\u1b0b\u0001\u0000\u0000"+
58742 		"\u0000\u1b0b\u1b10\u0001\u0000\u0000\u0000\u1b0c\u1b0d\u0005M\u0000\u0000"+
58743 		"\u1b0d\u1b0e\u0005\u02a2\u0000\u0000\u1b0e\u1b0f\u0005\u0018\u0000\u0000"+
58744 		"\u1b0f\u1b11\u00034\u001a\u0000\u1b10\u1b0c\u0001\u0000\u0000\u0000\u1b10"+
58745 		"\u1b11\u0001\u0000\u0000\u0000\u1b11\u03ab\u0001\u0000\u0000\u0000\u1b12"+
58746 		"\u1b13\u0003\u03b0\u01d8\u0000\u1b13\u1b14\u0005U\u0000\u0000\u1b14\u1b15"+
58747 		"\u0005\u0169\u0000\u0000\u1b15\u1b1a\u0005\u02a5\u0000\u0000\u1b16\u1b17"+
58748 		"\u0005M\u0000\u0000\u1b17\u1b18\u0005\u02a2\u0000\u0000\u1b18\u1b19\u0005"+
58749 		"\u0018\u0000\u0000\u1b19\u1b1b\u00034\u001a\u0000\u1b1a\u1b16\u0001\u0000"+
58750 		"\u0000\u0000\u1b1a\u1b1b\u0001\u0000\u0000\u0000\u1b1b\u03ad\u0001\u0000"+
58751 		"\u0000\u0000\u1b1c\u1b1d\u0003\u03b2\u01d9\u0000\u1b1d\u03af\u0001\u0000"+
58752 		"\u0000\u0000\u1b1e\u1b1f\u0003\u03b2\u01d9\u0000\u1b1f\u03b1\u0001\u0000"+
58753 		"\u0000\u0000\u1b20\u1b21\u0003\u03b4\u01da\u0000\u1b21\u03b3\u0001\u0000"+
58754 		"\u0000\u0000\u1b22\u1b25\u0003*\u0015\u0000\u1b23\u1b24\u0005\u0014\u0000"+
58755 		"\u0000\u1b24\u1b26\u0003*\u0015\u0000\u1b25\u1b23\u0001\u0000\u0000\u0000"+
58756 		"\u1b25\u1b26\u0001\u0000\u0000\u0000\u1b26\u03b5\u0001\u0000\u0000\u0000"+
58757 		"\u1b27\u1b28\u00054\u0000\u0000\u1b28\u1b2a\u0005\u0105\u0000\u0000\u1b29"+
58758 		"\u1b2b\u0003\u00fa}\u0000\u1b2a\u1b29\u0001\u0000\u0000\u0000\u1b2a\u1b2b"+
58759 		"\u0001\u0000\u0000\u0000\u1b2b\u1b2c\u0001\u0000\u0000\u0000\u1b2c\u1b2d"+
58760 		"\u0003\u03b2\u01d9\u0000\u1b2d\u03b7\u0001\u0000\u0000\u0000\u1b2e\u1b2f"+
58761 		"\u00053\u0000\u0000\u1b2f\u1b30\u0005\u0105\u0000\u0000\u1b30\u1b3d\u0003"+
58762 		"\u03b2\u01d9\u0000\u1b31\u1b32\u0005M\u0000\u0000\u1b32\u1b37\u0003\u03ba"+
58763 		"\u01dd\u0000\u1b33\u1b34\u0005%\u0000\u0000\u1b34\u1b36\u0003\u03ba\u01dd"+
58764 		"\u0000\u1b35\u1b33\u0001\u0000\u0000\u0000\u1b36\u1b39\u0001\u0000\u0000"+
58765 		"\u0000\u1b37\u1b35\u0001\u0000\u0000\u0000\u1b37\u1b38\u0001\u0000\u0000"+
58766 		"\u0000\u1b38\u1b3e\u0001\u0000\u0000\u0000\u1b39\u1b37\u0001\u0000\u0000"+
58767 		"\u0000\u1b3a\u1b3b\u0005U\u0000\u0000\u1b3b\u1b3c\u0005\u0169\u0000\u0000"+
58768 		"\u1b3c\u1b3e\u0005\u02a5\u0000\u0000\u1b3d\u1b31\u0001\u0000\u0000\u0000"+
58769 		"\u1b3d\u1b3a\u0001\u0000\u0000\u0000\u1b3e\u03b9\u0001\u0000\u0000\u0000"+
58770 		"\u1b3f\u1b40\u0005\u00aa\u0000\u0000\u1b40\u1b41\u0005\u0018\u0000\u0000"+
58771 		"\u1b41\u1b5f\u0003\u03b2\u01d9\u0000\u1b42\u1b43\u0005\u02a2\u0000\u0000"+
58772 		"\u1b43\u1b46\u0005\u0018\u0000\u0000\u1b44\u1b47\u00034\u001a\u0000\u1b45"+
58773 		"\u1b47\u0005l\u0000\u0000\u1b46\u1b44\u0001\u0000\u0000\u0000\u1b46\u1b45"+
58774 		"\u0001\u0000\u0000\u0000\u1b47\u1b5f\u0001\u0000\u0000\u0000\u1b48\u1b49"+
58775 		"\u0005\u012a\u0000\u0000\u1b49\u1b4a\u0005\u0018\u0000\u0000\u1b4a\u1b5f"+
58776 		"\u0003*\u0015\u0000\u1b4b\u1b4c\u0005\u00d5\u0000\u0000\u1b4c\u1b4d\u0005"+
58777 		"\u0018\u0000\u0000\u1b4d\u1b51\u0003\u001c\u000e\u0000\u1b4e\u1b4f\u0005"+
58778 		"\u02a4\u0000\u0000\u1b4f\u1b50\u0005\u0018\u0000\u0000\u1b50\u1b52\u0003"+
58779 		"\u001c\u000e\u0000\u1b51\u1b4e\u0001\u0000\u0000\u0000\u1b51\u1b52\u0001"+
58780 		"\u0000\u0000\u0000\u1b52\u1b5f\u0001\u0000\u0000\u0000\u1b53\u1b54\u0005"+
58781 		"\u0292\u0000\u0000\u1b54\u1b57\u0005\u0018\u0000\u0000\u1b55\u1b58\u0005"+
58782 		"\u012f\u0000\u0000\u1b56\u1b58\u0003*\u0015\u0000\u1b57\u1b55\u0001\u0000"+
58783 		"\u0000\u0000\u1b57\u1b56\u0001\u0000\u0000\u0000\u1b58\u1b5f\u0001\u0000"+
58784 		"\u0000\u0000\u1b59\u1b5a\u0005\u02a3\u0000\u0000\u1b5a\u1b5c\u0005\u0018"+
58785 		"\u0000\u0000\u1b5b\u1b5d\u0007\u0000\u0000\u0000\u1b5c\u1b5b\u0001\u0000"+
58786 		"\u0000\u0000\u1b5c\u1b5d\u0001\u0000\u0000\u0000\u1b5d\u1b5f\u0001\u0000"+
58787 		"\u0000\u0000\u1b5e\u1b3f\u0001\u0000\u0000\u0000\u1b5e\u1b42\u0001\u0000"+
58788 		"\u0000\u0000\u1b5e\u1b48\u0001\u0000\u0000\u0000\u1b5e\u1b4b\u0001\u0000"+
58789 		"\u0000\u0000\u1b5e\u1b53\u0001\u0000\u0000\u0000\u1b5e\u1b59\u0001\u0000"+
58790 		"\u0000\u0000\u1b5f\u03bb\u0001\u0000\u0000\u0000\u1b60\u1b61\u00052\u0000"+
58791 		"\u0000\u1b61\u1b62\u0005\u0106\u0000\u0000\u1b62\u1b65\u0003N\'\u0000"+
58792 		"\u1b63\u1b64\u0005\u029b\u0000\u0000\u1b64\u1b66\u0003N\'\u0000\u1b65"+
58793 		"\u1b63\u0001\u0000\u0000\u0000\u1b65\u1b66\u0001\u0000\u0000\u0000\u1b66"+
58794 		"\u03bd\u0001\u0000\u0000\u0000\u1b67\u1b68\u00054\u0000\u0000\u1b68\u1b6a"+
58795 		"\u0005\u0106\u0000\u0000\u1b69\u1b6b\u0003\u00fa}\u0000\u1b6a\u1b69\u0001"+
58796 		"\u0000\u0000\u0000\u1b6a\u1b6b\u0001\u0000\u0000\u0000\u1b6b\u1b6c\u0001"+
58797 		"\u0000\u0000\u0000\u1b6c\u1b6d\u0003N\'\u0000\u1b6d\u03bf\u0001\u0000"+
58798 		"\u0000\u0000\u1b6e\u1b6f\u00053\u0000\u0000\u1b6f\u1b70\u0005\u0106\u0000"+
58799 		"\u0000\u1b70\u1b7b\u0003N\'\u0000\u1b71\u1b72\u00059\u0000\u0000\u1b72"+
58800 		"\u1b73\u0005\u02ae\u0000\u0000\u1b73\u1b7c\u0003\u0344\u01a2\u0000\u1b74"+
58801 		"\u1b75\u00054\u0000\u0000\u1b75\u1b76\u0005\u02ae\u0000\u0000\u1b76\u1b7c"+
58802 		"\u0003\u0344\u01a2\u0000\u1b77\u1b78\u0005M\u0000\u0000\u1b78\u1b79\u0005"+
58803 		"\u00aa\u0000\u0000\u1b79\u1b7a\u0005\u0018\u0000\u0000\u1b7a\u1b7c\u0003"+
58804 		"N\'\u0000\u1b7b\u1b71\u0001\u0000\u0000\u0000\u1b7b\u1b74\u0001\u0000"+
58805 		"\u0000\u0000\u1b7b\u1b77\u0001\u0000\u0000\u0000\u1b7c\u03c1\u0001\u0000"+
58806 		"\u0000\u0000\u1b7d\u1b7e\u00052\u0000\u0000\u1b7e\u1b7f\u0005\u012a\u0000"+
58807 		"\u0000\u1b7f\u1b85\u0003\u03b4\u01da\u0000\u1b80\u1b86\u0003\u03c4\u01e2"+
58808 		"\u0000\u1b81\u1b86\u0003\u03d2\u01e9\u0000\u1b82\u1b86\u0003\u03d6\u01eb"+
58809 		"\u0000\u1b83\u1b86\u0003\u03da\u01ed\u0000\u1b84\u1b86\u0003\u03de\u01ef"+
58810 		"\u0000\u1b85\u1b80\u0001\u0000\u0000\u0000\u1b85\u1b81\u0001\u0000\u0000"+
58811 		"\u0000\u1b85\u1b82\u0001\u0000\u0000\u0000\u1b85\u1b83\u0001\u0000\u0000"+
58812 		"\u0000\u1b85\u1b84\u0001\u0000\u0000\u0000\u1b86\u03c3\u0001\u0000\u0000"+
58813 		"\u0000\u1b87\u1b88\u0005M\u0000\u0000\u1b88\u1b8c\u0003\u03c6\u01e3\u0000"+
58814 		"\u1b89\u1b8a\u0005U\u0000\u0000\u1b8a\u1b8c\u0003\u03ce\u01e7\u0000\u1b8b"+
58815 		"\u1b87\u0001\u0000\u0000\u0000\u1b8b\u1b89\u0001\u0000\u0000\u0000\u1b8c"+
58816 		"\u03c5\u0001\u0000\u0000\u0000\u1b8d\u1b8e\u0005\u00d5\u0000\u0000\u1b8e"+
58817 		"\u1b93\u0005\u0018\u0000\u0000\u1b8f\u1b94\u0003\u001c\u000e\u0000\u1b90"+
58818 		"\u1b91\u0003\u03ca\u01e5\u0000\u1b91\u1b92\u0005\u02af\u0000\u0000\u1b92"+
58819 		"\u1b94\u0001\u0000\u0000\u0000\u1b93\u1b8f\u0001\u0000\u0000\u0000\u1b93"+
58820 		"\u1b90\u0001\u0000\u0000\u0000\u1b94\u1b96\u0001\u0000\u0000\u0000\u1b95"+
58821 		"\u1b97\u0005\u02b0\u0000\u0000\u1b96\u1b95\u0001\u0000\u0000\u0000\u1b96"+
58822 		"\u1b97\u0001\u0000\u0000\u0000\u1b97\u1ba1\u0001\u0000\u0000\u0000\u1b98"+
58823 		"\u1b99\u0005%\u0000\u0000\u1b99\u1b9e\u0003\u03c8\u01e4\u0000\u1b9a\u1b9b"+
58824 		"\u0005%\u0000\u0000\u1b9b\u1b9d\u0003\u03c8\u01e4\u0000\u1b9c\u1b9a\u0001"+
58825 		"\u0000\u0000\u0000\u1b9d\u1ba0\u0001\u0000\u0000\u0000\u1b9e\u1b9c\u0001"+
58826 		"\u0000\u0000\u0000\u1b9e\u1b9f\u0001\u0000\u0000\u0000\u1b9f\u1ba2\u0001"+
58827 		"\u0000\u0000\u0000\u1ba0\u1b9e\u0001\u0000\u0000\u0000\u1ba1\u1b98\u0001"+
58828 		"\u0000\u0000\u0000\u1ba1\u1ba2\u0001\u0000\u0000\u0000\u1ba2\u03c7\u0001"+
58829 		"\u0000\u0000\u0000\u1ba3\u1ba4\u0005\u02a6\u0000\u0000\u1ba4\u1ba5\u0005"+
58830 		"\u0018\u0000\u0000\u1ba5\u1bb6\u0003\u03cc\u01e6\u0000\u1ba6\u1ba7\u0005"+
58831 		"\u02b1\u0000\u0000\u1ba7\u1ba8\u0005\u0018\u0000\u0000\u1ba8\u1bb6\u0003"+
58832 		"2\u0019\u0000\u1ba9\u1baa\u0005\u0292\u0000\u0000\u1baa\u1bab\u0005\u0018"+
58833 		"\u0000\u0000\u1bab\u1bb6\u0003*\u0015\u0000\u1bac\u1bad\u0005\u02b2\u0000"+
58834 		"\u0000\u1bad\u1bae\u0005\u0018\u0000\u0000\u1bae\u1bb6\u0007\u0000\u0000"+
58835 		"\u0000\u1baf\u1bb0\u0005\u02b3\u0000\u0000\u1bb0\u1bb1\u0005\u0018\u0000"+
58836 		"\u0000\u1bb1\u1bb6\u0007\u0000\u0000\u0000\u1bb2\u1bb3\u0005\u015e\u0000"+
58837 		"\u0000\u1bb3\u1bb4\u0005\u0018\u0000\u0000\u1bb4\u1bb6\u0003*\u0015\u0000"+
58838 		"\u1bb5\u1ba3\u0001\u0000\u0000\u0000\u1bb5\u1ba6\u0001\u0000\u0000\u0000"+
58839 		"\u1bb5\u1ba9\u0001\u0000\u0000\u0000\u1bb5\u1bac\u0001\u0000\u0000\u0000"+
58840 		"\u1bb5\u1baf\u0001\u0000\u0000\u0000\u1bb5\u1bb2\u0001\u0000\u0000\u0000"+
58841 		"\u1bb6\u03c9\u0001\u0000\u0000\u0000\u1bb7\u1bb8\u0005\u02d9\u0000\u0000"+
58842 		"\u1bb8\u03cb\u0001\u0000\u0000\u0000\u1bb9\u1bba\u0007f\u0000\u0000\u1bba"+
58843 		"\u03cd\u0001\u0000\u0000\u0000\u1bbb\u1bc5\u0005\u02b4\u0000\u0000\u1bbc"+
58844 		"\u1bbd\u0005M\u0000\u0000\u1bbd\u1bc2\u0003\u03d0\u01e8\u0000\u1bbe\u1bbf"+
58845 		"\u0005%\u0000\u0000\u1bbf\u1bc1\u0003\u03d0\u01e8\u0000\u1bc0\u1bbe\u0001"+
58846 		"\u0000\u0000\u0000\u1bc1\u1bc4\u0001\u0000\u0000\u0000\u1bc2\u1bc0\u0001"+
58847 		"\u0000\u0000\u0000\u1bc2\u1bc3\u0001\u0000\u0000\u0000\u1bc3\u1bc6\u0001"+
58848 		"\u0000\u0000\u0000\u1bc4\u1bc2\u0001\u0000\u0000\u0000\u1bc5\u1bbc\u0001"+
58849 		"\u0000\u0000\u0000\u1bc5\u1bc6\u0001\u0000\u0000\u0000\u1bc6\u1bcd\u0001"+
58850 		"\u0000\u0000\u0000\u1bc7\u1bc8\u0005\u0174\u0000\u0000\u1bc8\u1bcd\u0003"+
58851 		"*\u0015\u0000\u1bc9\u1bca\u0005\u0154\u0000\u0000\u1bca\u1bcb\u0005C\u0000"+
58852 		"\u0000\u1bcb\u1bcd\u0003*\u0015\u0000\u1bcc\u1bbb\u0001\u0000\u0000\u0000"+
58853 		"\u1bcc\u1bc7\u0001\u0000\u0000\u0000\u1bcc\u1bc9\u0001\u0000\u0000\u0000"+
58854 		"\u1bcd\u03cf\u0001\u0000\u0000\u0000\u1bce\u1bcf\u0005\u02b1\u0000\u0000"+
58855 		"\u1bcf\u1bd0\u0005\u0018\u0000\u0000\u1bd0\u1bd5\u00032\u0019\u0000\u1bd1"+
58856 		"\u1bd2\u0005\u0292\u0000\u0000\u1bd2\u1bd3\u0005\u0018\u0000\u0000\u1bd3"+
58857 		"\u1bd5\u0003*\u0015\u0000\u1bd4\u1bce\u0001\u0000\u0000\u0000\u1bd4\u1bd1"+
58858 		"\u0001\u0000\u0000\u0000\u1bd5\u03d1\u0001\u0000\u0000\u0000\u1bd6\u1bd7"+
58859 		"\u0005U\u0000\u0000\u1bd7\u1bd8\u0005\u0169\u0000\u0000\u1bd8\u1be3\u0005"+
58860 		"\u02a5\u0000\u0000\u1bd9";
58861 	private static final String _serializedATNSegment3 =
58862 		"\u1bda\u0005M\u0000\u0000\u1bda\u1bdf\u0003\u03d4\u01ea\u0000\u1bdb\u1bdc"+
58863 		"\u0005%\u0000\u0000\u1bdc\u1bde\u0003\u03d4\u01ea\u0000\u1bdd\u1bdb\u0001"+
58864 		"\u0000\u0000\u0000\u1bde\u1be1\u0001\u0000\u0000\u0000\u1bdf\u1bdd\u0001"+
58865 		"\u0000\u0000\u0000\u1bdf\u1be0\u0001\u0000\u0000\u0000\u1be0\u1be3\u0001"+
58866 		"\u0000\u0000\u0000\u1be1\u1bdf\u0001\u0000\u0000\u0000\u1be2\u1bd6\u0001"+
58867 		"\u0000\u0000\u0000\u1be2\u1bd9\u0001\u0000\u0000\u0000\u1be3\u03d3\u0001"+
58868 		"\u0000\u0000\u0000\u1be4\u1be5\u0005\u00d5\u0000\u0000\u1be5\u1be6\u0005"+
58869 		"\u0018\u0000\u0000\u1be6\u1beb\u0003\u001c\u000e\u0000\u1be7\u1be8\u0005"+
58870 		"%\u0000\u0000\u1be8\u1be9\u0005\u02a6\u0000\u0000\u1be9\u1bea\u0005\u0018"+
58871 		"\u0000\u0000\u1bea\u1bec\u0003\u03cc\u01e6\u0000\u1beb\u1be7\u0001\u0000"+
58872 		"\u0000\u0000\u1beb\u1bec\u0001\u0000\u0000\u0000\u1bec\u03d5\u0001\u0000"+
58873 		"\u0000\u0000\u1bed\u1bee\u0005U\u0000\u0000\u1bee\u1bef\u0005\u0169\u0000"+
58874 		"\u0000\u1bef\u1bf1\u0005\u02a5\u0000\u0000\u1bf0\u1bed\u0001\u0000\u0000"+
58875 		"\u0000\u1bf0\u1bf1\u0001\u0000\u0000\u0000\u1bf1\u1bf2\u0001\u0000\u0000"+
58876 		"\u0000\u1bf2\u1bf3\u0005M\u0000\u0000\u1bf3\u1bf8\u0003\u03d8\u01ec\u0000"+
58877 		"\u1bf4\u1bf5\u0005%\u0000\u0000\u1bf5\u1bf7\u0003\u03d8\u01ec\u0000\u1bf6"+
58878 		"\u1bf4\u0001\u0000\u0000\u0000\u1bf7\u1bfa\u0001\u0000\u0000\u0000\u1bf8"+
58879 		"\u1bf6\u0001\u0000\u0000\u0000\u1bf8\u1bf9\u0001\u0000\u0000\u0000\u1bf9"+
58880 		"\u03d7\u0001\u0000\u0000\u0000\u1bfa\u1bf8\u0001\u0000\u0000\u0000\u1bfb"+
58881 		"\u1bfc\u0005\u00d5\u0000\u0000\u1bfc\u1bfd\u0005\u0018\u0000\u0000\u1bfd"+
58882 		"\u1c08\u0003\u001c\u000e\u0000\u1bfe\u1bff\u0005\u02a6\u0000\u0000\u1bff"+
58883 		"\u1c00\u0005\u0018\u0000\u0000\u1c00\u1c08\u0003\u03cc\u01e6\u0000\u1c01"+
58884 		"\u1c02\u0005\u02b1\u0000\u0000\u1c02\u1c03\u0005\u0018\u0000\u0000\u1c03"+
58885 		"\u1c08\u00032\u0019\u0000\u1c04\u1c05\u0005\u0292\u0000\u0000\u1c05\u1c06"+
58886 		"\u0005\u0018\u0000\u0000\u1c06\u1c08\u0003*\u0015\u0000\u1c07\u1bfb\u0001"+
58887 		"\u0000\u0000\u0000\u1c07\u1bfe\u0001\u0000\u0000\u0000\u1c07\u1c01\u0001"+
58888 		"\u0000\u0000\u0000\u1c07\u1c04\u0001\u0000\u0000\u0000\u1c08\u03d9\u0001"+
58889 		"\u0000\u0000\u0000\u1c09\u1c0a\u0005M\u0000\u0000\u1c0a\u1c0b\u0003\u03dc"+
58890 		"\u01ee\u0000\u1c0b\u03db\u0001\u0000\u0000\u0000\u1c0c\u1c0d\u0005\u00d5"+
58891 		"\u0000\u0000\u1c0d\u1c0e\u0005\u0018\u0000\u0000\u1c0e\u1c13\u0003\u001c"+
58892 		"\u000e\u0000\u1c0f\u1c10\u0005%\u0000\u0000\u1c10\u1c11\u0005\u02a6\u0000"+
58893 		"\u0000\u1c11\u1c12\u0005\u0018\u0000\u0000\u1c12\u1c14\u0003\u03cc\u01e6"+
58894 		"\u0000\u1c13\u1c0f\u0001\u0000\u0000\u0000\u1c13\u1c14\u0001\u0000\u0000"+
58895 		"\u0000\u1c14\u03dd\u0001\u0000\u0000\u0000\u1c15\u1c16\u0005M\u0000\u0000"+
58896 		"\u1c16\u1c1a\u0003\u03e0\u01f0\u0000\u1c17\u1c18\u0005U\u0000\u0000\u1c18"+
58897 		"\u1c1a\u0005\u02b4\u0000\u0000\u1c19\u1c15\u0001\u0000\u0000\u0000\u1c19"+
58898 		"\u1c17\u0001\u0000\u0000\u0000\u1c1a\u03df\u0001\u0000\u0000\u0000\u1c1b"+
58899 		"\u1c1c\u0005\u00d5\u0000\u0000\u1c1c\u1c1d\u0005\u0018\u0000\u0000\u1c1d"+
58900 		"\u1c1f\u0003\u001c\u000e\u0000\u1c1e\u1c20\u0005\u02b0\u0000\u0000\u1c1f"+
58901 		"\u1c1e\u0001\u0000\u0000\u0000\u1c1f\u1c20\u0001\u0000\u0000\u0000\u1c20"+
58902 		"\u1c2a\u0001\u0000\u0000\u0000\u1c21\u1c22\u0005%\u0000\u0000\u1c22\u1c27"+
58903 		"\u0003\u03e2\u01f1\u0000\u1c23\u1c24\u0005%\u0000\u0000\u1c24\u1c26\u0003"+
58904 		"\u03e2\u01f1\u0000\u1c25\u1c23\u0001\u0000\u0000\u0000\u1c26\u1c29\u0001"+
58905 		"\u0000\u0000\u0000\u1c27\u1c25\u0001\u0000\u0000\u0000\u1c27\u1c28\u0001"+
58906 		"\u0000\u0000\u0000\u1c28\u1c2b\u0001\u0000\u0000\u0000\u1c29\u1c27\u0001"+
58907 		"\u0000\u0000\u0000\u1c2a\u1c21\u0001\u0000\u0000\u0000\u1c2a\u1c2b\u0001"+
58908 		"\u0000\u0000\u0000\u1c2b\u03e1\u0001\u0000\u0000\u0000\u1c2c\u1c2d\u0005"+
58909 		"\u02b2\u0000\u0000\u1c2d\u1c2e\u0005\u0018\u0000\u0000\u1c2e\u1c33\u0007"+
58910 		"\u0000\u0000\u0000\u1c2f\u1c30\u0005\u02b3\u0000\u0000\u1c30\u1c31\u0005"+
58911 		"\u0018\u0000\u0000\u1c31\u1c33\u0007\u0000\u0000\u0000\u1c32\u1c2c\u0001"+
58912 		"\u0000\u0000\u0000\u1c32\u1c2f\u0001\u0000\u0000\u0000\u1c33\u03e3\u0001"+
58913 		"\u0000\u0000\u0000\u1c34\u1c35\u00054\u0000\u0000\u1c35\u1c36\u0005\u012a"+
58914 		"\u0000\u0000\u1c36\u1c37\u0003\u03b4\u01da\u0000\u1c37\u03e5\u0001\u0000"+
58915 		"\u0000\u0000\u1c38\u1c39\u00053\u0000\u0000\u1c39\u1c3a\u0005\u012a\u0000"+
58916 		"\u0000\u1c3a\u1c46\u0003\u03b4\u01da\u0000\u1c3b\u1c47\u0003\u03e8\u01f4"+
58917 		"\u0000\u1c3c\u1c3d\u0005M\u0000\u0000\u1c3d\u1c42\u0003\u03ea\u01f5\u0000"+
58918 		"\u1c3e\u1c3f\u0005%\u0000\u0000\u1c3f\u1c41\u0003\u03ea\u01f5\u0000\u1c40"+
58919 		"\u1c3e\u0001\u0000\u0000\u0000\u1c41\u1c44\u0001\u0000\u0000\u0000\u1c42"+
58920 		"\u1c40\u0001\u0000\u0000\u0000\u1c42\u1c43\u0001\u0000\u0000\u0000\u1c43"+
58921 		"\u1c47\u0001\u0000\u0000\u0000\u1c44\u1c42\u0001\u0000\u0000\u0000\u1c45"+
58922 		"\u1c47\u0003\u03ee\u01f7\u0000\u1c46\u1c3b\u0001\u0000\u0000\u0000\u1c46"+
58923 		"\u1c3c\u0001\u0000\u0000\u0000\u1c46\u1c45\u0001\u0000\u0000\u0000\u1c47"+
58924 		"\u03e7\u0001\u0000\u0000\u0000\u1c48\u1c49\u0007/\u0000\u0000\u1c49\u03e9"+
58925 		"\u0001\u0000\u0000\u0000\u1c4a\u1c4b\u0005\u00d5\u0000\u0000\u1c4b\u1c50"+
58926 		"\u0005\u0018\u0000\u0000\u1c4c\u1c51\u0003\u001c\u000e\u0000\u1c4d\u1c4e"+
58927 		"\u0003\u03ca\u01e5\u0000\u1c4e\u1c4f\u0005\u02af\u0000\u0000\u1c4f\u1c51"+
58928 		"\u0001\u0000\u0000\u0000\u1c50\u1c4c\u0001\u0000\u0000\u0000\u1c50\u1c4d"+
58929 		"\u0001\u0000\u0000\u0000\u1c51\u1c59\u0001\u0000\u0000\u0000\u1c52\u1c53"+
58930 		"\u0005\u02a4\u0000\u0000\u1c53\u1c54\u0005\u0018\u0000\u0000\u1c54\u1c5a"+
58931 		"\u0003\u001c\u000e\u0000\u1c55\u1c57\u0003\u03ec\u01f6\u0000\u1c56\u1c58"+
58932 		"\u0003\u03ec\u01f6\u0000\u1c57\u1c56\u0001\u0000\u0000\u0000\u1c57\u1c58"+
58933 		"\u0001\u0000\u0000\u0000\u1c58\u1c5a\u0001\u0000\u0000\u0000\u1c59\u1c52"+
58934 		"\u0001\u0000\u0000\u0000\u1c59\u1c55\u0001\u0000\u0000\u0000\u1c59\u1c5a"+
58935 		"\u0001\u0000\u0000\u0000\u1c5a\u1c70\u0001\u0000\u0000\u0000\u1c5b\u1c5c"+
58936 		"\u0005\u02b1\u0000\u0000\u1c5c\u1c5d\u0005\u0018\u0000\u0000\u1c5d\u1c70"+
58937 		"\u00032\u0019\u0000\u1c5e\u1c5f\u0005\u0292\u0000\u0000\u1c5f\u1c60\u0005"+
58938 		"\u0018\u0000\u0000\u1c60\u1c70\u0003*\u0015\u0000\u1c61\u1c62\u0005\u00aa"+
58939 		"\u0000\u0000\u1c62\u1c63\u0005\u0018\u0000\u0000\u1c63\u1c70\u0003\u03b4"+
58940 		"\u01da\u0000\u1c64\u1c65\u0005\u02b3\u0000\u0000\u1c65\u1c66\u0005\u0018"+
58941 		"\u0000\u0000\u1c66\u1c70\u0007\u0000\u0000\u0000\u1c67\u1c68\u0005\u02b2"+
58942 		"\u0000\u0000\u1c68\u1c69\u0005\u0018\u0000\u0000\u1c69\u1c70\u0007\u0000"+
58943 		"\u0000\u0000\u1c6a\u1c6b\u0005\u015e\u0000\u0000\u1c6b\u1c6c\u0005\u0018"+
58944 		"\u0000\u0000\u1c6c\u1c70\u0003*\u0015\u0000\u1c6d\u1c6e\u0005\u0101\u0000"+
58945 		"\u0000\u1c6e\u1c70\u0005\u015e\u0000\u0000\u1c6f\u1c4a\u0001\u0000\u0000"+
58946 		"\u0000\u1c6f\u1c5b\u0001\u0000\u0000\u0000\u1c6f\u1c5e\u0001\u0000\u0000"+
58947 		"\u0000\u1c6f\u1c61\u0001\u0000\u0000\u0000\u1c6f\u1c64\u0001\u0000\u0000"+
58948 		"\u0000\u1c6f\u1c67\u0001\u0000\u0000\u0000\u1c6f\u1c6a\u0001\u0000\u0000"+
58949 		"\u0000\u1c6f\u1c6d\u0001\u0000\u0000\u0000\u1c70\u03eb\u0001\u0000\u0000"+
58950 		"\u0000\u1c71\u1c72\u0007g\u0000\u0000\u1c72\u03ed\u0001\u0000\u0000\u0000"+
58951 		"\u1c73\u1c74\u00059\u0000\u0000\u1c74\u1c75\u0005\u015e\u0000\u0000\u1c75"+
58952 		"\u1c7a\u0003*\u0015\u0000\u1c76\u1c77\u00054\u0000\u0000\u1c77\u1c78\u0005"+
58953 		"\u015e\u0000\u0000\u1c78\u1c7a\u0003*\u0015\u0000\u1c79\u1c73\u0001\u0000"+
58954 		"\u0000\u0000\u1c79\u1c76\u0001\u0000\u0000\u0000\u1c7a\u03ef\u0001\u0000"+
58955 		"\u0000\u0000\u1c7b\u1c80\u0005\u02b6\u0000\u0000\u1c7c\u1c7d\u0005M\u0000"+
58956 		"\u0000\u1c7d\u1c7e\u0005\u02b7\u0000\u0000\u1c7e\u1c7f\u0005\u0018\u0000"+
58957 		"\u0000\u1c7f\u1c81\u0003\u00ecv\u0000\u1c80\u1c7c\u0001\u0000\u0000\u0000"+
58958 		"\u1c80\u1c81\u0001\u0000\u0000\u0000\u1c81\u03f1\u0001\u0000\u0000\u0000"+
58959 		"\u0353\u042d\u0430\u0440\u044c\u0452\u0454\u0456\u045d\u0463\u0465\u046d"+
58960 		"\u0471\u0479\u047d\u0483\u048e\u0493\u049e\u04aa\u04ae\u04bb\u04c2\u04c7"+
58961 		"\u04cc\u04d3\u04da\u04e1\u04e4\u04e7\u04ee\u04f9\u04fe\u0502\u0513\u051e"+
58962 		"\u0524\u052b\u052f\u053a\u0540\u0542\u0547\u0554\u0562\u0564\u056d\u057a"+
58963 		"\u0589\u058b\u0592\u0599\u05a2\u05a9\u05b2\u05b8\u05bb\u05de\u05e0\u05ee"+
58964 		"\u05f2\u05fa\u0600\u060d\u0614\u061a\u061e\u0625\u062b\u0630\u0637\u063b"+
58965 		"\u064b\u0656\u0663\u0669\u0679\u067f\u0688\u068c\u068e\u0699\u069d\u06ab"+
58966 		"\u06b4\u06b9\u06c2\u06c6\u06cf\u06d7\u06db\u06e8\u06ed\u06f9\u06fe\u0707"+
58967 		"\u070b\u0712\u0719\u071d\u0722\u0725\u0735\u073e\u074a\u074c\u0751\u0755"+
58968 		"\u0758\u075d\u0766\u076b\u0773\u077f\u0788\u078e\u0795\u079f\u07a2\u07a5"+
58969 		"\u07b0\u07b8\u07c1\u07c9\u07d1\u07d5\u07e2\u07e4\u07ed\u0802\u0807\u0813"+
58970 		"\u0820\u0829\u0836\u084b\u0854\u0858\u0871\u087b\u0885\u088e\u089c\u08a4"+
58971 		"\u08aa\u08b2\u08bd\u08c4\u08ce\u08d3\u08f4\u08fd\u0900\u0907\u090e\u0915"+
58972 		"\u091e\u0925\u092b\u0932\u0938\u093f\u0945\u094c\u0952\u0959\u0960\u0962"+
58973 		"\u0967\u096e\u0978\u0984\u098b\u098f\u0991\u0994\u0998\u099b\u09a1\u09a6"+
58974 		"\u09b1\u09b5\u09b7\u09ba\u09bf\u09ce\u09d2\u09de\u09e3\u09ec\u09f3\u09f8"+
58975 		"\u0a07\u0a11\u0a1c\u0a1f\u0a2b\u0a2f\u0a41\u0a46\u0a4a\u0a4f\u0a53\u0a5a"+
58976 		"\u0a5f\u0a67\u0a70\u0a74\u0a78\u0a7b\u0a7e\u0a81\u0a8f\u0a94\u0a99\u0aab"+
58977 		"\u0aad\u0ab8\u0ac0\u0ac5\u0ace\u0ad5\u0adb\u0ae4\u0ae7\u0aea\u0aed\u0af6"+
58978 		"\u0afe\u0b07\u0b0e\u0b11\u0b19\u0b1b\u0b1e\u0b28\u0b2d\u0b32\u0b36\u0b39"+
58979 		"\u0b3d\u0b40\u0b45\u0b4d\u0b56\u0b5e\u0b61\u0b64\u0b67\u0b6d\u0b71\u0b79"+
58980 		"\u0b8f\u0b91\u0b96\u0b98\u0b9f\u0ba1\u0ba5\u0bad\u0bbb\u0bc4\u0bd3\u0bd9"+
58981 		"\u0bdd\u0be4\u0bf8\u0c01\u0c04\u0c1a\u0c1c\u0c27\u0c37\u0c3c\u0c40\u0c45"+
58982 		"\u0c4c\u0c56\u0c5d\u0c60\u0c6b\u0c6f\u0c74\u0c7a\u0c7f\u0c82\u0c8d\u0c96"+
58983 		"\u0c9a\u0ca9\u0cb0\u0cbc\u0cbf\u0cc3\u0cc7\u0cd0\u0cd3\u0cd6\u0cdd\u0ce2"+
58984 		"\u0ceb\u0cff\u0d01\u0d07\u0d0e\u0d13\u0d1a\u0d1e\u0d24\u0d2a\u0d2f\u0d35"+
58985 		"\u0d3c\u0d42\u0d4b\u0d52\u0d54\u0d5a\u0d5d\u0d60\u0d65\u0d6c\u0d75\u0d7a"+
58986 		"\u0d83\u0d85\u0d8a\u0d93\u0d95\u0d98\u0daa\u0dac\u0db6\u0dbd\u0dc0\u0dc4"+
58987 		"\u0dcc\u0dcf\u0dd3\u0dda\u0de1\u0dec\u0e08\u0e10\u0e22\u0e24\u0e2b\u0e2e"+
58988 		"\u0e30\u0e37\u0e39\u0e3e\u0e45\u0e4a\u0e4d\u0e51\u0e5a\u0e5d\u0e65\u0e69"+
58989 		"\u0e6d\u0e72\u0e77\u0e7b\u0e86\u0e8d\u0e93\u0e97\u0e9b\u0ea3\u0ea5\u0ea8"+
58990 		"\u0eaf\u0eb4\u0ebd\u0ec2\u0eca\u0ed1\u0ed9\u0ee2\u0eee\u0efe\u0f01\u0f03"+
58991 		"\u0f06\u0f09\u0f0c\u0f0f\u0f21\u0f26\u0f2b\u0f30\u0f33\u0f37\u0f3f\u0f4b"+
58992 		"\u0f4e\u0f51\u0f60\u0f63\u0f66\u0f6a\u0f6e\u0f78\u0f7b\u0f7e\u0f89\u0f8e"+
58993 		"\u0f94\u0f98\u0f9b\u0fa6\u0fa9\u0fae\u0fb0\u0fbc\u0fbf\u0fc6\u0fc9\u0fcd"+
58994 		"\u0fd1\u0fd4\u0fd7\u0fdb\u0fe6\u0fe9\u0ff0\u0ff3\u0ff7\u0ffe\u1003\u100e"+
58995 		"\u1013\u1015\u1022\u102d\u1035\u1038\u103c\u1042\u104c\u1056\u105b\u1067"+
58996 		"\u106d\u1070\u1073\u1076\u1079\u107c\u107f\u1083\u1088\u108f\u1096\u10a3"+
58997 		"\u10af\u10b5\u10be\u10c1\u10c5\u10c9\u10d2\u10d7\u10e0\u10e2\u10e7\u10e9"+
58998 		"\u10f0\u10fb\u1104\u110b\u110d\u1116\u111b\u1122\u1129\u113b\u1140\u1144"+
58999 		"\u115f\u1162\u116b\u1184\u1187\u1189\u118e\u1196\u11ab\u11ad\u11b6\u11b9"+
59000 		"\u11c8\u11cd\u11d6\u11ea\u11ed\u11f1\u11fd\u11ff\u120c\u120e\u1218\u1245"+
59001 		"\u124b\u1254\u1263\u1267\u1270\u1276\u1280\u1289\u1294\u12a0\u12a2\u12aa"+
59002 		"\u12b8\u12c0\u12c5\u12c7\u12d0\u12d6\u12eb\u12f2\u12fa\u12ff\u1301\u132a"+
59003 		"\u132f\u133e\u1346\u135d\u1366\u136e\u1379\u137e\u1386\u1391\u139c\u13a5"+
59004 		"\u13ac\u13b0\u13b6\u13cb\u13d9\u13dc\u13e7\u13ec\u13ef\u13f3\u13f6\u13fa"+
59005 		"\u13fd\u1400\u1406\u1409\u140c\u1412\u1415\u141d\u1421\u1424\u1429\u142e"+
59006 		"\u1434\u143f\u1442\u1445\u1449\u144d\u1451\u1454\u1457\u145b\u145f\u1469"+
59007 		"\u146d\u1475\u147d\u1481\u1484\u1488\u148c\u148f\u1492\u1495\u149b\u149e"+
59008 		"\u14a2\u14a5\u14a8\u14b3\u14b7\u14bc\u14c0\u14c8\u14cc\u14d1\u14d5\u14d9"+
59009 		"\u14dd\u14e1\u14e4\u14e6\u14e9\u14ec\u14ef\u14f2\u14f5\u14fc\u14fe\u1504"+
59010 		"\u150c\u1510\u1514\u1517\u151a\u151c\u1520\u1524\u1527\u152b\u1535\u1538"+
59011 		"\u153a\u153e\u1550\u1557\u155c\u155f\u1563\u1567\u156b\u156e\u1574\u1577"+
59012 		"\u157a\u1580\u1583\u1587\u158c\u1592\u1594\u159a\u15a6\u15bb\u15c8\u15cd"+
59013 		"\u15d5\u15da\u15dc\u15e0\u15e5\u15e9\u15ee\u15f1\u15f7\u15fa\u1629\u162b"+
59014 		"\u1641\u1648\u1680\u1686\u168e\u1691\u169b\u169d\u169f\u16a4\u16a6\u16a8"+
59015 		"\u16ae\u16b0\u16b7\u16bd\u16bf\u16c1\u16c3\u16c8\u16cc\u16d4\u16d6\u16e0"+
59016 		"\u16e2\u16e6\u16ea\u16ec\u16f1\u16f3\u16f6\u16ff\u1709\u1715\u171a\u1722"+
59017 		"\u1728\u172c\u1731\u1739\u173f\u1743\u1748\u174c\u1753\u175c\u1763\u176a"+
59018 		"\u1772\u1776\u177b\u1783\u1787\u178b\u1790\u1798\u179c\u17a1\u17a6\u17ae"+
59019 		"\u17b2\u17b6\u17bb\u17c3\u17c7\u17cf\u17e4\u17f6\u1801\u1816\u1830\u1845"+
59020 		"\u1849\u184e\u1857\u1859\u186b\u187f\u188a\u189d\u18a1\u18a9\u18ad\u18b8"+
59021 		"\u18d4\u18da\u18f7\u18fe\u1902\u1907\u1911\u191c\u1926\u192f\u1945\u1952"+
59022 		"\u1959\u1965\u1972\u197f\u198a\u1996\u199c\u19a2\u19a8\u19b4\u19c1\u19ce"+
59023 		"\u19da\u19e0\u19e6\u19ed\u19f1\u19fe\u1a0b\u1a14\u1a1e\u1a4e\u1a58\u1a5a"+
59024 		"\u1a66\u1a6c\u1a74\u1a77\u1a80\u1a83\u1a90\u1a93\u1a9a\u1aa0\u1aa7\u1aaf"+
59025 		"\u1ab2\u1abd\u1ac0\u1ac9\u1ad2\u1ada\u1adc\u1ae5\u1aea\u1aec\u1af2\u1afd"+
59026 		"\u1b00\u1b02\u1b0a\u1b10\u1b1a\u1b25\u1b2a\u1b37\u1b3d\u1b46\u1b51\u1b57"+
59027 		"\u1b5c\u1b5e\u1b65\u1b6a\u1b7b\u1b85\u1b8b\u1b93\u1b96\u1b9e\u1ba1\u1bb5"+
59028 		"\u1bc2\u1bc5\u1bcc\u1bd4\u1bdf\u1be2\u1beb\u1bf0\u1bf8\u1c07\u1c13\u1c19"+
59029 		"\u1c1f\u1c27\u1c2a\u1c32\u1c42\u1c46\u1c50\u1c57\u1c59\u1c6f\u1c79\u1c80";
59030 	public static final String _serializedATN = Utils.join(
59031 		new String[] {
59032 			_serializedATNSegment0,
59033 			_serializedATNSegment1,
59034 			_serializedATNSegment2,
59035 			_serializedATNSegment3
59036 		},
59037 		""
59038 	);
59039 	public static final ATN _ATN =
59040 		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
59041 	static {
59042 		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
59043 		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
59044 			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
59045 		}
59046 	}
59047 }